The zlib module provides compression and decompression using Gzip, Deflate, and Brotli algorithms. Here's how to use it.
Basic Compression#
Stream-Based Compression#
HTTP Compression#
Compression Options#
Comparing Algorithms#
Incremental Compression#
Memory-Efficient Processing#
Compression Utilities#
JSON Compression#
Error Handling#
Express Middleware#
Best Practices#
Algorithm Choice:
✓ Brotli for static assets (best ratio)
✓ Gzip for dynamic content (fast)
✓ Deflate for legacy support
✓ Match client Accept-Encoding
Performance:
✓ Use streams for large files
✓ Set appropriate compression level
✓ Cache compressed assets
✓ Set minimum size threshold
Implementation:
✓ Handle errors properly
✓ Validate before decompressing
✓ Use pipeline for streams
✓ Promisify callback APIs
Avoid:
✗ Compressing already compressed data
✗ High compression for real-time
✗ Ignoring Content-Encoding header
✗ Memory issues with large buffers
Conclusion#
The zlib module provides efficient compression for Node.js applications. Use Brotli for best compression ratios on static assets, Gzip for dynamic content, and streams for large files. Always check Accept-Encoding headers in HTTP responses and handle errors appropriately. Set compression thresholds to avoid overhead on small responses.