Hacker ApprovedDepartments

Protocol Buffers (protobuf)

The most recommended of 9 serialization formats

Schema-based binary format with compatible changes, compact messages and generated code in many languages. Critics cite language design flaws and that messages need the schema to read.

Schema-based binary format with compatible changes, compact messages and generated code in many languages. Critics cite language design flaws and that messages need the schema to read.

143 people gave an opinion

recommend it
77
criticize it
66
approval share
54%
Each figure is one person. RecommendsCriticizes

Recommended in 10 of 13 months

  1. November 2025: recommended
  2. December 2025: recommended
  3. January 2026: recommended
  4. February 2026: recommended
  5. March 2026: recommended
  6. April 2026: recommended
  7. May 2026: recommended
  8. June 2026: not recommended
  9. July 2026: recommended
  10. August 2026: recommended
  11. September 2026: recommended
  12. October 2026: not recommended
  13. November 2026: not recommended (month in progress)

Owned for 10 years

Median of the 3 owners who said how long they have had it.

Each square is one year.

Why it doesn’t carry the badge

  • 77 people recommend itNeeds 10 or more, met.
  • 1.1 recommenders for every criticNeeds 2 to 1 or better, not met.
  • Recommended in 10 of 13 monthsNeeds 4 or more, met.

The same three rules apply to every product, and the badge can’t be bought. How the badge works

What people say about it

The reasons people give, with the number of comments that give each one. Open a reason to read what they said.

Why people recommend it

Each mark is one comment

  • Compatible changes without breaking clients

    “This is one of the core strengths of protobuf. Non-destructive protobuf changes, such as adding new API methods or new fields, do not require clients to update.”

    Comment from 14 Dec 2025 in “Why Twilio Segment moved from microservices back to a monolith”

    “protobuf has compatibility built in and you do not need to write anything to support outdated clients”

    Comment from 20 Apr 2026 in “Zero-copy protobuf and ConnectRPC for Rust”

    “how neat and well-designed the wireformat is, in terms of backward/forward compatibility”

    Comment from 24 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”
  • Generates code for many languages

    “allows to generate easy to use code for parsing defined data and services for many languages and is one of the faster and less bandwidth wasting options”

    Comment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

    “LLMs already are very familiar with it, there are 100s of protoc plugin to generate code from it”

    Comment from 11 Feb 2026 in “Humanity's Last Programming Language”

    “Protobuf is fantastic because it separates the definition from the language.”

    Comment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”
  • Compact, fast binary encoding

    “allows to generate easy to use code for parsing defined data and services for many languages and is one of the faster and less bandwidth wasting options”

    Comment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

    “easy to work with, great size (esp compressed), random access, close-to-optimal parsing, extensible”

    Comment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

    “Protobuf simply encode things way more efficient that JSON can define a single object.”

    Comment from 16 Aug 2026 in “Protobuf has LSP support. You're welcome”
  • Strict schema catches errors early

    “JSON allowing you to shoot yourself in the foot will take more time and effort to fix when it's corrupting data in prod”

    Comment from 1 Dec 2025 in “Why I stopped using JSON for my APIs”

    “When you have probabilistic models generating code, strict contracts become more critical, not less.”

    Comment from 16 Aug 2026 in “Protobuf has LSP support. You're welcome”

    “I think the strict schema of Protobuf might be one of the major improvements”

    Comment from 1 Dec 2025 in “Why I stopped using JSON for my APIs”

What people warn about

Each mark is one comment

  • Language design has known flaws

    “I think the Protobuf language (which Skir is heavily influenced by) has some flaws in its core design, e.g. the enum/oneof mess”

    Comment from 9 Mar 2026 in “Show HN: Skir – A schema language I built after 15 years of Protobuf friction”

    “protobuf has accumulated enough problems that every large scale application will eventually run into a footgun or two”

    Comment from 24 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

    “protobuf, generally speaking, falls in the cleverness part, and certainly into the complexity part”

    Comment from 1 Dec 2025 in “Why I stopped using JSON for my APIs”
  • Poor for small requests and browsers

    “But it's not, so the question should be why not use it, unless you are doing browser stuff.”

    Comment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

    “It’s actually not well designed for small requests, and doesn’t even deal with versioning all that well.”

    Comment from 12 Jul 2026 in “Protobuf-py: Protobuf for Python, without compromises”

Other serialization formats people recommend

The four most recommended other serialization formats, with the same counts for each, so you can compare like for like. The tick on each bar marks the 2 to 1 line the badge needs.

Protocol Buffers (protobuf) compared with 4 alternatives
ProductRecommendCriticizeApprovalMonthsOwnedBadge
Protocol Buffers (protobuf)This page776654%1010 yrs3 owners—
Serde221658%10——
Cap'n Proto20580%7—Approved
Protobuf192543%8——
FlatBuffers16480%5—Approved
See all 9 serialization formats, ranked

What people said

40 of the 176 comments that mention it, newest first. Each links to the original comment.

“Sloppy open-domain protobuf field presence, enum values, whatever are illusory extension points.”

CriticizesComment from 22 Oct 2026 in “Rust Style Guide”

“The role MCP, OpenAPI, and JSON schema fill all would be a million times simpler if they were based on protobuf”

RecommendsComment from 17 Aug 2026 in “Protobuf has LSP support. You're welcome”

“an advantage of protobuf is that proto files are hand-writeable, and therefore having an LSP for that could be useful”

MixedComment from 16 Aug 2026 in “Protobuf has LSP support. You're welcome”

“Protobuf simply encode things way more efficient that JSON can define a single object.”

RecommendsComment from 16 Aug 2026 in “Protobuf has LSP support. You're welcome”

“being able to avoid tests between different systems who have different versions of the schema is a core goal of protobuf”

