Skip to content

Protobuf Wire Decoder

Decode Protocol Buffers wire data from binary files, hex, Base64, or Base64URL. Inspect field numbers, wire types, offsets, nested messages, and possible packed values without inventing schema names.

Inspect a Protobuf wire message

The message is parsed in a browser worker. Schema-less results preserve field numbers and show ambiguous scalar, string, bytes, packed, and nested-message interpretations explicitly.

Wire message details

Field numbers, wire types, byte ranges, possible interpretations, nested-message candidates, wire dump, and correlated hex will appear here.

Debug Protobuf bytes before you have the schema

DecodeLens keeps each tag and payload tied to its original byte range, preserves 64-bit integers exactly, and separates structural wire facts from interpretations that need a matching .proto definition.

Schema-less decoding boundaries

  • Supports all six Protobuf wire types, including deprecated start/end groups, and rejects reserved wire types 6 and 7.
  • Field names, declared scalar types, enum names, oneof membership, map semantics, defaults, and required-field rules cannot be recovered from wire bytes alone.
  • Length-delimited payloads may be strings, bytes, nested messages, or packed repeated values; candidates remain labeled as heuristic.
  • The tool parses one complete message. It does not guess external framing, gRPC envelopes, or length-prefixed message streams.
  • No remote schema, import, endpoint, or service is contacted.

Continue with tools that decode, convert, inspect, or verify the same data.

Decode a captured Protobuf payload

Paste hex or Base64 bytes, decode the message, select a field, and compare its tag and payload offsets with the highlighted source hex. Use the possible values only as leads until you have the matching .proto schema.

Protobuf hex

08 96 01 12 0A 44 65 63 6F 64 65 4C 65 6E 73…

Wire fields

1:VARINT 150
2:LEN DecodeLens
3:LEN 4 bytes · possible packed varint

Protobuf Wire Decoder FAQ

Can Protobuf be decoded without a .proto file?

Its wire structure can. Field numbers, wire types, lengths, offsets, and raw values are available, but field names and exact semantic types require the matching schema.

Why does one field have several possible values?

The same wire type represents multiple schema types. A VARINT may be uint64, int64, sint64, bool, or enum; a LEN field may be string, bytes, packed values, or another message.

Does this decode gRPC frames?

Use the gRPC / gRPC-Web Frame Inspector first. It removes frame headers, handles supported message compression, parses trailers, and passes each data payload to this wire decoder.