Skip to content
Aback Tools Logo

Express.js Compression Middleware Generator

Generate Express.js compression middleware configuration using the compression npm package — online for free. Our Express.js compression middleware generator produces a complete, ready-to-paste setup with configurable compression level (1–9), response size threshold, custom filter function for skipping already-compressed content types, and Vary header middleware. Supports CommonJS, ESM, and TypeScript output, plus Fastify (@fastify/compress) and Koa (koa-compress) variants. No signup required, 100% browser-based.

Express.js Compression Middleware Generator
Configure the options below to generate an Express.js compression middleware setup using the compression npm package. Supports CommonJS, ESM, and TypeScript output. All generation happens in your browser — no signup required.
1 (fastest)Default — recommended for most apps9 (smallest)

Responses smaller than this threshold are not compressed. 1KB is the recommended default.

Higher values use more memory but improve compression speed. Default (8) is recommended for most servers.

Options

Install

npm install compression

app.js

const compression = require('compression');
const express = require('express');

// Custom filter — skip compression for already-compressed content types
function shouldCompress(req, res) {
  // Don't compress responses with this request header
  if (req.headers['x-no-compression']) return false;

  // Skip already-compressed content types
  const contentType = res.getHeader('Content-Type');
  if (typeof contentType === 'string') {
    const skipTypes = [
      'image/jpeg', 'image/png', 'image/webp', 'image/avif',
      'image/gif', 'video/', 'audio/', 'application/zip',
      'application/gzip', 'application/x-bzip2', 'font/woff2',
    ];
    if (skipTypes.some(t => contentType.startsWith(t))) return false;
  }

  // Fall back to default compression filter
  return compression.filter(req, res);
}

const app = express();

// ── Compression middleware ────────────────────────────────────────────────────
// Must be registered BEFORE routes and static file serving
app.use(compression({
  // Compression level: 1 (fastest) to 9 (smallest). Default is zlib.Z_DEFAULT_COMPRESSION (6).
  level: 6,

  // Only compress responses above this byte threshold
  threshold: 1024, // 1KB

  // Custom filter function — skips already-compressed content types
  filter: shouldCompress,
}));

// Ensure Vary: Accept-Encoding is set for correct CDN caching
app.use((_req, res, next) => {
  res.setHeader('Vary', 'Accept-Encoding');
  next();
});

// ── Your routes ──────────────────────────────────────────────────────────────
app.get('/', (req, res) => {
  res.json({ message: 'Hello, compressed world!' });
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

// ── Brotli support note ──────────────────────────────────────────────────────
// The 'compression' package only supports GZIP and DEFLATE.
// For Brotli support in Express, use 'shrink-ray-current' instead:
//
//   npm install shrink-ray-current
//
//   const shrinkRay = require('shrink-ray-current');
//   app.use(shrinkRay());
//
// Or use 'express-static-gzip' to serve pre-compressed .br and .gz files:
//   npm install express-static-gzip

The compression package uses Node.js's built-in zlib module and supports GZIP and DEFLATE only. Register it before all routes and express.static() calls for it to take effect.

Why Use Our Express.js Compression Middleware Generator?

Instant Express.js Compression Config Generation

Our Express.js compression middleware generator produces a complete, ready-to-paste middleware setup instantly — including the compression options object, custom filter function, Vary header middleware, and Brotli upgrade notes. No manual npm documentation reading required.

Secure Express.js Compression Middleware Generator Online

Your configuration choices never leave your device when you use our Express.js compression middleware generator online. All code generation runs entirely in your browser — no server requests, no data retention, 100% private.

CommonJS, ESM, and TypeScript Output

Generate Express.js compression middleware in your preferred module format — CommonJS (require), ESM (import), or TypeScript with full type annotations. Also supports Express Router, Fastify (@fastify/compress), and Koa (koa-compress) variants.

Express.js Compression Middleware Generator — No Installation

Generate Express.js compression middleware configuration directly in your browser. No Node.js, no npm, no IDE required. Our free Express.js compression middleware generator works on any device with a modern browser — no signup, no file size limits.

Common Use Cases for Express.js Compression Middleware Generator

New Express.js App Setup

Add compression to a new Express.js application from scratch — our generator produces the complete middleware setup with the correct registration order, custom filter, and Vary header middleware in one copy-paste.

REST API Response Compression

Compress JSON API responses to reduce bandwidth costs and improve response times for mobile clients. The generator includes a custom filter that skips already-compressed content types, preventing wasted CPU on JPEG, PNG, and video responses.

Express.js Performance Optimization

Add compression middleware to an existing Express.js app to improve Core Web Vitals scores — the generator shows the correct placement before routes and static file serving, and includes a Brotli upgrade path via shrink-ray-current.

Microservice Compression Setup

Configure compression for Express.js microservices with Router-level middleware — apply compression only to specific route groups rather than the entire application, with configurable threshold and compression level per service.

TypeScript Express.js Projects

Generate TypeScript-typed compression middleware with correct Request, Response, and NextFunction type annotations — ready to drop into a TypeScript Express.js project without any manual type fixes.

Framework Migration Reference

Use the Fastify and Koa variants as a reference when migrating from Express.js to another Node.js framework — the generator shows the equivalent compression setup for @fastify/compress and koa-compress with matching configuration options.

Understanding Express.js Compression Middleware

What is Express.js Compression Middleware?

How the compression Package Works

Compression Level and Memory Tradeoffs

Adding Brotli Support to Express.js

Frequently Asked Questions About Express.js Compression Middleware Generator

An Express.js compression middleware generator produces a ready-to-paste compression middleware setup for Express.js applications using the compression npm package. Our free Express.js compression middleware generator online creates the complete configuration — including compression level, threshold, custom filter, and Vary header middleware — all running locally in your browser.

The compression middleware must be registered before all routes and before express.static() calls. If you register it after a route, responses from that route will not be compressed. The generated code includes a comment indicating the correct placement.

Yes. All code generation runs entirely in your browser using JavaScript. No configuration data is sent to any server, stored remotely, or transmitted over the network. Your configuration stays completely private.

Yes — 100% free, forever. No signup, no account, no premium tier, no file size limits, and no ads interrupting your workflow.

No — the compression npm package only supports GZIP and DEFLATE using Node.js's built-in zlib module. For Brotli support in Express.js, use shrink-ray-current (which supports Brotli, GZIP, and DEFLATE) or express-static-gzip to serve pre-compressed .br files. The generated code includes a comment explaining both options.

Level 6 (the default) is recommended for most Express.js applications — it provides a good balance between compression ratio and CPU overhead. Use level 1 for high-throughput APIs where CPU cost is a concern. Use level 9 only for pre-compressed static assets at build time, not for dynamic responses.

Without a custom filter, the compression middleware will attempt to compress already-compressed content types — JPEG, PNG, WebP, video, ZIP, and WOFF2 fonts. This wastes CPU with no size benefit and can actually increase response size. The custom filter function in the generated code skips these content types automatically.

The threshold option sets the minimum response size in bytes below which compression is skipped. Compressing very small responses (under 1KB) wastes CPU and adds overhead without meaningful size savings. The default threshold of 1KB (1024 bytes) is recommended for most applications.

The Express app variant registers compression middleware globally on the entire application — all routes will have their responses compressed. The Express Router variant registers compression only on a specific router, allowing you to apply compression selectively to certain route groups (e.g., only API routes, not static file routes).