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.