Protobuf Viewer

Inspect protobuf payloads in the browser with one shared workspace for schema parsing, message selection, and decoded output across JSON, Base64, and binary inputs.

Client-side onlyMessage selectorJSON, Base64, and binary

Inspect schema-driven payloads without a local CLI setup

A protobuf viewer is most useful when you need answers quickly and do not want to stop to wire up a local script. Instead of compiling helpers or running a command-line decoder, you can paste the .proto definition, pick the message type, and inspect the parsed result directly in the browser. That makes this route useful for API debugging, QA handoff, and support tickets where turnaround matters more than a permanent integration.

This page is tuned for inspection rather than one-off export. The main workflow is to load a schema, switch between JSON, JS object, TypeScript, and tree views, and compare how the same message looks across representations. When a schema contains several nested or sibling messages, the selector lets you move through them without rebuilding the workspace every time.

Best when you are tracing real payloads from logs or captures

Use the viewer when a response body, log capture, or saved protobuf file needs explanation. Binary upload keeps raw bytes intact, while Base64 and JSON inputs cover the formats developers usually copy out of dashboards, terminals, and browser tooling. Because the decoder stays client-side, sample payloads can be inspected without sending them to a backend service or sharing them with a third-party API.

The tree and generated type views reduce the time spent mapping field numbers to meaning. Instead of reconstructing structure from the schema alone, you can verify defaults, repeated fields, nested objects, and scalar types in one place. That is especially useful when you are checking whether a producer and consumer are aligned on the same schema revision or whether a field was silently added, renamed, or removed.

How to read nested protobuf structures in the tree view

The tree view displays each protobuf message as a collapsible hierarchy, with nested messages, repeated fields, and scalar values shown at the correct depth. That makes it straightforward to trace a path from the top-level wrapper down to a deeply nested object without flattening anything. If a field is repeated, the tree numbers each element so you can confirm array length and ordering at a glance.

Default values deserve attention when you are reviewing tree output. Protobuf omits fields that equal their default, so the absence of an entry in the tree means the sender did not populate that field or intentionally set it to zero, false, or an empty string. Comparing tree output against the schema definition lets you quickly spot which fields are populated versus which silently fell back to defaults — a common source of integration bugs.

What input formats can this protobuf viewer handle?

JSON and Base64 can be pasted directly, and raw protobuf bytes can be loaded through Binary mode. The same schema workspace is reused across all three inputs.

Can I inspect more than one message in a schema?

Yes. After the schema parses, the message selector lists every decodeable message so you can switch targets without re-entering the .proto file.

Does the payload leave the browser?

No. The viewer runs fully client-side, so schema text, typed input, and uploaded binary files remain in the current browser session.

How do I navigate nested messages in the tree view?

Each nested message renders as a collapsible node in the tree. Click to expand or collapse it. Repeated fields are numbered so you can inspect individual array elements without losing context.

Can I view protobuf enum values and their names?

Yes. When the schema defines enums, decoded output displays the symbolic name alongside the numeric value so you can verify enum mappings without cross-referencing the .proto file manually.