On this page

Iterable Compression

History
Source Code: lib/zlib/iter.js
Stability: 1Experimental

The node:zlib/iter module provides compression and decompression transforms for use with the node:stream/iter iterable streams API.

This module is available only when the --experimental-stream-iter CLI flag is enabled.

Each algorithm has both an async variant (stateful async generator, for use with pull() and pipeTo()) and a sync variant (stateful sync generator, for use with pullSync() and pipeToSync()).

The async transforms run compression on the libuv threadpool, overlapping I/O with JavaScript execution. The sync transforms run compression directly on the main thread.

Note: The defaults for these transforms are tuned for streaming throughput, and differ from the defaults in node:zlib. In particular, gzip/deflate default to level 4 (not 6) and memLevel 9 (not 8), and Brotli defaults to quality 6 (not 11). These choices match common HTTP server configurations and provide significantly faster compression with only a small reduction in compression ratio. All defaults can be overridden via options.

import { from, pull, bytes, text } from 'node:stream/iter';
import { compressGzip, decompressGzip } from 'node:zlib/iter';

// Async round-trip
const compressed = await bytes(pull(from('hello'), compressGzip()));
const original = await text(pull(from(compressed), decompressGzip()));
console.log(original); // 'hello'
compressBrotli(options?): void
M

compressBrotliSync

History
compressBrotliSync(options?): Object
Attributes
options:<Object>
chunkSize?:<number>
Output buffer size.  Default: 65536 (64 KB).
params:<Object>
Key-value object where keys and values are  zlib.constants entries. The most important compressor parameters are:
BROTLI_PARAM_MODE:
BROTLI_MODE_GENERIC (default), BROTLI_MODE_TEXT , or BROTLI_MODE_FONT .
BROTLI_PARAM_QUALITY?:
ranges from BROTLI_MIN_QUALITY to BROTLI_MAX_QUALITY . Default: 6 (not BROTLI_DEFAULT_QUALITY which is 11). Quality 6 is appropriate for streaming; quality 11 is intended for offline/build-time compression.
BROTLI_PARAM_SIZE_HINT?:
expected input size. Default: 0 (unknown).
BROTLI_PARAM_LGWIN?:
window size (log2). Default: 20 (1 MB). The Brotli library default is 22 (4 MB); the reduced default saves memory without significant compression impact for streaming workloads.
BROTLI_PARAM_LGBLOCK:
input block size (log2). See the Brotli compressor options in the zlib documentation for the full list.
Returns:<Object>
A stateful transform.

Create a Brotli compression transform. Output is compatible with zlib.brotliDecompress() and decompressBrotli()/decompressBrotliSync().

compressDeflate(options?): void
M

compressDeflateSync

History
compressDeflateSync(options?): Object
Attributes
options:<Object>
chunkSize?:<number>
Output buffer size.  Default: 65536 (64 KB).
level?:<number>
Compression level ( 0 - 9 ). Default: 4 .
windowBits?:<number>
Default: Z_DEFAULT_WINDOWBITS (15).
memLevel?:<number>
Default: 9 .
strategy?:<number>
Default: Z_DEFAULT_STRATEGY .
Returns:<Object>
A stateful transform.

Create a deflate compression transform. Output is compatible with zlib.inflate() and decompressDeflate()/decompressDeflateSync().

compressGzip(options?): void
M

compressGzipSync

History
compressGzipSync(options?): Object
Attributes
options:<Object>
chunkSize?:<number>
Output buffer size.  Default: 65536 (64 KB).
level?:<number>
Compression level ( 0 - 9 ). Default: 4 .
windowBits?:<number>
Default: Z_DEFAULT_WINDOWBITS (15).
memLevel?:<number>
Default: 9 .
strategy?:<number>
Default: Z_DEFAULT_STRATEGY .
Returns:<Object>
A stateful transform.

Create a gzip compression transform. Output is compatible with zlib.gunzip() and decompressGzip()/decompressGzipSync().

compressZstd(options?): void
M

compressZstdSync

History
compressZstdSync(options?): Object
Attributes
options:<Object>
chunkSize?:<number>
Output buffer size.  Default: 65536 (64 KB).
params:<Object>
Key-value object where keys and values are  zlib.constants entries. The most important compressor parameters are:
ZSTD_c_compressionLevel?:
Default: ZSTD_CLEVEL_DEFAULT (3).
ZSTD_c_checksumFlag?:
generate a checksum. Default: 0 .
ZSTD_c_strategy:
compression strategy. Values include ZSTD_fast , ZSTD_dfast , ZSTD_greedy , ZSTD_lazy , ZSTD_lazy2 , ZSTD_btlazy2 , ZSTD_btopt , ZSTD_btultra , ZSTD_btultra2 . See the Zstd compressor options in the zlib documentation for the full list.
pledgedSrcSize:<number>
Expected uncompressed size (optional hint).
Returns:<Object>
A stateful transform.

Create a Zstandard compression transform. Output is compatible with zlib.zstdDecompress() and decompressZstd()/decompressZstdSync().

decompressBrotli(options?): void
M

decompressBrotliSync

History
decompressBrotliSync(options?): Object
Attributes
options:<Object>
chunkSize?:<number>
Output buffer size.  Default: 65536 (64 KB).
params:<Object>
Key-value object where keys and values are  zlib.constants entries. Available decompressor parameters:
BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:
boolean flag affecting internal memory allocation.
BROTLI_DECODER_PARAM_LARGE_WINDOW:
boolean flag enabling "Large Window Brotli" mode (not compatible with RFC 7932 ). See the Brotli decompressor options in the zlib documentation for details.
Returns:<Object>
A stateful transform.

Create a Brotli decompression transform.

decompressDeflate(options?): void
M

decompressDeflateSync

History
decompressDeflateSync(options?): Object
Attributes
options:<Object>
chunkSize?:<number>
Output buffer size.  Default: 65536 (64 KB).
windowBits?:<number>
Default: Z_DEFAULT_WINDOWBITS (15).
Returns:<Object>
A stateful transform.

Create a deflate decompression transform.

decompressGzip(options?): void
M

decompressGzipSync

History
decompressGzipSync(options?): Object
Attributes
options:<Object>
chunkSize?:<number>
Output buffer size.  Default: 65536 (64 KB).
windowBits?:<number>
Default: Z_DEFAULT_WINDOWBITS (15).
Returns:<Object>
A stateful transform.

Create a gzip decompression transform.

decompressZstd(options?): void
M

decompressZstdSync

History
decompressZstdSync(options?): Object
Attributes
options:<Object>
chunkSize?:<number>
Output buffer size.  Default: 65536 (64 KB).
params:<Object>
Key-value object where keys and values are  zlib.constants entries. Available decompressor parameters:
ZSTD_d_windowLogMax:
maximum window size (log2) the decompressor will allocate. Limits memory usage against malicious input. See the Zstd decompressor options in the zlib documentation for details.
Returns:<Object>
A stateful transform.

Create a Zstandard decompression transform.