Third-Party Add-ons for Protocol Buffers

This page lists code related to Protocol Buffers which is developed and maintained by third parties. You may find this code useful, but note that these projects are not affiliated with or endorsed by Google (unless explicitly marked); try them at your own risk. Also note that many projects here are in the early stages of development and not production-ready.

If you have a project that should be listed here, please send us a pull request to update this page.

Programming Languages

These are projects we know about implementing Protocol Buffers for other programming languages:

  • Action Script: http://code.google.com/p/protobuf-actionscript3/

  • Action Script: https://code.google.com/p/protoc-gen-as3/

  • Action Script: https://github.com/matrix3d/JProtoc

  • Action Script: https://github.com/zhongfq/protobuf-as3/

  • Ada: https://github.com/reznikmm/protobuf

  • C: https://github.com/protobuf-c/protobuf-c

  • C: http://koti.kapsi.fi/jpa/nanopb/

  • C: https://github.com/cloudwu/pbc/

  • C: https://github.com/haberman/upb/wiki

  • C: https://github.com/squidfunk/protobluff

  • C: https://github.com/eerimoq/pbtools

  • C++: https://github.com/google/protobuf (Google-official implementation)

  • C++: https://EmbeddedProto.com

  • C/C++: http://spbc.sf.net/

  • C#: http://code.google.com/p/protobuf-csharp-port

  • C#: https://silentorbit.com/protobuf/

  • C#/.NET/WCF/VB: http://code.google.com/p/protobuf-net/

  • Clojure: http://github.com/ninjudd/clojure-protobuf

  • Clojure: https://github.com/clojusc/protobuf

  • Clojure: https://protojure.github.io

  • Common Lisp: http://github.com/brown/protobuf

  • Common Lisp: http://github.com/qitab/cl-protobuf

  • D: https://github.com/dcarp/protobuf-d

  • D: https://github.com/msoucy/dproto

  • D: https://github.com/opticron/ProtocolBuffer

  • Dart: https://github.com/dart-lang/dart-protobuf (runtime) https://github.com/dart-lang/dart-protoc-plugin (code generator)

  • Delphi: http://sourceforge.net/projects/protobuf-delphi/

  • Delphi: http://fundementals.sourceforge.net/dl.html

  • Elixir: https://github.com/jeremyong/exprotoc

  • Elixir: https://github.com/tony612/protobuf-elixir

  • Elixir: https://github.com/ahamez/protox

  • Elm: https://github.com/tiziano88/elm-protobuf

  • Erlang: https://github.com/tomas-abrahamsson/gpb

  • Erlang: http://piqi.org/

  • Erlang: https://github.com/basho/erlang_protobuffs (no longer maintained, use gpb instead)

  • Hacklang/HHVM: https://github.com/y3llowcake/proto-hack

  • GDScript: https://github.com/oniksan/godobuf (Godot v3 engine plugin)

  • Go: https://github.com/golang/protobuf (Google-official implementation)

  • Go: https://github.com/akunspy/gopbuf

  • Go: https://github.com/gogo/protobuf

  • GopherJS: https://github.com/johanbrandhorst/protobuf

  • Haskell: http://hackage.haskell.org/package/hprotoc

  • Haskell: https://github.com/google/proto-lens (Google-unofficial implementation)

  • Haskell: https://github.com/awakesecurity/proto3-suite (code generator) https://github.com/awakesecurity/proto3-wire (binary serializer/deserializer)

  • Haxe: https://github.com/Atry/protoc-gen-haxe

  • Java: https://github.com/google/protobuf (Google-official implementation)

  • Java/Android: https://github.com/square/wire

  • Java: https://github.com/HebiRobotics/QuickBuffers/

  • Java ME: http://code.google.com/p/protobuf-javame/

  • Java ME: http://swingme.sourceforge.net/encode.shtml

  • Java ME: http://code.google.com/p/protobuf-j2me/

  • Javascript: http://code.google.com/p/protobuf-js/

  • Javascript: http://github.com/sirikata/protojs

  • Javascript: https://github.com/dcodeIO/ProtoBuf.js

  • Javascript: http://code.google.com/p/protobuf-for-node/

  • Javascript: http://code.google.com/p/protostuff/

  • Javascript: https://github.com/seishun/node-protoc-plugin (Node.js port of plugin.h)

  • Javascript: https://github.com/seishun/node-protoc-gen-javascript (Node.js port of the Google-official implementation)

  • Javascript: https://github.com/ButterCam/sisyphus-js

  • Julia: https://github.com/tanmaykm/ProtoBuf.jl

  • Kotlin: https://github.com/marcoferrer/kroto-plus

  • Kotlin: https://github.com/Kotlin/kotlinx.serialization

  • Kotlin: https://github.com/ButterCam/sisyphus

  • Kotlin: https://github.com/open-toast/protokt

  • Lua: http://code.google.com/p/protoc-gen-lua/

  • Lua: http://github.com/indygreg/lua-protobuf

  • Lua: https://github.com/Neopallium/lua-pb

  • Matlab: http://code.google.com/p/protobuf-matlab/

  • Mercury: http://code.google.com/p/protobuf-mercury/

  • Objective C: http://code.google.com/p/protobuf-objc/

  • Objective C: https://github.com/alexeyxo/protobuf-objc

  • OCaml: http://piqi.org/

  • Perl: http://groups.google.com/group/protobuf-perl

  • Perl: http://search.cpan.org/perldoc?Google::ProtocolBuffers

  • Perl: https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic

  • Perl/XS: http://code.google.com/p/protobuf-perlxs/

  • PHP: http://code.google.com/p/pb4php/

  • PHP: https://github.com/allegro/php-protobuf/

  • PHP: https://github.com/chobie/php-protocolbuffers

  • PHP: http://drslump.github.com/Protobuf-PHP

  • Prolog: http://www.swi-prolog.org/pldoc/package/protobufs.html

  • Purescript: https://github.com/xc-jp/purescript-protobuf

  • Python: https://github.com/google/protobuf (Google-official implementation)

  • Python: https://github.com/eigenein/protobuf

  • Python: https://github.com/danielgtaylor/python-betterproto

  • R: http://cran.r-project.org/package=RProtoBuf

  • Ruby: http://code.google.com/p/ruby-protobuf/

  • Ruby: http://github.com/mozy/ruby-protocol-buffers

  • Ruby: https://github.com/bmizerany/beefcake/tree/master/lib/beefcake

  • Ruby: https://github.com/localshred/protobuf

  • Rust: https://github.com/tokio-rs/prost

  • Rust: https://github.com/stepancheg/rust-protobuf/

  • Rust: https://github.com/tafia/quick-protobuf

  • Scala: http://github.com/jeffplaisance/scala-protobuf

  • Scala: http://code.google.com/p/protobuf-scala

  • Scala: https://github.com/SandroGrzicic/ScalaBuff

  • Scala: https://scalapb.github.io

  • Solidity: https://github.com/celer-network/pb3-gen-sol

  • Swift: https://github.com/alexeyxo/protobuf-swift

  • Swift: https://github.com/apple/swift-protobuf/

  • Typescript: https://github.com/thesayyn/protoc-gen-ts

  • Typescript: https://github.com/pbkit/pbkit

  • Vala: https://launchpad.net/protobuf-vala

  • Visual Basic: http://code.google.com/p/protobuf-net/

