# Compression Streams

> CompressionStream and DecompressionStream for gzip, deflate, Brotli, and Zstandard.

`CompressionStream` and `DecompressionStream` are globals that take a format token:

| Format | Token |
|---|---|
| Gzip | `gzip` |
| Zlib-wrapped deflate | `deflate` |
| Raw deflate | `deflate-raw` |
| Brotli | `brotli` |
| Zstandard | `zstd` |

```js
const compressed = new Blob(["hello"]).stream().pipeThrough(new CompressionStream("zstd"));
```

## Differences from browsers

- `brotli` and `zstd` are Elide additions.
- Tokens are case-sensitive; an unknown token throws `TypeError`.
- Chunks must be `BufferSource` values.
- Malformed or truncated input rejects, as does decompressed output past a size limit.

For Buffer and callback APIs, see [node:zlib](https://elide.help/docs/api-node-zlib).
