# 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](https://github.com/protocolbuffers/protobuf/pulls) to update this page.

## Programming Languages

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

*   Action Script: https://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: https://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/protocolbuffers/protobuf (Google-official
    implementation)
*   C++: https://EmbeddedProto.com
*   C++: https://github.com/yksten/struct2x
*   C/C++: http://spbc.sf.net/
*   C#: https://code.google.com/p/protobuf-csharp-port
*   C#: https://silentorbit.com/protobuf/
*   C#/.NET/WCF/VB: https://code.google.com/p/protobuf-net/
*   Clojure: http://github.com/ninjudd/clojure-protobuf
*   Clojure: https://github.com/clojusc/protobuf
*   Clojure: https://protojure.readthedocs.io
*   Clojure: https://github.com/s-expresso/clojobuf
*   ClojureScript: https://github.com/s-expresso/clojobuf
*   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: https://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/protocolbuffers/protobuf (Google-official
    implementation)
*   Java/Android: https://github.com/square/wire
*   Java: https://github.com/HebiRobotics/QuickBuffers/
*   Java ME: https://code.google.com/p/protobuf-javame/
*   Java ME: http://swingme.sourceforge.net/encode.shtml
*   Javascript: https://code.google.com/p/protobuf-js/
*   Javascript: http://github.com/sirikata/protojs
*   Javascript: https://github.com/dcodeIO/ProtoBuf.js
*   Javascript: https://code.google.com/p/protobuf-for-node/
*   Javascript: https://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/JuliaIO/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
*   Kotlin Multiplatform: https://github.com/streem/pbandk
*   Lua: https://code.google.com/p/protoc-gen-lua/
*   Lua: http://github.com/indygreg/lua-protobuf
*   Lua: https://github.com/Neopallium/lua-pb
*   Matlab: https://code.google.com/p/protobuf-matlab/
*   Mercury: https://code.google.com/p/protobuf-mercury/
*   Objective C: https://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: https://metacpan.org/pod/Google::ProtocolBuffers
*   Perl: https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic
*   Perl/XS: https://code.google.com/p/protobuf-perlxs/
*   PHP: https://code.google.com/p/pb4php/
*   PHP: https://github.com/allegro/php-protobuf/
*   PHP: https://github.com/chobie/php-protocolbuffers
*   Protobuf: https://github.com/mycroftjr/protoc-gen-proto
*   Prolog: http://www.swi-prolog.org/pldoc/package/protobufs.html
*   Purescript: https://github.com/xc-jp/purescript-protobuf
*   Python: https://github.com/protocolbuffers/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: https://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: https://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: https://code.google.com/p/protobuf-net/
*   Zig: https://github.com/Arwalk/zig-protobuf

## 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)
*   https://github.com/icerpc/icerpc-csharp (C#)
*   https://philips-software.github.io/amp-embedded-infra-lib (C++, C#, Java)

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)

## Build

