# Protocol Buffers

Protocol Buffers - Google's data interchange format

Repository: https://github.com/protocolbuffers/protobuf
Canonical: https://ross.abutalabs.com/products/protocol-buffers
Homepage: http://protobuf.dev
Language: C++
License: NOASSERTION
License Family: other
Topics: protobuf, protocol-buffers, protocol-compiler, protobuf-runtime, protoc, serialization, marshalling, rpc
Last push: 2026-08-27T00:17:47+00:00

## Health v2 (maintenance only)
Score: 99/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 98, longevity 100
- inputs: {"age_days": 4390, "days_push": 7, "days_rel": 13, "gap_med": 17, "n_releases_24m": 36}
- flags: no_license
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 71825, forks 16250 (observed 2026-08-28T04:12:21.063725+00:00)

## What it is
Protocol Buffers (protobuf) is Google's language-neutral, platform-neutral mechanism for serializing structured data, comprising the protoc protocol compiler that generates code from .proto schema files and runtime libraries for many languages. It is the message format underlying gRPC and is widely used for efficient, versioned data interchange between services and storage systems.

## Use cases
- serialize structured data efficiently between services
- define a schema once and generate typed code for multiple languages
- compact binary alternative to JSON for API payloads
- evolve message formats with backward and forward compatibility
- define request and response messages for gRPC services
- exchange data between C++, Java, Python, and Go components
- store structured records in a compact binary format

## When to choose
- You need efficient, compact binary serialization with schema evolution across service versions
- You are building gRPC services or polyglot microservices that share message definitions
- You want generated, statically typed message classes from a single interface definition language

## When to avoid
- You need human-readable payloads that are easy to inspect without tooling, where JSON or YAML is simpler
- You are integrating with browsers or third parties that only accept JSON
- You have a small one-off script where a schema compiler and generated code add unnecessary overhead

## Facets
- artifact type: library
- maturity: stable
- function: serialization, compiler
- domain: apis, backend, microservices, developer-tools
- platform: cross-platform, cpp, go, c, python, jvm, cli
- tags: protobuf, protoc, protocol-buffers, grpc, idl, schema, code-generation, wire-format, marshalling, data-interchange

## Member repositories
- protocolbuffers/protobuf (main) score 99
- protocolbuffers/protobuf-go (sdk) score 98
- protocolbuffers/upb (mirror) score 10

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:12:21.063725+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T16:16:22.383805+00:00, confidence not recorded.
  - readme: https://github.com/protocolbuffers/protobuf (fetched 2026-08-28T04:12:21.063725+00:00, sha 43d2b969c342)
- Data as of 2026-08-30T08:39:29.467469+00:00.
