By Daniel Martí, Go contributor, maintainer of encoding/json, and tool author.

Users need a simple, easy-to-remember way to install Go programs. Similarly, tool authors need a short one-liner they can include at the top of their explaining how to install the tool.

Go 1.16 introduced a new way to install Go programs directly with the go command. This guide introduces the new mode of go install using the example of, and is suitable for both end users and tool authors.


You should already have completed:

This guide is running with:

$ go version
go version go1.19.1 linux/amd64

go install in Go 1.16

As of Go 1.16, the go install command is now used to install programs directly, i.e. regardless of the current module context:

$ go install
go: downloading v1.4.4
go: downloading v0.0.0-20220421235706-1d1ef9303861
go: downloading v0.2.0
go: downloading v0.3.7
go: downloading v0.0.0-20220331220935-ae2d96664a29

For the purposes of this guide you are using a specific version (v1.4.4). Alternatively, the special latest version can be used to install the latest release.

Much like the previous behaviour of go get, go install places binaries in $GOPATH/bin, or in $GOBIN if set. See the “Setting up your PATH section in Installing Go to ensure your PATH is set correctly.

Verify that mkcert is now on your PATH:

$ which mkcert

Run mkcert to check everything is working:

$ mkcert -version

You can also use go version to see the module dependencies used in building the program:

$ go version -m $(which mkcert)
/home/gopher/go/bin/mkcert: go1.19.1
	mod	v1.4.4	h1:8eVbbwfVlaqUM7OwuftKc2nuYOoTDQWqsoXmzoXZdbc=
	dep	v0.0.0-20220331220935-ae2d96664a29	h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o=
	dep	v0.0.0-20220421235706-1d1ef9303861	h1:yssD99+7tqHWO5Gwh81phT+67hg+KttniBr6UnEXOY8=
	dep	v0.3.7	h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
	dep	v0.2.0	h1:nlFkj7bTysH6VkC4fGphtjXRbezREPgrHuJG20hBGPE=

To eliminate redundancy and confusion, using go get to build or install programs is being deprecated in Go 1.16.


That’s it!

As a next step you might like to consider:

  • Retract Module Versions