Protobuf Decoder
Decode a protobuf message from hex or base64. Add a .proto schema to get named fields in the proto3 JSON format, or leave it out to inspect the raw wire fields.
Accepts up to 200,000 characters of hex or base64 (at most 500,000 bytes) and a schema of up to 100,000 characters. Decoding runs in your browser. The download is a JSON report. Hex digits (spaces allowed) or standard base64. Up to 200,000 characters. Review the settings before running.
Your result
How to use Protobuf Decoder
- Paste the message bytes as hex or base64.
- Optionally paste the .proto schema and the message type.
- Run the decoder.
- Review the decoded fields and download the JSON report.
Useful next steps
Accepts up to 200,000 characters of hex or base64 (at most 500,000 bytes) and a schema of up to 100,000 characters. Decoding runs in your browser. The download is a JSON report.
With a schema
Fields are named with their JSON names. 64-bit integers are strings, bytes are base64, enums use their value names, and repeated fields accept packed and unpacked encodings. A message field sent several times is merged, as protobuf parsers do. Fields the schema does not define are listed as unknown.
Without a schema
Every field is shown with its number and wire type, with each possible reading: unsigned, signed and zigzag integers, fixed-size numbers, text when the bytes are valid UTF-8, and a nested message when the bytes parse as one.
Limits
The schema parser covers proto2 and proto3 messages, enums, oneof, maps, nested types and reserved ranges in one file. Imports, groups, extensions and editions are not supported. Malformed bytes are rejected rather than partly decoded.