docs/third_party.md in the repository.
Language runtimes
Google ships official runtimes for C++, Java, Python, Go, C#, Ruby, PHP, Objective-C, and Rust. The projects below provide support for additional languages or alternative implementations.C and C++
C and C++
- protobuf-c — Pure C runtime
- nanopb — Small code-size C implementation for embedded systems
- pbc — C library focused on performance
- upb — Micro protobuf library in C
- protobluff — C implementation
- pbtools — C code generator
- simple-protobuf — Alternative C++ implementation
- EmbeddedProto — C++ for embedded targets
- struct2x — C++ struct serialization
C# / .NET
C# / .NET
- protobuf-csharp-port
- silentorbit/protobuf
- protobuf-net — C#/.NET/WCF/VB
Clojure and ClojureScript
Clojure and ClojureScript
- clojure-protobuf
- clojusc/protobuf
- protojure
- clojobuf — supports both Clojure and ClojureScript
Dart
Dart
- dart-protobuf — runtime library
- dart-protoc-plugin — code generator
Elixir
Elixir
Go (alternative)
Go (alternative)
- golang/protobuf — Google-official Go implementation
- gopbuf
- gogo/protobuf
Haskell
Haskell
- hprotoc
- proto-lens — Google-unofficial
- proto3-suite (generator) + proto3-wire (serializer)
Java (alternative) and Kotlin
Java (alternative) and Kotlin
- Wire — Java/Android from Square
- QuickBuffers — high-performance Java
- kroto-plus — Kotlin
- kotlinx.serialization — Kotlin
- sisyphus — Kotlin
- protokt — Kotlin
- pbandk — Kotlin Multiplatform
JavaScript and TypeScript
JavaScript and TypeScript
- ProtoBuf.js
- node-protoc-plugin — Node.js port of
plugin.h - sisyphus-js
- ts-protoc-gen
- protoc-gen-ts
- pbkit
Julia
Julia
Objective-C
Objective-C
Ruby (alternative)
Ruby (alternative)
Scala
Scala
Other languages
Other languages
- Action Script: protobuf-actionscript3, protoc-gen-as3
- Ada: protobuf (reznikmm)
- Common Lisp: protobuf (brown), cl-protobuf
- Elm: elm-protobuf
- GDScript: godobuf — Godot v3 plugin
- GopherJS: protobuf (johanbrandhorst)
- Haxe: protoc-gen-haxe
- Perl: Google::ProtocolBuffers, Google::ProtocolBuffers::Dynamic
- Prolog: SWI-Prolog protobufs
- Purescript: purescript-protobuf
- Python (alternative): eigenein/protobuf, python-betterproto
- R: RProtoBuf
- Solidity: pb3-gen-sol
- Vala: protobuf-vala
- Zig: zig-protobuf
RPC implementations
gRPC is Google’s official RPC framework for Protocol Buffers. The following projects provide alternative or complementary RPC support.gRPC
Google-official implementation for C++, Node.js, Python, Ruby, Objective-C, PHP, and C#.
Twirp
Simple RPC framework supporting multiple languages.
ZeroC Ice
Multi-language RPC middleware.
protojure
gRPC and protobuf for Clojure.
elixir-grpc
gRPC implementation for Elixir.
gRPC-haskell
Haskell bindings for gRPC.
grpc-federation
Generate a gRPC server from custom proto options.
icerpc-csharp
Modern RPC framework for C#.
Build integrations
Bazel
Bazel
- rules_closure — JavaScript (Closure)
- rules_go — Go
- rules_protobuf — Java, C++, C#, Go, JS, Python, Ruby
Maven
Maven
Gradle and sbt
Gradle and sbt
- protobuf-gradle-plugin
- sbt-cppp — sbt plugin
IDE and editor plugins
VS Code proto3
Syntax highlighting and IntelliSense for
.proto files in Visual Studio Code.IntelliJ Protobuf Editor
IDEA plugin for editing
.proto files.IntelliJ Protobuf Plugin
Alternative JetBrains IDE plugin with extended language support.
Visual Studio Language Service
Protocol Buffers language service for Visual Studio.
Eclipse editor
Eclipse editor for
.proto files (from Google).TextMate bundle
Syntax highlighting bundle for TextMate.
Documentation generators
- protoc-gen-doc — Generates Markdown, HTML, DocBook, and JSON documentation from
.protofiles - protoc-gen-docbook — DocBook generator
Utilities
Linting and validation
Linting and validation
- protoc-gen-lint — Linter for
.protofiles - protolint — Enforce style and conventions
- super-linter — Protocol Buffer lint as a GitHub Action
- Protolock — Prevent backward-incompatible changes to
.protofiles
Code generation helpers
Code generation helpers
- protoc-gen-fieldmask — Generate static-type fieldmask paths
- protoc-gen-bq-schema — Generate BigQuery schema files
- Proto Boiler — Generate boilerplate from
.protofiles using templates - node-protoc-plugin — Write protoc plugins in Node.js
- go-protoparser — Parse
.protofiles in Go - rubberbuf — Transpile protobuf into AST (Clojure/ClojureScript)
JSON and alternate encodings
JSON and alternate encodings
- protobuf-java-format — JSON, XML, HTML encodings for Java protobufs
- protobuf-codec — Another JSON encoder/decoder for Java
- pbjson — C++ JSON serialization/deserialization
- py-pb-converters — Python scripts to convert between protobuf and JSON
- protobuf-decoder-explainer — Web tool to decode and explain binary protobuf payloads
Testing and schema management
Testing and schema management
- hypothesis-protobuf — Property-based testing utility for Python/Hypothesis
- protobuf_spec — RSpec matchers and Cucumber step definitions
- protobuf-dynamic — Dynamic schema creation (Java)
- protoc-jar — Multi-platform executable JAR and Java API for
protoc - protobuf-el — Java EE7 Expression Language parser and builder
- ProfaneDB — A Protocol Buffers database
Network tools
Network tools
- Wireshark/Ethereal plugin — Packet sniffer plugin for decoding protobuf messages
- protobuf-nginx — Protobuf support for nginx