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";
Functions
Computes 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.
Interfaces
Namespaces
Type Aliases
Variables
function brotliCompress
Usage in Deno
import { brotliCompress } from "node:zlib";
function brotliCompressSync
Usage in Deno
import { brotliCompressSync } from "node:zlib";
#brotliCompressSync(buf: InputType,options?: BrotliOptions,): Bufferfunction brotliDecompress
Usage in Deno
import { brotliDecompress } from "node:zlib";
function brotliDecompressSync
Usage in Deno
import { brotliDecompressSync } from "node:zlib";
#brotliDecompressSync(buf: InputType,options?: BrotliOptions,): Bufferfunction 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 #
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): Deflatefunction 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): Gunzipfunction 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): Inflatefunction createInflateRaw
Usage in Deno
import { createInflateRaw } from "node:zlib";
#createInflateRaw(options?: ZlibOptions): InflateRawCreates and returns a new InflateRaw object.
Parameters #
#options: ZlibOptions Return Type #
function createUnzip
Usage in Deno
import { createUnzip } from "node:zlib";
#createUnzip(options?: ZlibOptions): Unzipfunction deflateRaw
Usage in Deno
import { deflateRaw } from "node:zlib";
function deflateRawSync
Usage in Deno
import { deflateRawSync } from "node:zlib";
#deflateRawSync(buf: InputType,options?: ZlibOptions,): Bufferfunction deflateSync
Usage in Deno
import { deflateSync } from "node:zlib";
#deflateSync(buf: InputType,options?: ZlibOptions,): Bufferfunction gunzipSync
Usage in Deno
import { gunzipSync } from "node:zlib";
#gunzipSync(buf: InputType,options?: ZlibOptions,): Bufferfunction gzipSync
Usage in Deno
import { gzipSync } from "node:zlib";
#gzipSync(buf: InputType,options?: ZlibOptions,): Bufferfunction inflateRaw
Usage in Deno
import { inflateRaw } from "node:zlib";
function inflateRawSync
Usage in Deno
import { inflateRawSync } from "node:zlib";
#inflateRawSync(buf: InputType,options?: ZlibOptions,): Bufferfunction inflateSync
Usage in Deno
import { inflateSync } from "node:zlib";
#inflateSync(buf: InputType,options?: ZlibOptions,): Bufferfunction unzipSync
Usage in Deno
import { unzipSync } from "node:zlib";
#unzipSync(buf: InputType,options?: ZlibOptions,): Bufferinterface 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 #
#finishFlush: number | undefined #maxOutputLength: number | undefined Limits output size when using convenience methods.
interface Zlib
Usage in Deno
import { type Zlib } from "node:zlib";
interface ZlibOptions
Usage in Deno
import { type ZlibOptions } from "node:zlib";
Properties #
#finishFlush: number | undefined #windowBits: number | undefined #dictionary: ArrayBufferView
| ArrayBuffer
| undefined #maxOutputLength: number | undefined Limits output size when using convenience methods.
interface ZlibParams
Usage in Deno
import { type ZlibParams } from "node:zlib";
type alias CompressCallback
Usage in Deno
import { type CompressCallback } from "node:zlib";
Definition #
(error: Error | null,result: Buffer,) => void 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_GENERIC
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 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_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_FILTERED
Usage in Deno
import { Z_FILTERED } from "node:zlib";
Use constants.Z_FILTERED
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_PARTIAL_FLUSH
Usage in Deno
import { Z_PARTIAL_FLUSH } from "node:zlib";
Use constants.Z_PARTIAL_FLUSH
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_VERSION_ERROR
Usage in Deno
import { Z_VERSION_ERROR } from "node:zlib";
Use constants.Z_VERSION_ERROR
Type #
number