antoniomuso
lz4-napi
JavaScript

Fastest lz4 compression library in Node.js, powered by napi-rs and lz4-flex.

Last updated May 13, 2026
70
Stars
5
Forks
21
Issues
0
Stars/day
Attention Score
33
Language breakdown
JavaScript 64.6%
Rust 18.6%
TypeScript 16.6%
Shell 0.1%
β–Έ Files click to expand
README

lz4-napi

Node.js NAPI Binding for LZ4 compression algorithm, powered by Rust napi-rs and lz4-flex.

Pros:

  • Fast! ⚑️
  • Memory Safe! πŸ”’
  • Uses libuv's threadpool! 🧡

Table of content

- Compress - Uncompress - Promises - compress - uncompress - Sync - compressSync - uncompressSync - Hardware - Results

Installation

npm i lz4-napi
#Β OR
yarn add lz4-napi

Usage

Compress

const { readFile } = require('fs/promises');
const { compress } = require('lz4-napi');

// if you support top-level await const buffer = await readFile("./bigFile.dat"); const compressedBuffer = await compress(buffer) // Store compressed buffer somewhere

Uncompress

const { uncompress } = require('lz4-napi');

// if you support top-level await const compressedBuffer = await getFromSomeStorage(); const uncompressedBuffer = await uncompress(compressedBuffer) // Do something with compressedBuffer!

APIs

Promise

compress

(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) => Promise<Buffer>

uncompress

(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) => Promise<Buffer>

compressFrame

(data: Buffer | string | ArrayBuffer | Uint8Array) => Promise<Buffer>

decompressFrame

(data: Buffer | string | ArrayBuffer | Uint8Array) => Promise<Buffer>

Sync

compressSync

(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) => Buffer

uncompressSync

(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) => Buffer

compressFrameSync

(data: Buffer | string | ArrayBuffer | Uint8Array) => Buffer

decompressFrameSync

(data: Buffer | string | ArrayBuffer | Uint8Array) => Buffer

Performance

Hardware

Benchmarks runs on the following hardware:

  • Processor Name: M4 pro
  • Total Number of Cores: 12
  • Memory: 24GB

Benchmark

Running "Compress" suite...
Progress: 100%

lz4: 7 355 ops/s, Β±1.73% | 0.39% slower

lz4 dict: 6 375 ops/s, Β±0.29% | 13.66% slower

snappy: 7 384 ops/s, Β±0.53% | fastest

gzip: 444 ops/s, Β±0.50% | 93.99% slower

deflate: 442 ops/s, Β±0.62% | 94.01% slower

brotli: 6 ops/s, Β±0.73% | slowest, 99.92% slower

Finished 6 cases! Fastest: snappy Slowest: brotli Running "Decompress" suite... Progress: 100%

lz4: 19 095 ops/s, Β±1.51% | fastest

lz4 dict: 17 644 ops/s, Β±1.51% | 7.6% slower

snappy: 14 424 ops/s, Β±0.50% | 24.46% slower

gzip: 2 442 ops/s, Β±0.60% | 87.21% slower

deflate: 2 467 ops/s, Β±0.61% | 87.08% slower

brotli: 1 659 ops/s, Β±0.43% | slowest, 91.31% slower

Finished 6 cases! Fastest: lz4 Slowest: brotli

Contributing

Project is pretty simple and straight forward for what is my needs, but if you have any idea you're welcome.

This projects uses conventional commit so be sure to use standard commit format or PR won't be accepted
  • Fork the Project
  • Create your Feature Branch (git checkout -b feature/AmazingFeature)
  • Commit your Changes (git commit -m 'feat(scope): some AmazingFeature')
  • Push to the Branch (git push origin feature/AmazingFeature)
  • Open a Pull Request

Acknowledgments

License

Distributed under the MIT License. See LICENSE for more information.

πŸ”— More in this category

Β© 2026 GitRepoTrend Β· antoniomuso/lz4-napi Β· Updated daily from GitHub