Open PortfolioOpen Portfolio.
โ† Back to Blog

How to Compress Text Responses (Brotli vs Gzip)

March 23, 2026at 2:01 PM UTCBy Pocket Portfolio TeamTechnology
How to Compress Text Responses (Brotli vs Gzip)
#compression#Brotli#Gzip#text responses#web development

When building web applications, optimizing the transmission of data between server and client is crucial for performance. Text responses can be compressed to reduce bandwidth usage and improve load times. Two popular compression algorithms are Brotli and Gzip. Understanding how to implement these can significantly enhance your application's efficiency.

Problem

Web applications often send large amounts of text data, such as HTML, CSS, and JSON, which can slow down response times and increase bandwidth costs if not compressed. Choosing the right compression algorithm can minimize these issues.

Solution with Code

Both Brotli and Gzip can be implemented in Node.js applications using middleware. Here's how you can set it up using the Express framework:

Install Dependencies

First, ensure you have the necessary packages:

npm install express compression zlib

Implement Gzip Compression

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

const app = express();

// Enable Gzip compression
app.use(compression({ level: 6 })); // Default compression level

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

Implement Brotli Compression

For Brotli, you need to use the zlib module:

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

const app = express();

// Custom middleware for Brotli compression
app.use((req, res, next) => {
  const _send = res.send;
  res.send = function (body) {
    if (req.headers['accept-encoding'] && req.headers['accept-encoding'].includes('br')) {
      zlib.brotliCompress(body, (err, result) => {
        if (err) return next(err);
        res.set('Content-Encoding', 'br');
        _send.call(this, result);
      });
    } else {
      _send.call(this, body);
    }
  };
  next();
});

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

Key Concepts

  • Compression Level: Gzip allows for different compression levels from 0 to 9, where 6 is a good balance between speed and compression ratio. Brotli also offers different levels, providing even better compression at the cost of speed.

  • Content-Encoding Header: Ensure the response headers correctly reflect the compression type with Content-Encoding: gzip or Content-Encoding: br for Brotli.

  • Client Compatibility: Verify that the client's browser supports Brotli as not all might, though most modern browsers do.

By choosing the appropriate compression algorithm based on your needs, you can significantly enhance the performance and efficiency of your web applications. Brotli generally offers better compression ratios, particularly for text, while Gzip is faster and more universally supported. Always profile and test to ensure the best choice for your specific scenario.

How to Compress Text Responses (Brotli vs Gzip) | Open Portfolio Blog | Open Portfolio