1 min read

Compression Streams API

The Compression Streams API provides a JavaScript API for compressing and decompressing streams of data. It allows you to compress data directly in the browser without needing to send it to a server or use a heavy JavaScript library.

1. Supported Formats

The API supports the following compression formats:

  • gzip
  • deflate
  • deflate-raw

2. Compressing Data

To compress data, you use the CompressionStream interface. It is a Transform Stream that takes chunks of data as input and outputs compressed chunks.

async function compressData(readableStream) {
  const compressedStream = readableStream.pipeThrough(
    new CompressionStream('gzip')
  );
  return compressedStream;
}

Example: Compressing a String

async function compressString(str) {
  // 1. Convert string to stream
  const stream = new Blob([str]).stream();

  // 2. Compress
  const compressedStream = stream.pipeThrough(
    new CompressionStream('gzip')
  );

  // 3. Convert stream back to Response/Blob/ArrayBuffer
  const compressedResponse = new Response(compressedStream);
  const blob = await compressedResponse.blob();

  return blob;
}

3. Decompressing Data

To decompress data, you use the DecompressionStream interface.

async function decompressBlob(blob) {
  const stream = blob.stream().pipeThrough(
    new DecompressionStream('gzip')
  );

  const decompressedResponse = new Response(stream);
  const text = await decompressedResponse.text();
  return text;
}

programming/javascript/vanilla/javascript programming/javascript/vanilla/streams-api programming/javascript/vanilla/file-api