RPC Implementations

GRPC (http://www.grpc.io/) is Google’s RPC implementation for Protocol Buffers. There are other third-party RPC implementations as well. Some of these actually work with Protocol Buffers service definitions (defined using the service keyword in .proto files) while others just use Protocol Buffers message objects.

  • https://github.com/grpc/grpc (C++, Node.js, Python, Ruby, Objective-C, PHP, C#, Google-official implementation)

  • https://zeroc.com/products/ice (Multiple languages)

  • https://github.com/protobuf-net/protobuf-net (C#/.NET/WCF/VB)

  • http://www.deltavsoft.com/doc/_external_serialization.html#Protobufs (C++)

  • https://protojure.github.io (Clojure)

  • https://code.google.com/p/protobuf-rpc-pro/ (Java)

  • https://github.com/baidu/sofa-pbrpc (C++)

  • https://github.com/madhon/protobuf-csharp-rpc (C#)

  • https://github.com/madwyn/libpbrpc (C++)

  • https://github.com/SeriousMa/grpc-protobuf-validation (Java)

  • https://github.com/elixir-grpc/grpc (Elixir)

  • https://github.com/johanbrandhorst/protobuf (GopherJS)

  • https://github.com/awakesecurity/gRPC-haskell (Haskell)

  • https://github.com/Yeolar/raster (C++)

  • https://github.com/jnordberg/wsrpc (JavaScript Node.js/Browser)

  • https://github.com/pbkit/npm-packages/blob/main/frpc-test/src/index.spec.ts (TypeScript Node.js/Browser)

  • https://github.com/ppissias/xsrpcj (Java)

  • https://github.com/twitchtv/twirp (Multiple languages)

Inactive:

  • https://launchpad.net/txprotobuf/ (Python)

  • https://github.com/modeswitch/protobuf-rpc (Python)

  • https://github.com/sdeo/protobuf-socket-rpc (Java, Python)

  • https://code.google.com/p/proto-streamer/ (Java)

  • https://code.google.com/p/server1/ (C++)

  • https://code.google.com/p/protobuf-mina-rpc/ (Python client, Java server)

  • https://code.google.com/p/casocklib/ (C++)

  • https://code.google.com/p/cxf-protobuf/ (Java)

  • https://code.google.com/p/protobuf-remote/ (C++/C#)

  • https://code.google.com/p/eneter-protobuf-serializer/ (Java/.NET)

  • https://github.com/robbinfan/claire/tree/master/protorpc (C++)

  • https://github.com/ebencheung/arab (C++)

  • https://code.google.com/p/protobuf-csharp-rpc/ (C#)

  • https://github.com/thesamet/rpcz (C++/Python, based on ZeroMQ)

  • https://github.com/w359405949/libmaid (C++, Python)

Other Utilities

There are miscellaneous other things you may find useful as a Protocol Buffers developer.