Guide · Open source
How to use quic-go: install and build QUIC in Go
Updated · written with AI from the project's own documentation and checked against our catalogue data
quic-go is a Go library that implements the QUIC transport protocol and supports HTTP/3. It is meant for Go developers who want to add QUIC or HTTP/3 to their own clients, servers, proxies or tunnels. After this guide you will know what the project covers, how to add it to a Go module, and which related projects to look at for WebTransport or CONNECT-UDP.
Quick start
- 1Confirm your Go setup. Make sure you have a Go environment and a Go module for your project. The README names Go as the only prerequisite.
- 2Add the library. Run go get github.com/quic-go/quic-go from your module directory to add the dependency.
- 3Read the docs. Open quic-go.net/docs and the pkg.go.dev reference to learn the API for clients and servers.
- 4Pick HTTP/3 or plain QUIC. Decide whether your program needs raw QUIC streams or HTTP/3, and follow the matching examples in the docs.
- 5Add related projects if needed. If you need WebTransport, CONNECT-UDP or CONNECT-IP, add webtransport-go, masque-go or connect-ip-go alongside quic-go.
- 6Test with qlog if needed. If you need to debug protocol behaviour, look into qlog event logging as described in the docs.
What quic-go is and what it covers
quic-go is an implementation of the QUIC protocol in Go, specified by RFC 9000, RFC 9001 and RFC 9002. The README describes it as a pure Go implementation.
Beyond the core transport, the README lists related specifications it covers, including the Unreliable Datagram Extension (RFC 9221), QUIC Version 2 (RFC 9369), and QUIC event logging with qlog. It also states that quic-go supports HTTP/3 (RFC 9114), along with QPACK (RFC 9204), Extensible Prioritization (RFC 9218) and HTTP Datagrams (RFC 9297).
Install quic-go in a Go module
quic-go is a library, so you add it to an existing Go module rather than installing a standalone program. The README gives this install command. Go is the only stated prerequisite; the README does not name a specific Go version except that FIPS 140-3 mode requires Go 1.26 or newer.
- Make sure your project is a Go module.
- Run the command below from the module directory.
- Import github.com/quic-go/quic-go in your Go code.
go get github.com/quic-go/quic-goBuild a QUIC or HTTP/3 client or server
The source material confirms that quic-go is used to build QUIC clients and servers inside Go programs. It does not include a full code example, so consult the project documentation at quic-go.net/docs and the package reference on pkg.go.dev for API usage.
If you need HTTP/3 specifically, the README says quic-go supports it. Check the docs for the exact setup that fits your program.
Use related projects for WebTransport, CONNECT-UDP and CONNECT-IP
The README lists separate projects built on quic-go. webtransport-go implements WebTransport over HTTP/3, masque-go implements CONNECT-UDP (RFC 9298), and connect-ip-go implements CONNECT-IP (RFC 9484).
Use these when your program needs those protocols instead of plain QUIC or HTTP/3.
- webtransport-go: WebTransport over HTTP/3
- masque-go: CONNECT-UDP
- connect-ip-go: CONNECT-IP
Debug with qlog
The README lists QUIC Event Logging using qlog as a supported extension. Projects that want to inspect protocol behaviour can use this format for debugging. The source does not describe the logging API, so check the docs for how to enable it.
What people use it for
- Adding QUIC or HTTP/3 support to a Go web server
- Writing a reverse tunnel or proxy in Go over QUIC
- Building a Go client that talks to QUIC servers
- Debugging QUIC connections by logging events in qlog format
- Adding WebTransport over HTTP/3 with the related webtransport-go project
Frequently asked questions
Is quic-go free to use?
quic-go is released under the MIT licence, as stated in the project information. Check the LICENSE file in the repository for the full terms.
Do I need to install quic-go as a program?
No. quic-go is a library. You add it to a Go module with go get github.com/quic-go/quic-go and call it from your code. The README does not present it as a standalone application.
What do I need before installing quic-go?
You need Go. The README does not state a specific Go version, except that FIPS 140-3 mode requires Go 1.26 or newer.
Does quic-go support HTTP/3?
Yes. The README says quic-go supports HTTP/3 as defined in RFC 9114, with related specifications such as QPACK and HTTP Datagrams.
How does quic-go compare with Go's net/http?
The source does not compare them in detail. It notes that HTTP/3 support in Go net/http depends on the Go version and is not covered in this README. Check the Go documentation for current net/http behaviour.
Where can I get help if something does not work?
The README points to detailed documentation at quic-go.net/docs. The source does not list a troubleshooting guide or support channel, so start with the docs and the pkg.go.dev reference.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
quic-go is a good fit for Go developers who need QUIC, HTTP/3, or related protocols inside their own programs. If you want a ready-to-run application, or you do not work in Go, pick a different tool. Read the docs at quic-go.net before committing, since this README does not include a full API example.
Install options & downloads