*   [Bazel Build](https://bazel.build)
    *   [rules_closure](https://github.com/bazelbuild/rules_closure)
        `js-closure`
    *   [rules_go](https://github.com/bazelbuild/rules_go) `go`
    *   [rules_protobuf](https://github.com/pubref/rules_protobuf) `java` `c++`
        `c#` `go` `js-closure` `js-node` `python` `ruby`
*   Maven Protobuf Compiler Plugin
    *   By xolstice.org
        ([Documentation](https://www.xolstice.org/protobuf-maven-plugin/))
        ([Source](https://github.com/xolstice/protobuf-maven-plugin/))
        [![Maven Central](https://img.shields.io/maven-central/v/org.xolstice.maven.plugins/protobuf-maven-plugin.svg)](https://repo1.maven.org/maven2/org/xolstice/maven/plugins/protobuf-maven-plugin/)
    *   https://code.google.com/p/maven-protoc-plugin/
    *   https://github.com/os72/protoc-jar-maven-plugin
    *   https://ascopes.github.io/protobuf-maven-plugin
*   [Protobuf Plugin for Gradle](https://github.com/google/protobuf-gradle-plugin)
*   [Sbt plugin for Protocol Buffers](https://github.com/Atry/sbt-cppp)

## IDE

*   [Visual Studio Code Support for Protocol Buffers](https://marketplace.visualstudio.com/items?itemName=zxh404.vscode-proto3)
*   [Visual Studio Language Service support for Protocol Buffers](http://visualstudiogallery.msdn.microsoft.com/4bc0f38c-b058-4e05-ae38-155e053c19c5)
*   [IntelliJ IDEA plugin](http://github.com/jvolkman/intellij-protobuf-editor)
*   [IntelliJ Protobuf Plugin](https://github.com/devkanro/intellij-protobuf-plugin)
*   [TextMate syntax highlighting](http://github.com/michaeledgar/protobuf-tmbundle)
*   [Notepad++ Syntax Highlighting for .proto files](https://github.com/chai2010/notepadplus-protobuf)
*   [Eclipse editor for protobuf (from Google)](https://code.google.com/p/protobuf-dt/)
*   [NetBeans IDE plugin](https://code.google.com/p/protobuf-netbeans-plugin/)
*   [Editor for serialized protobufs](https://code.google.com/p/protobufeditor/)

## Documentation

*   [Documentation generator plugin (Markdown/HTML/DocBook/...)](https://github.com/pseudomuto/protoc-gen-doc)
*   [DocBook generator for .proto files](https://code.google.com/p/protoc-gen-docbook/)

## Other Utilities

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

*   [Wireshark/Ethereal packet sniffer plugin](https://code.google.com/p/protobuf-wireshark/)
*   [Alternate encodings (JSON, XML, HTML) for Java protobufs](https://code.google.com/p/protobuf-java-format/)
*   [Another JSON encoder/decoder for Java](https://github.com/sijuv/protobuf-codec)
*   [Oracle PL SQL plugin](https://code.google.com/p/protocol-buffer-plsql/)
*   [C++ Builder compatible protobuf](https://github.com/saadware/protobuf-cppbuilder)
*   [Protobuf for nginx module](https://github.com/dbcode/protobuf-nginx/)
*   [RSpec matchers and Cucumber step defs for testing Protocol Buffers](https://github.com/connamara/protobuf_spec)
*   [Multi-platform executable JAR and Java API for protoc](https://github.com/os72/protoc-jar)
*   [Python scripts to convert between Protocol Buffers and JSON](https://github.com/NextTuesday/py-pb-converters)
*   [C++ library for serialization/de-serialization between Protocol Buffers and
    JSON.](https://github.com/yinqiwen/pbjson)
*   [ProtoBuf with Java EE7 Expression Language 3.0; pure Java ProtoBuf Parser
    and Builder.](https://github.com/protobufel/protobuf-el)
*   [Linter for .proto files](https://github.com/ckaznocha/protoc-gen-lint)
*   [Protocol Buffers Dynamic Schema - create protobuf schemas programmatically
    (Java)](https://github.com/os72/protobuf-dynamic)
*   [Make protoc plugins in NodeJS](https://github.com/konsumer/node-protoc-plugin)
*   [ProfaneDB - A Protocol Buffers database](https://profanedb.gitlab.io)
*   [Protocol Buffer property-based testing utility and example message
    generator (Python /
    Hypothesis)](https://github.com/CurataEng/hypothesis-protobuf)
*   [Protolock - CLI utility to prevent backward-incompatible changes to .proto
    files](https://github.com/nilslice/protolock)
*   [Optional GRPC - GRPC for testable microservices (Python)](https://github.com/mattpaletta/optional-grpc.git)
*   [Protobuf Parser - Yet another Go package which parses a Protocol Buffer
    file (proto2+proto3)](https://github.com/yoheimuta/go-protoparser)
*   [Protolint - A tool to enforce Protocol Buffer style and conventions.](https://github.com/yoheimuta/protolint)
    *   [vscode-protolint: A protobuf linter for visual studio code](https://github.com/plexsystems/vscode-protolint)
    *   [intellij-protolint: A protobuf linter for JetBrains IDEs](https://github.com/yoheimuta/intellij-protolint)
    *   [vim-protolint: A protobuf linter for Vim](https://github.com/yoheimuta/vim-protolint)
*   [super-linter: Protocol Buffer lint as GitHub Action](https://github.com/github/super-linter)
*   [protoc-gen-fieldmask - A plugin to generate static type fieldmask paths](https://github.com/idodod/protoc-gen-fieldmask)
*   [protoc-gen-bq-schema - A protoc plugin to generate BigQuery schema files](https://github.com/GoogleCloudPlatform/protoc-gen-bq-schema)
*   [protobuf-decoder-explainer - Web page which decodes and explains pasted
    binary Protocol
    Buffers](https://github.com/jamesdbrock/protobuf-decoder-explainer)
*   [rubberbuf - dynamically transpile protobuf into AST](https://github.com/s-expresso/rubberbuf)
    `clojure` `clojurescript`
*   [clojobuf-serdes - low level serialize/deserialize library for protobuf
    binary format](https://github.com/s-expresso/clojobuf-codec) `clojure`
    `clojurescript`
*   [gRPC Federation - generates a gRPC server by writing a custom option in
    Protocol Buffers](https://github.com/mercari/grpc-federation)
*   [Proto Boiler - A plugin to generate boilerplate code from .proto files
    using templates](https://github.com/in4lio/protoboiler)
