jarvisbox

Decode gRPC Message Body Without Schema

gRPC frames a protobuf message inside a 5-byte header. The Protobuf Decoder handles the raw payload — paste the message bytes (after stripping the frame header) to inspect fields without a schema.

Every gRPC message is prefixed with a 5-byte framing header: 1 byte for the compression flag (00 = uncompressed, 01 = compressed) followed by 4 bytes for the message length in big-endian. The actual protobuf payload starts at byte 6.

When you capture gRPC traffic in Chrome DevTools, Wireshark, or a proxy like mitmproxy, you typically see the raw bytes including the 5-byte header. To decode just the message, skip those first 5 bytes and paste the remainder into the Protobuf Decoder.

How to decode a gRPC message body

  1. Capture the gRPC binary frame (e.g., from Chrome DevTools → Network → select the gRPC call → Binary Framing tab, or from Wireshark). Copy the hex or Base64 representation.
  2. Strip the first 5 bytes (the framing header). In hex, remove the first 10 characters. In Base64, the header is harder to identify — it's easier to copy from a tool that separates the payload.
  3. Paste the remaining bytes (the raw protobuf payload) into the Protobuf Decoder and click Decode. If the flag byte was 01, also enable gzip decompression by selecting the compressed bytes including the gzip header.

Related decode variants

回報這個工具的問題