CompressionStream and DecompressionStream are globals from the
Compression Streams Standard. They take a format: gzip, deflate
(zlib-wrapped), deflate-raw, brotli, or zstd.
Example
js
// compression.mjs
const input = new Blob(["elide ".repeat(100)]);
const compressed = await new Response(input.stream().pipeThrough(new CompressionStream("gzip"))).arrayBuffer();
console.log(input.size, "->", compressed.byteLength);
const restored = new Blob([compressed]).stream().pipeThrough(new DecompressionStream("gzip"));
console.log((await new Response(restored).text()).length);
utf-8 · js · Lines: 7
elide run compression.mjs prints:
text
600 -> 35
600
utf-8 · text · Lines: 2
Differences from browsers
brotliandzstdare Elide additions.- Formats are case-sensitive; an unknown format throws
TypeError. - Chunks must be
BufferSourcevalues. - Malformed or truncated input rejects, as does decompressed output past a size limit.
For Buffer and callback APIs, see node:zlib.
Samples
Reference
Status: Full · Not measured · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
CompressionStream | class | Full | readable, writable |
DecompressionStream | class | Full | readable, writable |