Decode Protocol Buffers wire data

Decode Protocol Buffer wire fields from binary data when the original schema is unavailable.

freeworks offlinenothing uploaded
ToolProtobuf Viewer
Input
Output

How it works

The decoder reads a varint tag, separates field number from wire type, and consumes varints, fixed-width values, or length-delimited bytes. Possible scalar, string, and nested-message interpretations are shown because wire bytes alone do not carry field names.

  • No .proto file is required for wire-level inspection.
  • Ambiguous values are presented as alternatives rather than silently typed.

Worked example

User message with id (varint) and name (string)
Decode base64-encoded Protobuf wire format data with field interpretation
Input
											CAESBUFsaWNl
										
Output
												Field number  Wire type  Wire type name          Raw value       Possible interpretations
------------  ---------  ----------------------  --------------  ------------------------------------------------------------------------
1             VARINT     VARINT                  1               uint: 1, sint (zigzag): -1, bool: true
2             LEN        LEN (length-delimited)  41 6c 69 63 65  string: "Alice", bytes: 5 bytes, packed varints: [65, 108, 105, 99, 101]
											

When to use this

gRPC captures, browser debugging, and cross-language wire-compatibility tests use this view.

Edge cases

  • A varint can represent uint, sint, enum, or bool.
  • Length-delimited bytes can be text, packed numbers, raw bytes, or a nested message.
  • Field zero and truncated fixed-width values are invalid.

References