Package detail

http-compression

Kikobeats63.4kMIT1.1.2

Adding gzip/brotli for your HTTP server

br, brotli, compress, compression

readme

http-compression

Last version Coverage Status NPM Status

http-compression adds compression for your HTTP server in Node.js by:

  • No dependencies (< 1kB).
  • Express style middleware support.
  • Auto detect the best encoding to use (gzip/brotli).

Install

$ npm install http-compression --save

Usage

If you are using an Express style framework, you can add it as middlware:

const compression = require('http-compression')
const express = require('express')

express()
  .use(compression({ /* see options below */ }))
  .use((req, res) => {
    // this will get compressed:
    res.end('hello world!'.repeat(1000))
  })
  .listen(3000)

Otherwise, just pass req, res primitives to it:

const compression = require('http-compression')({ /* see options below */ })
const { createServer } = require('http')

const server = createServer((req, res) => {
  compression(req, res)
  res.end('hello world!'.repeat(1000))
})

server.listen(3000, () => {
  console.log('> Listening at http://localhost:3000')
})

API

The compression(options) function returns an Express style middleware of the form (req, res, next).

Options

threshold

Type: Number
Default: 1024

Responses below this threshold (in bytes) are not compressed. The default value of 1024 is recommended, and avoids sharply diminishing compression returns.

level

Type: object
Default: { brotli: 1, gzip: 1 }

The compression effort/level/quality setting, used by both Gzip and Brotli. The scale range is:

  • brotli: from 0 to 11.
  • gzip: from -1 to 9.

The library uses uses the most efficiency level by default determined by a benchmark.

brotli

Type: boolean
Default: true

Enables response compression using Brotli for requests that support it. as determined by the Accept-Encoding request header.

gzip

Type: boolean
Default: true

Enables response compression using Gzip for requests that support it, as determined by the Accept-Encoding request header.

mimes

Type: RegExp
Default: /text|javascript|\/json|xml/i

The Content-Type response header is evaluated against this Regular Expression to determine if it is a MIME type that should be compressed. Remember that compression is generally only effective on textual content.

License

Thanks to developit for written the original code implementation for polka#148.

http-compression © Kiko Beats, released under the MIT License.
Authored and maintained by Kiko Beats with help from contributors.

kikobeats.com · GitHub Kiko Beats · X @Kikobeats

changelog

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

1.1.2 (2025-08-12)

1.1.1 (2024-10-07)

1.1.0 (2024-10-07)

Features

1.0.21 (2024-10-07)

1.0.20 (2024-05-07)

1.0.19 (2024-02-08)

1.0.18 (2024-02-08)

1.0.17 (2023-10-23)

1.0.16 (2023-10-08)

1.0.15 (2023-09-25)

1.0.14 (2023-09-24)

1.0.13 (2023-09-23)

1.0.12 (2023-09-23)

1.0.11 (2023-09-07)

1.0.10 (2023-07-07)

1.0.9 (2023-07-05)

1.0.8 (2023-07-05)

1.0.7 (2023-05-22)

1.0.6 (2023-05-16)

1.0.5 (2023-03-28)

1.0.4 (2023-01-26)

1.0.3 (2023-01-26)

1.0.2 (2023-01-25)

1.0.1 (2023-01-18)

Bug Fixes

1.0.0 (2023-01-18)