Parse gRPC frame headers, compression flags, message length, decode Protobuf wire format fields
Zero Dependencies Β· Works Offlineπ gRPC Message Input
What Can the gRPC Message Decoder Do?
The gRPC Message Decoder is a free online developer tool that parses gRPC message frame structure, including the 5-byte header (compression flag + message length) and Protobuf-encoded message body. It automatically decodes Protobuf wire format, showing each field's field_number, wire_type, and value. Supports recursive decoding of nested messages. Ideal for gRPC debugging, Protobuf protocol analysis, and microservice communication troubleshooting. All parsing is done locally in the browserβyour data is never uploaded to any server.
Core Features
- gRPC Frame Header Parsing: Parse the 5-byte header, showing compression flag and message length
- Protobuf Wire Format Decoding: Automatically parse varint/64-bit/32-bit/length-delimited wire types
- Nested Message Recursive Decoding: Wire type 2 fields automatically attempt recursive decoding of nested messages
- Multi-format Input: Supports both hexadecimal and Base64 input formats
- Compression Detection: Automatically detects GZIP compression flag
Usage Tutorial
1. Select input format (hex or Base64) and paste gRPC message data.
2. Click "Decode" or use the Ctrl+Enter shortcut.
3. View the detailed parsing results for the gRPC frame header and Protobuf fields.
4. Click "Copy Result" to copy the parsed results or download as a JSON file.
Application Scenarios
Scenario 1: gRPC Debugging
Developers debugging gRPC microservice communication can capture binary data and use this tool to parse message structure and field values.
Scenario 2: Protobuf Protocol Analysis
Analyze unknown Protobuf message formats by decoding wire format to infer field types and structure.
Scenario 3: Microservice Troubleshooting
Operations teams troubleshooting gRPC inter-service communication issues can analyze message frames to locate data anomalies.
Extended Knowledge
gRPC uses HTTP/2 as the transport layer, with messages transmitted in Length-Prefixed Message format: 1-byte compression flag (0=uncompressed, 1=GZIP compressed) + 4-byte message length (big-endian) + message body. The message body uses Protocol Buffers encoding, where each field consists of a tag (field_number<<3|wire_type) and value. Wire type definitions: 0=Varint (int32/int64/bool/enum), 1=64-bit (fixed64/sfixed64/double), 2=Length-delimited (string/bytes/nested messages), 5=32-bit (fixed32/sfixed32/float). Varint encoding uses 7-bit groups + MSB continuation flag, providing high encoding efficiency for small values.