zlib
The zlib
module provides compression and decompression utilities using formats like gzip, deflate, and brotli. Supports both streaming and buffer-based APIs.
API Surface
Compression Streams
zlib.createGzip()
,zlib.createGunzip()
zlib.createDeflate()
,zlib.createInflate()
zlib.createBrotliCompress()
,zlib.createBrotliDecompress()
These return transform streams usable with pipeline.
Utility Functions
zlib.gzip(buf, cb)
,zlib.gunzip(buf, cb)
zlib.deflate(buf, cb)
,zlib.inflate(buf, cb)
zlib.brotliCompress(buf, cb)
,zlib.brotliDecompress(buf, cb)
Synchronous variants exist: gzipSync
, deflateSync
, etc.
Options
- Compression level, strategy, windowBits, etc. configurable.
Examples (English only)
const fs = require("fs");
const zlib = require("zlib");
const { pipeline } = require("stream");
// Compress a file with gzip
pipeline(
fs.createReadStream("input.txt"),
zlib.createGzip(),
fs.createWriteStream("input.txt.gz"),
(err) => {
if (err) console.error("Compression failed:", err);
else console.log("File compressed");
}
);
// Decompress gzip
pipeline(
fs.createReadStream("input.txt.gz"),
zlib.createGunzip(),
fs.createWriteStream("output.txt"),
(err) => {
if (err) console.error("Decompression failed:", err);
else console.log("File decompressed");
}
);
Notes
- Use streams for large files to avoid memory pressure.
- Brotli usually offers better compression ratio but may be slower.
- Always handle pipeline errors to avoid partial files.
- Synchronous methods block the event loop — use only for small buffers.