zlib
The node:zlib module provides compression functionality implemented using Gzip, Deflate/Inflate, and Brotli.
To access it:
import zlib from 'node:zlib';
Compression and decompression are built around the Node.js Streams API.
Compressing or decompressing a stream (such as a file) can be accomplished by piping the source stream through a zlib Transform stream into a destination stream:
import { createGzip } from 'node:zlib';
import { pipeline } from 'node:stream';
import {
createReadStream,
createWriteStream,
} from 'node:fs';
const gzip = createGzip();
const source = createReadStream('input.txt');
const destination = createWriteStream('input.txt.gz');
pipeline(source, gzip, destination, (err) => {
if (err) {
console.error('An error occurred:', err);
process.exitCode = 1;
}
});
// Or, Promisified
import { promisify } from 'node:util';
const pipe = promisify(pipeline);
async function do_gzip(input, output) {
const gzip = createGzip();
const source = createReadStream(input);
const destination = createWriteStream(output);
await pipe(source, gzip, destination);
}
do_gzip('input.txt', 'input.txt.gz')
.catch((err) => {
console.error('An error occurred:', err);
process.exitCode = 1;
});
It is also possible to compress or decompress data in a single step:
import { deflate, unzip } from 'node:zlib';
const input = '.................................';
deflate(input, (err, buffer) => {
if (err) {
console.error('An error occurred:', err);
process.exitCode = 1;
}
console.log(buffer.toString('base64'));
});
const buffer = Buffer.from('eJzT0yMAAGTvBe8=', 'base64');
unzip(buffer, (err, buffer) => {
if (err) {
console.error('An error occurred:', err);
process.exitCode = 1;
}
console.log(buffer.toString());
});
// Or, Promisified
import { promisify } from 'node:util';
const do_unzip = promisify(unzip);
do_unzip(buffer)
.then((buf) => console.log(buf.toString()))
.catch((err) => {
console.error('An error occurred:', err);
process.exitCode = 1;
});
Usage in Deno
import * as mod from "node:zlib";
function brotliCompress
Usage in Deno
import { brotliCompress } from "node:zlib";
Overload 1
brotliCompress(): voidParameters
Return Type
void Overload 2
brotliCompress(
buf: InputType,
callback: CompressCallback,
): voidParameters
buf: InputType callback: CompressCallback Return Type
void function brotliCompressSync
Usage in Deno
import { brotliCompressSync } from "node:zlib";
brotliCompressSync(
buf: InputType,
options?: BrotliOptions,
): BufferCompress a chunk of data with BrotliCompress.
Parameters
buf: InputType options: BrotliOptions Return Type
Buffer function brotliDecompress
Usage in Deno
import { brotliDecompress } from "node:zlib";
Overload 1
brotliDecompress(): voidParameters
Return Type
void Overload 2
brotliDecompress(
buf: InputType,
callback: CompressCallback,
): voidParameters
buf: InputType callback: CompressCallback Return Type
void function brotliDecompressSync
Usage in Deno
import { brotliDecompressSync } from "node:zlib";
brotliDecompressSync(
buf: InputType,
options?: BrotliOptions,
): BufferDecompress a chunk of data with BrotliDecompress.
Parameters
buf: InputType options: BrotliOptions Return Type
Buffer function crc32
Usage in Deno
import { crc32 } from "node:zlib";
crc32(
data:
string
| Buffer
| ArrayBufferView
,
value?: number,
): numberComputes a 32-bit Cyclic Redundancy Check checksum of data. If value is specified, it is used as the starting value of the checksum, otherwise, 0 is used as the starting value.
Parameters
data:
string
| Buffer
| ArrayBufferView
When data is a string, it will be encoded as UTF-8 before being used for computation.
value: number An optional starting value. It must be a 32-bit unsigned integer. @default 0
Return Type
number A 32-bit unsigned integer containing the checksum.
function createBrotliCompress
Usage in Deno
import { createBrotliCompress } from "node:zlib";
createBrotliCompress(options?: BrotliOptions): BrotliCompressCreates and returns a new BrotliCompress object.
Parameters
options: BrotliOptions Return Type
function createBrotliDecompress
Usage in Deno
import { createBrotliDecompress } from "node:zlib";
createBrotliDecompress(options?: BrotliOptions): BrotliDecompressCreates and returns a new BrotliDecompress object.
Parameters
options: BrotliOptions Return Type
function createDeflate
Usage in Deno
import { createDeflate } from "node:zlib";
createDeflate(options?: ZlibOptions): Deflate
function createDeflateRaw
Usage in Deno
import { createDeflateRaw } from "node:zlib";
createDeflateRaw(options?: ZlibOptions): DeflateRawCreates and returns a new DeflateRaw object.
An upgrade of zlib from 1.2.8 to 1.2.11 changed behavior when windowBits is set to 8 for raw deflate streams. zlib would automatically set windowBits to 9 if was initially set to 8. Newer versions of zlib will throw an exception, so Node.js restored the original behavior of upgrading a value of 8 to 9, since passing windowBits = 9 to zlib actually results in a compressed stream that effectively uses an 8-bit window only.
Parameters
options: ZlibOptions Return Type
function createGunzip
Usage in Deno
import { createGunzip } from "node:zlib";
createGunzip(options?: ZlibOptions): Gunzip
function createGzip
Usage in Deno
import { createGzip } from "node:zlib";
createGzip(options?: ZlibOptions): GzipCreates and returns a new Gzip object. See example.
Parameters
options: ZlibOptions Return Type
function createInflate
Usage in Deno
import { createInflate } from "node:zlib";
createInflate(options?: ZlibOptions): Inflate
function createInflateRaw
Usage in Deno
import { createInflateRaw } from "node:zlib";
createInflateRaw(options?: ZlibOptions): InflateRaw
function createUnzip
Usage in Deno
import { createUnzip } from "node:zlib";
createUnzip(options?: ZlibOptions): Unzip
function deflate
Usage in Deno
import { deflate } from "node:zlib";
Overload 1
deflate(
buf: InputType,
callback: CompressCallback,
): voidParameters
buf: InputType callback: CompressCallback Return Type
void Overload 2
deflate(): voidParameters
Return Type
void function deflateRaw
Usage in Deno
import { deflateRaw } from "node:zlib";
Overload 1
deflateRaw(
buf: InputType,
callback: CompressCallback,
): voidParameters
buf: InputType callback: CompressCallback Return Type
void Overload 2
deflateRaw(): voidParameters
Return Type
void function deflateRawSync
Usage in Deno
import { deflateRawSync } from "node:zlib";
deflateRawSync(
buf: InputType,
options?: ZlibOptions,
): BufferCompress a chunk of data with DeflateRaw.
Parameters
buf: InputType options: ZlibOptions Return Type
Buffer function deflateSync
Usage in Deno
import { deflateSync } from "node:zlib";
deflateSync(
buf: InputType,
options?: ZlibOptions,
): BufferCompress a chunk of data with Deflate.
Parameters
buf: InputType options: ZlibOptions Return Type
Buffer function gunzip
Usage in Deno
import { gunzip } from "node:zlib";
Overload 1
gunzip(
buf: InputType,
callback: CompressCallback,
): voidParameters
buf: InputType callback: CompressCallback Return Type
void Overload 2
gunzip(): voidParameters
Return Type
void function gunzipSync
Usage in Deno
import { gunzipSync } from "node:zlib";
gunzipSync(
buf: InputType,
options?: ZlibOptions,
): BufferDecompress a chunk of data with Gunzip.
Parameters
buf: InputType options: ZlibOptions Return Type
Buffer function gzip
Usage in Deno
import { gzip } from "node:zlib";
Overload 1
gzip(
buf: InputType,
callback: CompressCallback,
): voidParameters
buf: InputType callback: CompressCallback Return Type
void Overload 2
gzip(): voidParameters
Return Type
void function gzipSync
Usage in Deno
import { gzipSync } from "node:zlib";
gzipSync(
buf: InputType,
options?: ZlibOptions,
): BufferCompress a chunk of data with Gzip.
Parameters
buf: InputType options: ZlibOptions Return Type
Buffer function inflate
Usage in Deno
import { inflate } from "node:zlib";
Overload 1
inflate(
buf: InputType,
callback: CompressCallback,
): voidParameters
buf: InputType callback: CompressCallback Return Type
void Overload 2
inflate(): voidParameters
Return Type
void function inflateRaw
Usage in Deno
import { inflateRaw } from "node:zlib";
Overload 1
inflateRaw(
buf: InputType,
callback: CompressCallback,
): voidParameters
buf: InputType callback: CompressCallback Return Type
void Overload 2
inflateRaw(): voidParameters
Return Type
void function inflateRawSync
Usage in Deno
import { inflateRawSync } from "node:zlib";
inflateRawSync(
buf: InputType,
options?: ZlibOptions,
): BufferDecompress a chunk of data with InflateRaw.
Parameters
buf: InputType options: ZlibOptions Return Type
Buffer function inflateSync
Usage in Deno
import { inflateSync } from "node:zlib";
inflateSync(
buf: InputType,
options?: ZlibOptions,
): BufferDecompress a chunk of data with Inflate.
Parameters
buf: InputType options: ZlibOptions Return Type
Buffer function unzip
Usage in Deno
import { unzip } from "node:zlib";
Overload 1
unzip(
buf: InputType,
callback: CompressCallback,
): voidParameters
buf: InputType callback: CompressCallback Return Type
void Overload 2
unzip(): voidParameters
Return Type
void function unzipSync
Usage in Deno
import { unzipSync } from "node:zlib";
unzipSync(
buf: InputType,
options?: ZlibOptions,
): BufferDecompress a chunk of data with Unzip.
Parameters
buf: InputType options: ZlibOptions Return Type
Buffer interface BrotliCompress
Usage in Deno
import { type BrotliCompress } from "node:zlib";
This class is not supported.
interface BrotliDecompress
Usage in Deno
import { type BrotliDecompress } from "node:zlib";
This class is not supported.
interface BrotliOptions
Usage in Deno
import { type BrotliOptions } from "node:zlib";
This class is not supported.
Properties
flush: number | undefined finishFlush: number | undefined chunkSize: number | undefined params: { [key: number]: boolean | number; } | undefined maxOutputLength: number | undefined Limits output size when using convenience methods.
interface InflateRaw
Usage in Deno
import { type InflateRaw } from "node:zlib";
interface Zlib
Usage in Deno
import { type Zlib } from "node:zlib";
interface ZlibOptions
Usage in Deno
import { type ZlibOptions } from "node:zlib";
Properties
flush: number | undefined finishFlush: number | undefined chunkSize: number | undefined windowBits: number | undefined level: number | undefined memLevel: number | undefined strategy: number | undefined dictionary:
ArrayBufferView
| ArrayBuffer
| undefined
info: boolean | undefined If true, returns an object with buffer and engine.
maxOutputLength: number | undefined Limits output size when using convenience methods.
interface ZlibParams
Usage in Deno
import { type ZlibParams } from "node:zlib";
Methods
params(
level: number,
strategy: number,
callback: () => void,
): void namespace constants
Usage in Deno
import { constants } from "node:zlib";
Variables
type alias CompressCallback
Usage in Deno
import { type CompressCallback } from "node:zlib";
Definition
(
error: Error | null,
result: Buffer,
) => void type alias InputType
Usage in Deno
import { type InputType } from "node:zlib";
Definition
string
| ArrayBuffer
| ArrayBufferView
variable constants.BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_CL_SPACE
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_DICTIONARY
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_DISTANCE
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_PADDING_1
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_PADDING_2
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_RESERVED
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_TRANSFORM
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_INVALID_ARGUMENTS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_ERROR_UNREACHABLE
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_NEEDS_MORE_INPUT
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_NEEDS_MORE_OUTPUT
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_NO_ERROR
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_PARAM_LARGE_WINDOW
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_RESULT_ERROR
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_RESULT_SUCCESS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DECODER_SUCCESS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DEFAULT_MODE
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DEFAULT_QUALITY
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_DEFAULT_WINDOW
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_LARGE_MAX_WINDOW_BITS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_MAX_INPUT_BLOCK_BITS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_MAX_QUALITY
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_MAX_WINDOW_BITS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_MIN_INPUT_BLOCK_BITS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_MIN_QUALITY
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_MIN_WINDOW_BITS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_MODE_FONT
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_MODE_GENERIC
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_MODE_TEXT
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_OPERATION_EMIT_METADATA
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_OPERATION_FINISH
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_OPERATION_FLUSH
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_OPERATION_PROCESS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_PARAM_LARGE_WINDOW
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_PARAM_LGBLOCK
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_PARAM_LGWIN
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_PARAM_MODE
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_PARAM_NDIRECT
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_PARAM_NPOSTFIX
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_PARAM_QUALITY
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.BROTLI_PARAM_SIZE_HINT
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.Z_BEST_COMPRESSION
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.Z_DEFAULT_COMPRESSION
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.Z_DEFAULT_MEMLEVEL
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.Z_DEFAULT_STRATEGY
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.Z_DEFAULT_WINDOWBITS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.Z_MAX_WINDOWBITS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.Z_MIN_WINDOWBITS
Usage in Deno
import { constants } from "node:zlib";
Type
number variable constants.Z_NO_COMPRESSION
Usage in Deno
import { constants } from "node:zlib";
Type
number variable Z_BEST_COMPRESSION
Usage in Deno
import { Z_BEST_COMPRESSION } from "node:zlib";
Use constants.Z_BEST_COMPRESSION
Type
number variable Z_BEST_SPEED
Usage in Deno
import { Z_BEST_SPEED } from "node:zlib";
Use constants.Z_BEST_SPEED
Type
number variable Z_BLOCK
Usage in Deno
import { Z_BLOCK } from "node:zlib";
Use constants.Z_BLOCK
Type
number variable Z_BUF_ERROR
Usage in Deno
import { Z_BUF_ERROR } from "node:zlib";
Use constants.Z_BUF_ERROR
Type
number variable Z_DATA_ERROR
Usage in Deno
import { Z_DATA_ERROR } from "node:zlib";
Use constants.Z_DATA_ERROR
Type
number variable Z_DEFAULT_COMPRESSION
Usage in Deno
import { Z_DEFAULT_COMPRESSION } from "node:zlib";
Use constants.Z_DEFAULT_COMPRESSION
Type
number variable Z_DEFAULT_STRATEGY
Usage in Deno
import { Z_DEFAULT_STRATEGY } from "node:zlib";
Use constants.Z_DEFAULT_STRATEGY
Type
number variable Z_ERRNO
Usage in Deno
import { Z_ERRNO } from "node:zlib";
Use constants.Z_ERRNO
Type
number variable Z_FILTERED
Usage in Deno
import { Z_FILTERED } from "node:zlib";
Use constants.Z_FILTERED
Type
number variable Z_FINISH
Usage in Deno
import { Z_FINISH } from "node:zlib";
Use constants.Z_FINISH
Type
number variable Z_FIXED
Usage in Deno
import { Z_FIXED } from "node:zlib";
Use constants.Z_FIXED
Type
number variable Z_FULL_FLUSH
Usage in Deno
import { Z_FULL_FLUSH } from "node:zlib";
Use constants.Z_FULL_FLUSH
Type
number variable Z_HUFFMAN_ONLY
Usage in Deno
import { Z_HUFFMAN_ONLY } from "node:zlib";
Use constants.Z_HUFFMAN_ONLY
Type
number variable Z_MEM_ERROR
Usage in Deno
import { Z_MEM_ERROR } from "node:zlib";
Use constants.Z_MEM_ERROR
Type
number variable Z_NEED_DICT
Usage in Deno
import { Z_NEED_DICT } from "node:zlib";
Use constants.Z_NEED_DICT
Type
number variable Z_NO_COMPRESSION
Usage in Deno
import { Z_NO_COMPRESSION } from "node:zlib";
Use constants.Z_NO_COMPRESSION
Type
number variable Z_NO_FLUSH
Usage in Deno
import { Z_NO_FLUSH } from "node:zlib";
Use constants.Z_NO_FLUSH
Type
number variable Z_OK
Usage in Deno
import { Z_OK } from "node:zlib";
Use constants.Z_OK
Type
number variable Z_PARTIAL_FLUSH
Usage in Deno
import { Z_PARTIAL_FLUSH } from "node:zlib";
Use constants.Z_PARTIAL_FLUSH
Type
number variable Z_RLE
Usage in Deno
import { Z_RLE } from "node:zlib";
Use constants.Z_RLE
Type
number variable Z_STREAM_END
Usage in Deno
import { Z_STREAM_END } from "node:zlib";
Use constants.Z_STREAM_END
Type
number variable Z_STREAM_ERROR
Usage in Deno
import { Z_STREAM_ERROR } from "node:zlib";
Use constants.Z_STREAM_ERROR
Type
number variable Z_SYNC_FLUSH
Usage in Deno
import { Z_SYNC_FLUSH } from "node:zlib";
Use constants.Z_SYNC_FLUSH
Type
number variable Z_TREES
Usage in Deno
import { Z_TREES } from "node:zlib";
Use constants.Z_TREES
Type
number variable Z_VERSION_ERROR
Usage in Deno
import { Z_VERSION_ERROR } from "node:zlib";
Use constants.Z_VERSION_ERROR
Type
number
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/zlib