RecommendsComment from 16 Aug 2026 in “Protobuf has LSP support. You're welcome”

“The protobuf language is not great, but it's about the right balance between too expressive and too restricting.”

RecommendsComment from 16 Aug 2026 in “Protobuf has LSP support. You're welcome”

“When you have probabilistic models generating code, strict contracts become more critical, not less.”

RecommendsComment from 16 Aug 2026 in “Protobuf has LSP support. You're welcome”

“If you have a tiny bit of doubt, use a binary alternative that supports it”

RecommendsComment from 23 Jul 2026 in “MemoryPack: Zero encoding extreme performance binary serializer for C#”

“It’s actually not well designed for small requests, and doesn’t even deal with versioning all that well.”

CriticizesComment from 12 Jul 2026 in “Protobuf-py: Protobuf for Python, without compromises”

“Protobuf isn't self-documenting, so if you don't have the schema files, you can't interpret the messages”

MixedComment from 12 Jul 2026 in “Protobuf-py: Protobuf for Python, without compromises”

“it's already demonstrated its ability to ship extremely reliable software with multi-decade lifespans”

MixedComment from 12 Jul 2026 in “Protobuf-py: Protobuf for Python, without compromises”

“For performance critical data you can also use something like protobuf, but it would be a huge pain to handle everything that way.”

MixedComment from 8 May 2026 in “GeoJSON”

“protobuf has compatibility built in and you do not need to write anything to support outdated clients”

RecommendsComment from 20 Apr 2026 in “Zero-copy protobuf and ConnectRPC for Rust”

“those libraries will easily and efficiently do the work just as well, probably better”

RecommendsComment from 7 Apr 2026 in “Why your new computer is SLOWER than your OLD computer [video]”

“I think the Protobuf language (which Skir is heavily influenced by) has some flaws in its core design, e.g. the enum/oneof mess”

MixedComment from 9 Mar 2026 in “Show HN: Skir – A schema language I built after 15 years of Protobuf friction”

“I like Protobuf much better because I think using field numbers for field identity”

RecommendsComment from 8 Mar 2026 in “Show HN: Skir – A schema language I built after 15 years of Protobuf friction”

“Forward and backward compatibility are one of the wonderful things about protobufs.”

RecommendsComment from 14 Feb 2026 in “gRPC: From service definition to wire format”

“LLMs already are very familiar with it, there are 100s of protoc plugin to generate code from it”

RecommendsComment from 11 Feb 2026 in “Humanity's Last Programming Language”

“how neat and well-designed the wireformat is, in terms of backward/forward compatibility”

RecommendsComment from 24 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

“Other systems like CORBA or Protocol Buffers missed some of the components or did not have a well-defined standard”

MixedComment from 24 Jan 2026 in “The Lost Art of XML”

“protobuf has accumulated enough problems that every large scale application will eventually run into a footgun or two”

CriticizesComment from 24 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

“I don't see Protobuf going away, because in non-performance critical cases, it is more ergonomic across the different bindings”

RecommendsComment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

“But it's not, so the question should be why not use it, unless you are doing browser stuff.”

RecommendsComment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

“Protobuf does something important that copying memory cannot do: a protocol that can be changed separately on either end”

RecommendsComment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

“easy to work with, great size (esp compressed), random access, close-to-optimal parsing, extensible”

RecommendsComment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

“Having a way to describe your whole API and generate bindings is a godsend.”

RecommendsComment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

“Protobuf is fantastic because it separates the definition from the language.”

RecommendsComment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

“In most languages protobuf is eaiser because it generates the boilerplate.”

RecommendsComment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

“allows to generate easy to use code for parsing defined data and services for many languages and is one of the faster and less bandwidth wasting options”

RecommendsComment from 23 Jan 2026 in “Replacing Protobuf with Rust to go 5 times faster”

“Forwards and backwards compatibility is well-specified across clients in all languages.”

RecommendsComment from 27 Dec 2025 in “Always Bet on Text”

“it is extremely easy to make a non-breaking change to the communication channel”

RecommendsComment from 14 Dec 2025 in “Why Twilio Segment moved from microservices back to a monolith”

“This is one of the core strengths of protobuf. Non-destructive protobuf changes, such as adding new API methods or new fields, do not require clients to update.”

RecommendsComment from 14 Dec 2025 in “Why Twilio Segment moved from microservices back to a monolith”

“the en/de-coding speed is more important than the packet size in many situations”

RecommendsComment from 2 Dec 2025 in “Why I stopped using JSON for my APIs”

“it's slightly annoying that both ends have to agree on how to serialize rather than protobuf itself doing it”

MixedComment from 2 Dec 2025 in “Why I stopped using JSON for my APIs”

“why spend an extra 15 mins on protobuf every other day, when you can put off the 3-month JSON-revisiting project forever?”

RecommendsComment from 1 Dec 2025 in “Why I stopped using JSON for my APIs”

“JSON allowing you to shoot yourself in the foot will take more time and effort to fix when it's corrupting data in prod”

RecommendsComment from 1 Dec 2025 in “Why I stopped using JSON for my APIs”

“One of the best parts of Protobuf is that there's a fully compatible JSON serialization and deserialization spec”

RecommendsComment from 1 Dec 2025 in “Why I stopped using JSON for my APIs”

“protobuf, generally speaking, falls in the cleverness part, and certainly into the complexity part”

CriticizesComment from 1 Dec 2025 in “Why I stopped using JSON for my APIs”

“I think the strict schema of Protobuf might be one of the major improvements”

RecommendsComment from 1 Dec 2025 in “Why I stopped using JSON for my APIs”

“the generated code for protobuf serialization (which I have read) is pretty readable”

RecommendsComment from 16 Nov 2025 in “When did people favor composition over inheritance?”

Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.