Latest release 8.5.32 · MIT license

PostCSS – Powerful CSS Processing for Modern Web Development

PostCSS is a tool for transforming CSS with JavaScript plugins. It reads your stylesheet, turns it into a tree that code can inspect, lets each plugin make one focused change, and then writes clean CSS back out. That one idea powers Autoprefixer, Stylelint, cssnano, CSS Modules and the PostCSS integration of Tailwind CSS. You choose the plugins, so the same core can add vendor prefixes, lint your code, compile future CSS syntax or minify output for production.

Illustration, not a screenshot. The exact output depends on your plugins and Browserslist targets.
Features

The periodic table of PostCSS

PostCSS does very little on its own. Its power comes from a small, stable core and a plugin API that hundreds of tools are built on. These nine elements explain what you actually get.

01Pl

Plugin architecture

The core parses and prints CSS. Everything else is a plugin: a small JavaScript function that receives the stylesheet and changes it. You stack plugins in the order you need, add only what your project uses and drop what it does not. Plugins can run on the whole file once or react to specific node types such as Declaration or AtRule.

02As

AST you can edit

CSS becomes a tree of Root, Rule, AtRule, Declaration and Comment nodes with walk, clone and replace methods.

03Ap

Autoprefixer

Adds the vendor prefixes your Browserslist targets still need, using Can I Use data. You write standard CSS.

04Fc

Future CSS today

postcss-preset-env converts modern CSS features into code that older browsers in your targets understand.

05Li

Linting with Stylelint

Stylelint is built on PostCSS and catches errors and inconsistent style rules before they ship.

06Mn

Minification

cssnano runs as a plugin to remove whitespace, merge rules and shorten values for production.

07Sm

Source maps

The map option produces maps and carries previous maps forward, so DevTools point to your original files.

08Sx

Custom syntaxes

Swap the parser with postcss-scss, postcss-less or SugarSS to process files that are not plain CSS.

09Bt

Works with your build tool

postcss-loader for webpack, built-in support in Vite, postcss-cli, gulp-postcss or the JS API, all sharing one config.

Download

Download PostCSS 8.5.32

Get the latest tagged release straight from the official GitHub repository, or install it into your project with npm. Both give you the same MIT-licensed code.

v8.5.32Released October 26, 2026
$ npm install --save-dev postcss

Source: github.com/postcss/postcss/releases. The buttons download the archive directly; this site does not host or modify the file.

Software information

Software
PostCSS
Version
8.5.32
Release date
October 26, 2026
Developer
Andrey Sitnik and contributors
Publisher
Evil Martians
License
MIT (free and open source)
Operating system
Windows, macOS, Linux (via Node.js)
Architecture
Any (pure JavaScript, no native code)
Node.js
^10 || ^12 || >=14
Packages
npm package, source .zip, source .tar.gz
npm size
About 216 KB unpacked
Dependencies
nanoid, picocolors, source-map-js

Information checked on November 9, 2026. The release date is when version 8.5.32 was published to npm; the check date is when we last confirmed these details.

How to download

Five steps from button to verified file

The download button saves the official source archive of the 8.5.32 tag from GitHub. Here is how to choose the right package and confirm you have the genuine release.

  1. Check requirements

    Make sure Node.js and npm are installed. PostCSS itself accepts Node.js 10, 12 or 14+, but a current LTS release is recommended for its tooling.

  2. Pick a package

    Choose npm for project use. Choose the .zip (Windows-friendly) or .tar.gz (macOS/Linux-friendly) archive if you want the tagged source code.

  3. Use the official source

    Every button here points to the official postcss/postcss repository on GitHub. Clicking it downloads the archive directly. No new tab opens.

  4. Save and extract

    Save the archive in a project or downloads folder, then extract it. It contains source code, tests and docs, not an installer.

  5. Verify the release

    Compare the version with the GitHub releases page and the npm registry. For npm installs, the lockfile records integrity hashes automatically.

What the button actually does: it requests postcss-8.5.32.zip from GitHub's archive service for the official repository. Your browser saves it and you stay on this page. Keep your antivirus and browser protections on; a source archive of JavaScript files does not need them disabled.

What PostCSS does

One parser, endless CSS workflows

PostCSS was created by Andrey Sitnik, the author of Autoprefixer, and first published to npm in November 2013. Learn more about this site on the About page.

PostCSS sits between the CSS you write and the CSS the browser receives. It does not invent a new language. Instead it gives JavaScript a reliable way to read and change stylesheets, and lets the community publish those changes as reusable plugins.

It is meant for front-end developers, design-system maintainers, framework authors and anyone running a build step for CSS. The main benefits are control and focus: each plugin does one job, the config file shows exactly what happens to your styles, and you can replace a plugin without touching the rest of the pipeline.

  1. Ship cross-browser CSS without manual prefixes

    A team writes standard properties and lets Autoprefixer add -webkit- and other prefixes only for the browsers listed in Browserslist.

  2. Use modern syntax with a safety net

    A project uses CSS nesting and newer color functions, while postcss-preset-env adds fallbacks for older targets.

  3. Enforce a design system

    Maintainers run Stylelint in CI and write a small custom plugin that warns when someone uses a raw hex color instead of a token.

