
“Post” means after
Post is a Latin prefix meaning after, as in “postscript” or “postgraduate”. In front-end tooling it describes when a tool does its work in the CSS lifecycle:
- A preprocessor works before CSS exists. You write Sass, Less or Stylus, and it compiles to CSS.
- A postprocessor works after CSS exists. It takes valid CSS and improves it, for example by adding vendor prefixes or minifying.
Important: “post” is not part of the CSS language. There is no post property, selector or keyword in CSS. When people say “post CSS”, they mean either this tooling concept or the tool named PostCSS.
What preprocessing looks like
A preprocessor defines its own syntax. This Sass code is not valid CSS until it is compiled:
$brand: #155EEF;
@mixin card {
border-radius: 12px;
padding: 24px;
}
.panel {
@include card;
color: $brand;
}The output is ordinary CSS with the variable and mixin replaced. The browser never sees $brand.
What postprocessing looks like
A postprocessor starts from CSS the browser could already read. Autoprefixer is the classic example:
.panel {
user-select: none;
}.panel {
-webkit-user-select: none;
user-select: none;
}The input was already valid. The tool added a prefix for browsers in your targets that still need it. Other postprocessing jobs include minifying, merging media queries, inlining small images and checking style rules.
Side by side
| Preprocessing | Postprocessing | |
|---|---|---|
| Input | Custom syntax (SCSS, Less, Stylus) | Standard CSS |
| When it runs | Before CSS exists | After CSS is written |
| Typical jobs | Variables, mixins, loops, functions | Prefixes, minification, linting, fallbacks |
| Examples | Sass, Less, Stylus | Autoprefixer, cssnano, Stylelint |
Where PostCSS fits
PostCSS was named in 2013 when “postprocessor” was the popular term for tools like Autoprefixer. But PostCSS is a platform, and plugins decide what it does:
- Post-style plugins: Autoprefixer, cssnano, Stylelint.
- Pre-style plugins: postcss-nested and postcss-mixins add syntax that browsers did not traditionally understand.
- Future-CSS plugins: postcss-preset-env lets you write upcoming standard features and converts them to what your targets support.
Because one tool can now handle both sides, the PostCSS team prefers the plain word processor. The “post” in the name is history, not a limit.
Can you use a preprocessor and PostCSS together?
Yes, and many projects do. A common pipeline is:
- Sass compiles
.scssto CSS. - PostCSS runs Autoprefixer on that CSS.
- PostCSS runs cssnano to minify for production.
In webpack this means sass-loader runs first, then postcss-loader, then css-loader. Loaders are listed bottom to top; see the postcss-loader guide.
Native CSS is closing the gap
Modern browsers now support features that once required a preprocessor, such as custom properties (--brand: #155EEF) and native nesting. That shifts the balance: many projects need less preprocessing and use PostCSS mainly for fallbacks and optimisation. Whether you still need prefixes or fallbacks depends on your Browserslist targets.
Other places you might see “post” near CSS
- “Post” in WordPress themes: classes like
.postor.post-titleare ordinary class names for blog posts, unrelated to tooling. - HTTP POST: a request method for sending form data, unrelated to stylesheets.
- “After” in CSS itself: if you want content after an element, CSS uses the
::afterpseudo-element, not “post”.
Summary
“Post” in CSS tooling means work done after CSS is written. PostCSS took its name from that idea, but its plugins now cover preprocessing, postprocessing and future CSS. To learn the mechanics, read how PostCSS works.
Get PostCSS 8.5.32
Free, MIT licensed, downloaded from the official GitHub repository.


