Protocol Buffer Compiler Installation

How to install the protocol buffer compiler.

While not mandatory, gRPC applications often leverage Protocol Buffers for service definitions and data serialization. Most of the example code from this site uses version 3 of the protocol buffer language (proto3).

The protocol buffer compiler, protoc, is used to compile .proto files, which contain service and message definitions. Choose one of the methods given below to install protoc.

Install using a package manager

You can install the protocol compiler, protoc, with a package manager under Linux or macOS using the following commands.


Check the version of protoc (as indicated below) after installation to ensure that it is sufficiently recent. The versions of protoc installed by some package managers can be quite dated.

Installing from pre-compiled binaries, as indicated in the next section, is the best way to ensure that you’re using the latest release of protoc.

  • Linux, using apt or apt-get, for example:

    $ apt install -y protobuf-compiler
    $ protoc --version  # Ensure compiler version is 3+
  • MacOS, using Homebrew:

    $ brew install protobuf
    $ protoc --version  # Ensure compiler version is 3+

Install pre-compiled binaries (any OS)

To install the latest release of the protocol compiler from pre-compiled binaries, follow these instructions:

  1. Manually download from the zip file corresponding to your operating system and computer architecture (protoc-<version>-<os><arch>.zip), or fetch the file using commands such as the following:

    $ PB_REL=""
    $ curl -LO $PB_REL/download/v3.13.0/
  2. Unzip the file under $HOME/.local or a directory of your choice. For example:

    $ unzip -d $HOME/.local
  3. Update your environment’s path variable to include the path to the protoc executable. For example:

    $ export PATH="$PATH:$HOME/.local/bin"

Other installation options

If you’d like to build the protocol compiler from sources, or access older versions of the pre-compiled binaries, see Download Protocol Buffers.