Installation and first use

From empty folder to processed CSS

PostCSS has no setup wizard and needs no administrator rights. It installs per project with npm and runs from the command line or your bundler.

  1. Install Node.js

    Install a current Node.js LTS release, which includes npm. Check with node -v.

  2. Create a project

    Run npm init -y in a new folder to create package.json.

  3. Add PostCSS and plugins

    Install the core, the CLI and a first plugin as dev dependencies. postcss-cli 12 needs Node.js 22+.

  4. Write the config

    Create postcss.config.js and list your plugins. Order matters: plugins run top to bottom.

  5. Run the build

    Process a file with npx postcss, or add the command to an npm script. Bundlers pick up the same config automatically.

Terminal
# 1. project + dependencies
npm init -y
npm install --save-dev postcss postcss-cli autoprefixer
postcss.config.js
module.exports = {
  plugins: [
    require('autoprefixer')
  ]
}
Terminal
# 2. process a stylesheet
npx postcss src/style.css -o dist/style.css
# watch mode while you work
npx postcss src/style.css -o dist/style.css --watch
Compatibility

System requirements and support

PostCSS is a Node.js library, so its requirements are Node.js requirements. The table separates what is documented from what we could not confirm.

Sources: postcss, postcss-loader and postcss-cli package.json files on npm, checked November 9, 2026.
EnvironmentRequirementStatus
Windows, macOS, LinuxAny system with a supported Node.js; x64 and ARM both work because there is no native codeSupported
Node.js (core package)^10 || ^12 || >=14Supported
postcss-cli 12Node.js 22 or newerStricter
postcss-loader 8webpack 5 and Node.js 18.12+; use postcss-loader v4 for webpack 4Supported
ViteApplies your PostCSS config automaticallySupported
Tailwind CSS v4Via the @tailwindcss/postcss pluginSupported
Bun and Deno runtimesNot listed in the package's engines fieldUnconfirmed
Android and iOS appsPostCSS is a build tool, not a mobile appNot applicable
Pros and cons

An honest balance sheet

Strengths

  • Pay only for what you useA lean core plus the plugins you choose keeps builds focused.
  • Standard CSS stays standardMost plugins work on real CSS, so code stays portable if you change tools.
  • Huge ecosystemAutoprefixer, Stylelint, cssnano and postcss-preset-env all build on it.
  • Supported everywherewebpack, Vite, Parcel, gulp and a CLI can all run the same config.
  • Permissive licenseMIT allows commercial use with minimal obligations.

Limitations

  • Plugin quality variesCommunity plugins differ in maintenance; some are abandoned.
  • Order-sensitive pipelinesPutting plugins in the wrong order can produce surprising output.
  • Needs a JavaScript toolchainProjects without Node.js have to add one just for CSS.
  • Speed depends on pluginsRust-based tools like Lightning CSS can be faster for prefixing and minifying.
  • Not a languageThere are no built-in variables or mixins; you need plugins or native CSS features.
Comparison

PostCSS vs Sass, Less and Lightning CSS

These tools overlap but are not identical. Versions and licenses were checked on npm on November 9, 2026.

"Unconfirmed" means we could not verify the capability from official documentation.
CriteriaPostCSSSassLessLightning CSS
What it isPlugin-based CSS processorStylesheet language (preprocessor)Stylesheet language (preprocessor)CSS parser, transformer and minifier
Written inJavaScriptDart (also published to npm)JavaScriptRust (Node bindings)
LicenseMITMITApache-2.0MPL-2.0
Latest on npm8.5.321.108.14.9.11.33.0
Vendor prefixesVia Autoprefixer pluginNot built inNot built inBuilt in (browser targets)
MinificationVia cssnano pluginCompressed output styleUnconfirmedBuilt in
Extending itAny JavaScript pluginModules and custom functionsPluginsVisitor API for custom transforms
Best fitCustom pipelines and toolingAuthoring with mixins and logicExisting Less codebasesFast prefix and minify step
Troubleshooting

Common problems and how to fix them

Error

"This plugin requires PostCSS 8"

Cause: a modern plugin is running inside an old runner that bundles PostCSS 7.

Fix: update the runner (postcss-loader, postcss-cli, gulp-postcss) and install postcss 8 directly in your project.

Config

Config file is ignored

Cause: wrong file name, wrong folder, or ESM syntax in a CommonJS file.

Fix: place postcss.config.js in the project root; use .mjs for export default or .cjs for module.exports.

Tailwind

Tailwind v4 refuses to run as a plugin

Cause: Tailwind v4 moved its PostCSS plugin into a separate package.

