# Binary network data

Jam captures and displays request and response bodies for network requests, but some payloads contain binary data that can't be rendered as readable text.

### How Jam handles binary data

When a request or response body contains binary content — such as Protocol Buffers (protobuf), WebSocket binary frames, MessagePack, gRPC payloads, or other non-text formats — Jam displays a placeholder instead of the raw data:

```
[binary: 474 bytes]
```

This tells you:

* **The data is binary**: it's not human-readable text, JSON, or form data.
* **The content length**: the number shown is the size of the payload in bytes.

<figure><img src="https://1990502200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtAIPUIiSH7MWC0IHLJuD%2Fuploads%2FbXxfBNe5re31LHsEjOlE%2FScreenshot%202026-03-23%20at%2011.48.46.png?alt=media&#x26;token=6800ecca-e4d9-46fc-be75-cd3dc9fecfb8" alt=""><figcaption></figcaption></figure>

### Why binary data isn't displayed as text

Binary formats encode data in compact, non-text representations. Attempting to render them as text would produce garbled, unreadable output. By showing the content length instead, Jam gives you a quick way to identify the payload size without cluttering the DevTools view.

### Common examples

You'll typically see `[binary: X bytes]` for:

* **Protocol Buffers (protobuf)** — used by many APIs for efficient serialization (e.g., Google services, gRPC)
* **WebSocket binary frames** — real-time communication protocols often use binary message types
* **gRPC** — built on HTTP/2 and protobuf, payloads are binary by default
* **MessagePack** — a binary alternative to JSON
* **Other binary formats** — Avro, Thrift, CBOR, or custom binary protocols

### Debugging tips

* Use the **content length** to verify whether the expected amount of data is being sent/received.
* If you need to inspect the actual binary payload, use your browser's native DevTools alongside Jam to decode the data with format-specific tools.
