Since May 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Note: This feature is available in Web Workers.
The Compression Streams API provides a JavaScript API for compressing and decompressing streams of data using the gzip or deflate formats.
Built in compression means that JavaScript applications will not need to include a compression library, which makes the download size of the application smaller.
The Fetch API's Response can be used to convert streams to:
ArrayBufferBlobUint8ArrayStringCompressionStreamCompresses a stream of data.
DecompressionStreamDecompresses a stream of data.
In this example a stream is compressed using gzip compression.
const compressedReadableStream = inputReadableStream.pipeThrough(
new CompressionStream("gzip"),
);
In the following example a function decompresses a blob using gzip.
async function DecompressBlob(blob) {
const ds = new DecompressionStream("gzip");
const decompressedStream = blob.stream().pipeThrough(ds);
return await new Response(decompressedStream).blob();
}
| Specification |
|---|
| Compression> # compression-stream> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
CompressionStream |
80 | 80 | 113 | 67 | 16.4 | 80 | 113 | 57 | 16.4 | 13.0 | 80 | 16.4 |
Compression_Streams_API |
80 | 80 | 113 | 67 | 16.4 | 80 | 113 | 57 | 16.4 | 13.0 | 80 | 16.4 |
readable |
80 | 80 | 113 | 67 | 16.4 | 80 | 113 | 57 | 16.4 | 13.0 | 80 | 16.4 |
writable |
80 | 80 | 113 | 67 | 16.4 | 80 | 113 | 57 | 16.4 | 13.0 | 80 | 16.4 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Compression_Streams_API