Protobuf Schema Viewer

Inspect Protobuf messages and field declarations.

Open tool

Overview

The Protobuf schema viewer parses a .proto file and prints every message, enum, service, and field with its type and number. Paste the source for a service contract and immediately see the shape without compiling with protoc.

It's a fast inspection tool when reviewing a gRPC service definition, comparing two .proto versions, or sanity-checking a schema in a code review. Backend engineers and protocol designers reach for a protobuf viewer when they want to focus on structure rather than language-specific generated code.

How it works

The viewer accepts both proto2 and proto3 syntax. It parses the source — package declaration, imports, options, message and enum bodies — and produces a flat list per declaration. Field declarations show the label (required, optional, repeated), type (scalar like int32, message reference, or map<K,V>), name, and field number.

Nested messages are reported with their fully qualified name (outer.Inner). Reserved field numbers and names are shown separately so you can see what's been retired. Service definitions list each RPC with its request/response message types and any streaming markers.

Examples

syntax = "proto3";

message User {
  int64  id    = 1;
  string name  = 2;
  repeated string tags = 3;
}

service UserService {
  rpc Get (GetRequest) returns (User);
}
message User {
  1  int64           id
  2  string          name
  3  repeated string tags
}

service UserService {
  rpc Get(GetRequest) returns (User)
}

FAQ

Does it follow import statements?

No — imports are listed but not resolved, because the imported .proto files aren't available in this single-file viewer. Field types that reference imported messages are shown with their declared name.

What about proto2 extensions and groups?

Proto2 extensions are recognised and listed under their host message. Groups (deprecated since proto2) are parsed for compatibility but flagged as deprecated in the output.

Can it generate code?

No. Use protoc with the language plugin of your choice (protoc-gen-go, protoc-gen-grpc) for code generation. This viewer is for human inspection of the schema only.

Try Protobuf Schema Viewer

An unhandled error has occurred. Reload ×