> ## Documentation Index
> Fetch the complete documentation index at: https://bun-1dd33a4e-farm-753daa17-npm-provenance.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Enable compression for WebSocket messages

Set the `perMessageDeflate` parameter to enable the [permessage-deflate](https://tools.ietf.org/html/rfc7692) WebSocket extension. This negotiates compression with clients that support it; messages sent with `ws.send()` are still uncompressed unless you opt in per message (see below).

```ts server.ts icon="https://mintcdn.com/bun-1dd33a4e-farm-753daa17-npm-provenance/tHyX5a1rztlCA8ck/icons/typescript.svg?fit=max&auto=format&n=tHyX5a1rztlCA8ck&q=85&s=07c7ab6cad5a38187f066f70161be6a0" theme={"theme":{"light":"github-light","dark":"dracula"}}
Bun.serve({
  // ...
  websocket: {
    // enable compression
    perMessageDeflate: true,
  },
});
```

***

To enable compression for individual messages, pass `true` as the second parameter to `ws.send()`. This requires `perMessageDeflate` to be enabled; otherwise the message is sent uncompressed.

```ts server.ts icon="https://mintcdn.com/bun-1dd33a4e-farm-753daa17-npm-provenance/tHyX5a1rztlCA8ck/icons/typescript.svg?fit=max&auto=format&n=tHyX5a1rztlCA8ck&q=85&s=07c7ab6cad5a38187f066f70161be6a0" theme={"theme":{"light":"github-light","dark":"dracula"}}
Bun.serve({
  // ...
  websocket: {
    perMessageDeflate: true,
    async message(ws, message) {
      // send a compressed message
      ws.send(message, true);
    },
  },
});
```
