This package provides a powerful and efficient TypeScript library for optimizing CSS strings. It enables developers to easily compress css JavaScript projects.
The great focus is on keeping a great compatibility across all kind of render engine especially on the various Outlook.
Go here to the online and interactive playground
- Node.js: Officially supports Node 22, 24, and 26.
- Module Resolution: Full support for
NodeNextand ESM/CommonJS environments.
- Group rules: Group same rules with one selector.
- Compress: Compress the size by removing not necessary char.
- Merge selector: Merge same selector into only one.
- Media Query: Move all media queries at the bottom.
npm install @gafreax/csscrunch// ESM
import csscrunch from '@gafreax/csscrunch'
const { default: compile } = csscrunch
const cssString = '.example { color: red; font-size: 16px; }';
const parsedCSS = compile(cssString);// CommonJS
const csscrunch = require('@gafreax/csscrunch')
const { default: compile } = csscrunch
const cssString = '.example { color: red; font-size: 16px; }';
const parsedCSS = compile(cssString);To enable the optimization pass a Optimizations object (file: src/lib/optimization.d.ts) to the instance:
interface Optimizations {
paddingShortHand?: boolean
marginShortHand?: boolean
removeZeroUnits?: boolean
}Quickly clean up your Css:
To optimize your CSS file, simply run the following command in your terminal:
$ npm start -- compile input.css optimized.cssOr via npx
$ npx @gafreax/csscrunch compile input.css optimized.cssOr via global install
$ npm install -g @gafreaxa/csscrunch
$ csscrunch compile input.css optimized.cssYou can also use the flags:
--optimize-short-hand to optimize padding and margin short hand
--optimize-margin to optimize margin short hand
--optimize-padding to optimize padding short hand
--remove-zero-units to remove zero units
--optimize-all to enable all optimizations
Example:
$ npx @gafreax/csscrunch compile --optimize-all input.css optimized.cssCSS Crunch is built for speed and efficiency. It significantly outperforms traditional tools in both execution time and optimization size.
We provide a dedicated benchmark comparison against clean-css, demonstrating CSS Crunch's superior throughput and compression capabilities.
To run the performance comparison script:
tsx benchmark/comparison.tsFor detailed visual reports on throughput and size, check out our documentation site.
To run the standard suite of internal benchmarks:
pnpm run test:benchWe welcome contributions to this open-source project. If you encounter issues or have suggestions for improvement, please feel free to create GitHub issues or submit pull requests.