Protocol Buffers
Google's language-neutral binary serialization format and schema language for structured data.
Liked for typed schemas shared across languages123 and compact, efficient data exchange.456 The most common complaints are design flaws and serializer complexity789, plus painful gRPC integration in modern stacks.1011
Why people recommend it
Cross-language schemas · 3
A single .proto schema gives typed bindings shared between languages like C# and Python.
“Protobuf makes it easy to have typed bindings in the different languages we support”
“We use protobuf between c# and Python.”
Show 1 more
“The protobuf language is not great, but it's about the right balance between too expressive and too restricting.”
Efficient exchange · 3
Commenters call it compact and well suited to data exchange.
“The protobuf language is not great, but it's about the right balance between too expressive and too restricting.”
Show 1 more
“I used protobuf for map data, but it is a hardcore simple format”
Readable text format · 2
Textproto is readable, supports comments, and works well for config files.
“we use protobuf converted to text format. It looks JSON like so very readable and comes with all the other benefits of protobuf.”
Balanced language · 1
The schema language is seen as about the right balance between too expressive and too restrictive.
“The protobuf language is not great, but it's about the right balance between too expressive and too restricting.”
Caveats and dissent
Design flaws · 3
Commenters cite hard-to-fix design flaws, an imperfect language, and overly complex serializers.
“although I think it's great, it carries a few design flaws which are hard to fix at this point”
“Protobuf is ok but if you actually look at how the serializers work, it's just too complex for what it achieves.”
Show 1 more
“The protobuf language is not great, but it's about the right balance between too expressive and too restricting.”
gRPC ecosystem · 2
Integrating gRPC from modern stacks like async Python is described as a nightmare, and the ecosystem as fumbled.
“The promise of Protobuf/gRPC for seamless communication across tech stacks just wasn't delivered.”
No safety guarantees · 2
proto3 has no required fields and version skew breaks assumptions, so clients must be written defensively.
“Protobuf clients need to be written defensively, just like JSON API clients.”
“it seems like protobuf3 fixed a lot of stuff I used to hate about protobuf2.”
Rigid schema · 1
The strict schema requirement misses many use cases where JSON thrives.
“Protobuf has advantages, but is missing support for a tons of use cases where JSON thrives due to the strict schema requirement.”
Not human-readable · 1
The binary wire format is not human-readable.
“The promise of Protobuf/gRPC for seamless communication across tech stacks just wasn't delivered.”
Who recommends it in their own words
Threads where it came up
- Why I stopped using JSON for my APIs 5 mentions
- Protobuf has LSP support. You're welcome 3 mentions
- Replacing Protobuf with Rust to go 5 times faster 2 mentions
- Redesigning source control at Anthropic 1 mention
- Do you hate XML? (2010) 1 mention
- Show HN: Skir – A schema language I built after 15 years of Protobuf friction 1 mention
Also written as Protobuf. Data: protocol-buffers.json. Quotes are verbatim; the verdict and theme labels are written by a model from these comments, and every clause links to its sources.
All comments 14
“I’ve been getting overzealous with protobuffers and service discovery as well.”
“The promise of Protobuf/gRPC for seamless communication across tech stacks just wasn't delivered.”
“We use protobuf between c# and Python.”
“The protobuf language is not great, but it's about the right balance between too expressive and too restricting.”
“Protobuf does it very well.”
“although I think it's great, it carries a few design flaws which are hard to fix at this point”
“My guess is there's more to that story than just "protobufs don't forward unknown fields" because that's not how they work be default.”
“Protobuf makes it easy to have typed bindings in the different languages we support”
“I used protobuf for map data, but it is a hardcore simple format”
“we use protobuf converted to text format. It looks JSON like so very readable and comes with all the other benefits of protobuf.”
“Protobuf clients need to be written defensively, just like JSON API clients.”
“Protobuf is ok but if you actually look at how the serializers work, it's just too complex for what it achieves.”
“it seems like protobuf3 fixed a lot of stuff I used to hate about protobuf2.”
“Protobuf has advantages, but is missing support for a tons of use cases where JSON thrives due to the strict schema requirement.”