NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2918 most downloaded on npm
A port of the Brotli compression algorithm as used in WOFF2
Last release today
11 Oct 2026
Release timing varies
gaps range from 2 months to 5.1 years
Rarely documented
notes for 2 of 10 stable releases
1 version withdrawn
withdrawn after publishing
12 years old
11 releases · first in 2014
Use the nullish coalescing (??) operator to check if the value is defined
Breaking: Converted the package to ESM only. All public entry points use named compress and/or decompress exports with no default export.
compress and/or decompress exports with no default export.compress() now returns Promise<Uint8Array | null> and must
be awaited. Compression options, output bytes, and null results are unchanged.
decompress() remains synchronous.brotli/compress, and
brotli/decompress, including .js aliases for both standalone modules.
Standalone modules export their named function.require() through every
public entry point. Unflagged ESM loading is supported in Node 20.19+, 22.12+,
and later releases; see the Node documentation.
The distribution remains ESM only..js aliases and the CompressOptions type.import { compress, decompress } from 'brotli';
const compressed = await compress(input);
const original = decompress(compressed);
To load either function independently:
import { compress } from 'brotli/compress';
import { decompress } from 'brotli/decompress';
Modern Node.js CommonJS consumers can destructure named exports from the root or standalone modules:
const { compress, decompress } = require('brotli');
// Alternatively: const { compress } = require('brotli/compress');
compress(input).then(compressed => {
const original = decompress(compressed);
}).catch(console.error);
Older Node.js CommonJS consumers can continue to use dynamic import().
One column per quarter.
This project publishes no release notes. Between v1.3.2 and v1.3.3 there were 3 commits, 1 of them substantive:
This project publishes no release notes. Between v1.3.2 and v1.3.3 there were 3 commits, 1 of them substantive:
This project publishes no release notes. Between v1.3.1 and v1.3.2 there were 3 commits, 1 of them substantive:
This project publishes no release notes. Between v1.3.1 and v1.3.2 there were 3 commits, 1 of them substantive:
This project publishes no release notes. Between v1.3.0 and v1.3.1 there were 3 commits, 1 of them substantive:
This project publishes no release notes. Between v1.3.0 and v1.3.1 there were 3 commits, 1 of them substantive:
This project publishes no release notes. Between v1.2.0 and v1.3.0 there were 14 commits, 10 of them substantive:
This project publishes no release notes. Between v1.2.0 and v1.3.0 there were 14 commits, 10 of them substantive:
This project publishes no release notes. Between v1.1.0 and v1.2.0 there were 17 commits, 15 of them substantive:
This project publishes no release notes. Between v1.1.0 and v1.2.0 there were 17 commits, 15 of them substantive:
This project publishes no release notes. Between v1.0.2 and v1.1.0 there were 5 commits, 4 of them substantive:
This project publishes no release notes. Between v1.0.2 and v1.1.0 there were 5 commits, 4 of them substantive:
This project publishes no release notes. Between v1.0.1 and v1.0.2 there were 3 commits, 2 of them substantive:
This project publishes no release notes. Between v1.0.1 and v1.0.2 there were 3 commits, 2 of them substantive:
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →