gRPCToolsetwire inspector
proto3 · wire format
中文English

gRPC Message Workbench

An online debugger for gRPC / protobuf. Choose wire-format heuristics when you do not have a proto, or strict reflection-based serialization and deserialization when you do.

Start with a task

Do you have a .proto schema?

choose

Two decoding paths

overview

Path 1 · Schema-free decoding

Paste a hex / base64 payload from a capture. The tool reconstructs each field from the protobuf wire format and shows candidate interpretations: uint64 / int64 / zigzag / bool for varints, plus strings, nested messages, and packed arrays for length-delimited values.

Useful for packet captures, raw bytes in logs, and historical data without a proto.

Path 2 · Schema serialization / deserialization

Paste .proto source, compile it in memory (no protoc required), and use reflection in both directions: bytes → structured fields → JSON and JSON → bytes. Field names, enum names, nested messages, repeated fields, maps, and oneofs follow the schema.

Useful for API integration, constructing request bodies, and checking responses.

Protobuf wire-type reference

reference
Wire typeNamePossible field types
0varintint32 / int64 / uint32 / uint64 / sint32 / sint64 / bool / enum
164-bitfixed64 / sfixed64 / double
2length-delimitedstring / bytes / nested messages / packed repeated fields
3start groupgroup (deprecated, legacy proto2)
4end groupgroup end marker (deprecated)
532-bitfixed32 / sfixed32 / float

gRPC framing format

framing
+---------------+-------------------------------+-------------------------------+
| 1 byte        | 4 bytes (big-endian)          | N bytes                       |
| compression   | message length                | message payload (protobuf)    |
| flag          |                               |                               |
| 0=identity    |                               |                               |
| 1=compressed  |                               |                               |
+---------------+-------------------------------+-------------------------------+

When parsing as gRPC frames, the tool removes the 5-byte prefix from each frame and decodes the payload separately. Compressed frames (flag 1) are reported but not decompressed.