Fix: install @tailwindcss/postcss and use it in your config instead of tailwindcss.

Output

Prefixes are missing

Cause: your Browserslist targets only modern browsers that need no prefixes.

Fix: run npx browserslist to see the targets, then adjust .browserslistrc or the browserslist key.

Order

Nesting or minify output looks wrong

Cause: plugins run in the order they are listed.

Fix: put syntax plugins (imports, nesting) first, Autoprefixer after them, and cssnano last.

Audit

npm audit reports a PostCSS vulnerability

Cause: an old nested copy below 8.4.31 is still in your dependency tree.

Fix: run npm ls postcss, update the parent package, or use npm overrides as a last resort.

Update deliberately

Read the official release notes before bumping plugin majors.

Commit the lockfile

package-lock.json pins exact versions and integrity hashes for every machine.

Keep config small

Remove plugins your targets no longer need; fewer plugins mean faster builds.

Editorial perspectives

How different teams get value from PostCSS

Editorial use case · Solo developer

Small site, zero prefixes by hand

A freelancer building marketing sites adds Autoprefixer and cssnano through Vite's built-in PostCSS support. There is no extra loader to configure, and the same config travels from project to project. The main gain is time: no checking which properties still need a prefix.

Editorial use case · Design-system team

Rules enforced in CI

A team runs Stylelint on every pull request and adds a tiny plugin that flags raw colors instead of tokens. Reviews focus on design, not formatting.

Editorial use case · Tool author

A parser they did not have to write

A developer building a CSS analysis tool uses the PostCSS AST and source positions instead of maintaining a parser. Error messages can point to exact lines.

These are illustrative scenarios written by our editors, not quotes from real users. We do not publish ratings or invented reviews.

FAQ

Questions about PostCSS

Answers about downloading, licensing, compatibility, configuration and security. For deeper explanations, browse the PostCSS guides.

Is PostCSS free to download and use?

Yes. PostCSS is open-source software released under the MIT license, so you can use it in personal, commercial and client projects at no cost. Most plugins are also open source, but each has its own license, so check the plugins you add.

What is the latest version of PostCSS?

The latest release we verified is PostCSS 8.5.32, published on October 26, 2026. We checked the npm registry and the GitHub tags on November 9, 2026. Run npm view postcss version to see the newest version at any time.

Should I use the ZIP download or npm?

For real projects, install PostCSS with npm (npm install --save-dev postcss). npm adds the three runtime dependencies and keeps versions in your lockfile. The ZIP and tar.gz files on this page are the tagged source code from GitHub, which is useful for reading the code, auditing a release or keeping an offline copy.

Does PostCSS work on Windows, macOS and Linux?

Yes. PostCSS is pure JavaScript and runs anywhere Node.js runs, including Windows, macOS and Linux. There is no native binary and no separate installer per operating system.

Which Node.js version does PostCSS need?

The package.json of PostCSS 8.5.32 declares ^10 || ^12 || >=14. Tools around it can need more: postcss-cli 12 requires Node.js 22 or newer, and postcss-loader 8 requires Node.js 18.12 or newer. A current Node.js LTS release avoids most problems.

Is PostCSS a replacement for Sass?

Not exactly. Sass is a stylesheet language with its own syntax. PostCSS is a processor that runs plugins over CSS. Many teams use both: Sass for authoring and PostCSS for Autoprefixer and minification. Others drop Sass and use PostCSS plugins for nesting and modern syntax.

How do I configure PostCSS?

Create a postcss.config.js (or .cjs, .mjs, .ts, a .postcssrc file, or a postcss key in package.json) that lists your plugins. Most runners discover it automatically. Our PostCSS config guide covers every format.

How do I use PostCSS with Tailwind CSS?

Tailwind CSS v4 ships its PostCSS integration as a separate package, @tailwindcss/postcss. Install it, add it to your PostCSS config, and import Tailwind in your CSS with @import "tailwindcss";. See the PostCSS Tailwind guide.

Is there a known PostCSS vulnerability?

The best-known advisory is CVE-2023-44270, a medium-severity line-return parsing issue that affected versions before 8.4.31. It mainly affected tools that parse untrusted CSS, such as linters. Version 8.5.32 already includes the fix. Read the vulnerability guide for the details.

Does the download button open a new tab or another website?

No. The button links directly to the source archive that GitHub hosts for the 8.5.32 tag. Your browser saves the file and you stay on this page. Nothing is installed automatically.

Where do I report bugs or get help?

Report bugs in PostCSS itself on the official GitHub issue tracker. Report plugin problems to that plugin's own repository. This website is independent and cannot provide official support.

Automate your CSS with PostCSS 8.5.32

Write standard CSS, let plugins handle prefixes, modern syntax and minification, and keep your whole pipeline in one readable config file.

Version 8.5.32MIT licenseWindows · macOS · LinuxOfficial GitHub source