View and test gRPC proto definitions — service inspection and message generation. Part of the DevTools Surf developer suite. Browse more tools in the API / Config collection.
Use Cases
Inspect a .proto definition to understand available services and message types before writing a client.
Generate sample request payloads for gRPC services to use in integration tests.
Visualize the dependency graph between message types in a complex proto file.
Compare proto definitions across service versions to identify breaking field changes.
Tips
Paste the .proto file contents directly — the viewer parses service, rpc, and message definitions and renders them as an interactive tree.
Check the field numbers in message definitions — field numbers 1-15 use 1 byte of encoding overhead vs. 2 bytes for 16-2047, so use low numbers for frequently serialized fields.
Use the test message generator to create sample JSON payloads matching each message type without writing them by hand.
Fun Facts
Protocol Buffers (protobuf) were developed at Google in 2001, predating JSON's widespread adoption. Google used them internally for years before open-sourcing them in 2008.
A protobuf-encoded message is typically 3-10x smaller than the equivalent JSON — binary encoding with varint compression removes all field names and whitespace from the wire format.
gRPC was released by Google in 2015 as an open-source successor to Stubby, their internal RPC framework. It uses HTTP/2 for transport, enabling bidirectional streaming alongside traditional request-response.
FAQ
Does it support proto2 and proto3?
Both are parsed. proto3 removed required/optional field modifiers and changed the default for missing fields. The viewer highlights syntax differences between versions.
Can I test gRPC calls directly?
The viewer generates the request structure and shows encoding, but does not execute live gRPC calls (which require HTTP/2 and TLS). Use grpcurl or Postman for live testing.
What's the difference between a service and a message?
A message is a data structure (like a class). A service is an RPC interface with methods that take message inputs and return message outputs. One proto file can define both.