# 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://github.com/tonda-kriz/simple-protobuf
*   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)
