htmlnano
Modular HTML minifier, built on top of the PostHTML. Inspired by cssnano.
Documentation
Usage
npm install htmlnano
const htmlnano = require('htmlnano');
const options = {
removeEmptyAttributes: false, // Disable the module "removeEmptyAttributes"
collapseWhitespace: 'conservative' // Pass options to the module "collapseWhitespace"
};
// posthtml, posthtml-render, and posthtml-parse options
const postHtmlOptions = {
sync: true, // https://github.com/posthtml/posthtml#usage
lowerCaseTags: true, // https://github.com/posthtml/posthtml-parser#options
quoteAllAttributes: false, // https://github.com/posthtml/posthtml-render#options
};
htmlnano
// "preset" arg might be skipped (see "Presets" section below for more info)
// "postHtmlOptions" arg might be skipped
.process(html, options, preset, postHtmlOptions)
.then(function (result) {
// result.html is minified
})
.catch(function (err) {
console.error(err);
});
Also, you can use it as CLI tool:
node_modules/.bin/htmlnano --help
# STDIN -> STDOUT
cat test.html | node_modules/.bin/htmlnano > test.min.html
# Single file
node_modules/.bin/htmlnano test.html -o test.min.html
# Multiple files / globs (quote globs so htmlnano expands them itself)
node_modules/.bin/htmlnano "dist/**/*.html" --output-dir minified
node_modules/.bin/htmlnano "dist/**/*.html" --in-place
More usage examples (PostHTML, CLI, Webpack): https://htmlnano.netlify.app/usage
Benchmarks
Updated: 2026-11-13
| Website | Source (KB) | html-minifier-terser | html-minifier-next | htmlnano | minify | minify-html | swc-html |
|---|---|---|---|---|---|---|---|
| alistapart.com | 65 | 13.9% | 25.2% | 38.1% | 10.1% | 11.3% | 10.7% |
| developer.mozilla.org | 119 | 44.4% | 43.0% | 47.9% | 41.2% | 41.2% | 41.2% |
| css-tricks.com | 183 | 41.5% | 19.6% | 25.6% | 11.1% | 11.3% | 12.7% |
| mastodon.social | 45 | 22.7% | 14.4% | 14.0% | 5.7% | 6.9% | 7.9% |
| en.wikipedia.org | 259 | 11.3% | 12.6% | 12.7% | 5.8% | 6.1% | 6.0% |
| lafrenchtech.gouv.fr | 186 | 32.5% | 70.1% | 70.1% | 29.9% | 30.6% | 30.7% |
| stackoverflow.blog | 135 | 28.8% | 7.9% | 7.6% | 4.6% | 5.0% | 5.5% |
| edri.org | 85 | 24.6% | 34.7% | 33.8% | 11.3% | 10.6% | 11.7% |
| eff.org | 54 | 18.1% | 19.5% | 18.3% | 13.4% | 12.3% | 13.0% |
| w3.org | 48 | 28.7% | 28.7% | 28.3% | 23.7% | 23.6% | 23.6% |
| html.spec.whatwg.org | 152 | 1.6% | 0.4% | 0.4% | 0.3% | 0.3% | 0.3% |
| un.org | 161 | 23.6% | 45.4% | 44.9% | 19.2% | 16.9% | 16.7% |
| apple.com | 250 | 19.7% | 11.8% | 10.8% | 7.6% | 6.7% | 6.5% |
| home.cern | 292 | N/A | 23.8% | 26.3% | 8.1% | 9.8% | 10.2% |
| weather.com | 455 | 14.2% | 9.7% | 9.0% | 7.2% | 7.0% | 7.1% |
| github.com | 513 | 32.2% | 18.1% | 18.0% | 4.8% | 4.3% | 4.4% |
| leanpub.com | 523 | 16.7% | 9.0% | 9.5% | 5.0% | 5.4% | 5.5% |
| bbc.co.uk | 684 | 7.8% | 8.2% | 8.2% | 4.7% | 6.4% | 6.5% |
| faz.net | 1353 | 7.7% | 13.3% | 18.1% | 4.3% | 4.6% | 9.2% |
| tc39.es | 7637 | 9.1% | 7.9% | 7.3% | 6.5% | 6.0% | 6.1% |
| Avg. minify rate | 21.0% | 21.0% | 22.2% | 11.4% | 11.4% | 11.9% |
Latest benchmarks: https://github.com/maltsev/html-minifiers-benchmark (updated daily).