# 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://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://silentorbit.com/protobuf/
*   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: http://swingme.sourceforge.net/encode.shtml
*   Javascript: http://github.com/bufbuild/protobuf-es
*   Javascript: http://github.com/sirikata/protojs
*   Javascript: https://github.com/dcodeIO/ProtoBuf.js
*   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: http://github.com/indygreg/lua-protobuf
*   Lua: https://github.com/Neopallium/lua-pb
*   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
*   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: 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://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: http://github.com/bufbuild/protobuf-es
*   Typescript: https://github.com/improbable-eng/ts-protoc-gen
*   Typescript: https://github.com/thesayyn/protoc-gen-ts
*   Typescript: https://github.com/pbkit/pbkit
*   Vala: https://launchpad.net/protobuf-vala
*   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://connectrpc.com (Go, Javascript, Typescript, Python, Dart, Swift,
    Kotlin)
*   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://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)
*   https://github.com/tdaira/blerpc (C/nanopb, Python, Kotlin, Swift, Dart,
    TypeScript; RPC over Bluetooth Low Energy)

Inactive:

*   https://code.google.com/p/protobuf-actionscript3/ (Action Script)
*   https://code.google.com/p/protoc-gen-as3/ (Action Script)
*   https://code.google.com/p/protobuf-csharp-port (C#)
*   https://code.google.com/p/protobuf-net/ (C#/.NET/WCF/VB)
*   https://code.google.com/p/protobuf-javame/ (Java ME)
*   https://code.google.com/p/protobuf-rpc-pro/ (Java)
*   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)
*   https://code.google.com/p/protobuf-js/ (Javascript)
*   https://code.google.com/p/protobuf-for-node/ (Javascript)
*   https://code.google.com/p/protostuff/ (Javascript)
*   https://code.google.com/p/protoc-gen-lua/ (Lua)
*   https://code.google.com/p/protobuf-matlab/ (Matlab)
*   https://code.google.com/p/protobuf-mercury/ (Mercury)
*   https://code.google.com/p/protobuf-objc/ (ObjC)
*   https://code.google.com/p/protobuf-perlxs/ (Perl/XS)
*   https://code.google.com/p/pb4php/ (PHP)
*   https://code.google.com/p/ruby-protobuf/ (Ruby)
*   https://code.google.com/p/protobuf-scala (Scala)
*   https://code.google.com/p/protobuf-net/ (Visual Basic)
*   https://code.google.com/p/protoc-gen-docbook/ (DocBook generator)

## 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

*   [Buf for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=bufbuild.vscode-buf)
*   [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)

## Other Utilities

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

*   [Buf CLI](https://buf.build/docs/cli/)
    *   [Code generation](https://buf.build/docs/generate/)
    *   [Linting](https://buf.build/docs/lint/)
    *   [Breaking change detection](https://buf.build/docs/breaking/)
    *   [Formatting](https://buf.build/docs/format/)
    *   [Calling gRPC APIs](https://buf.build/docs/curl/)
    *   [Editor integration and LSP](https://buf.build/docs/cli/editors-lsp/)
*   [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)
