
quic-go
A Go library implementing the QUIC transport protocol and HTTP/3, with no cgo dependency.
- Stars
- 11.8k
- Forks
- 1.7k
- Licence
- MIT
- Language
- Go
- Last update
- 4 days ago
- Type
- Library
What it is
quic-go is a Go library that implements QUIC, the transport protocol (RFC 9000, 9001, 9002) that underlies HTTP/3, along with related extensions such as datagrams and qlog event logging. Developers use it to build QUIC clients and servers inside Go programs rather than running it as a standalone application. The README describes it as pure Go.
- Add an HTTP/3 server to a Go web service
- Build a QUIC client that connects to a QUIC server
- Log connection events in qlog format for analysis
- Use the datagram extension (RFC 9221) for unreliable messages
Great for
- Go developers building servers or clients that need QUIC or HTTP/3
- Teams writing network tools, proxies, or tunnels in Go
- Projects that want to use the qlog format for protocol debugging
- Developers who need WebTransport, CONNECT-UDP, or CONNECT-IP through the related quic-go projects
Not ideal for
- People who want a ready-to-run app rather than code to integrate: the project is a library, and the README does not present a standalone program
- Developers not working in Go, since the implementation is Go-only
- Readers who need an explanation of QUIC itself: the README points to the RFCs and quic-go.net docs for that
How to get it
- 1
Install with a package manager
You'll need: Go (the README does not state a specific version beyond Go 1.26 for FIPS mode)
Add to a Go module
go get github.com/quic-go/quic-go - 2
Run it
- Install Go and create or open a Go module.
- Run go get github.com/quic-go/quic-go to add the library.
- Import the package and follow the examples at quic-go.net/docs for a basic client or server.
- Check the pkg.go.dev reference for the API you need.
- 3
Get the most out of it
- Read the documentation at quic-go.net for setup details the README does not cover
- Enable qlog output to inspect connection behavior
- Use the related projects webtransport-go, masque-go, or connect-ip-go for higher-level protocols
- Build with Go 1.26 or newer if you need FIPS 140-3 compliance, as described in FIPS140.md
Downloads
Strengths
- Listed as used by several known projects, including Caddy, Traefik, and syncthing, per the README table
- Covers many QUIC and HTTP/3 specifications and has a documented FIPS 140-3 mode for Go 1.26+
- Includes fuzzing and code coverage badges in the README, indicating active testing
Trade-offs
- Integration requires writing Go code, so it is not useful to someone who only wants to run a tool
- The README does not give performance benchmarks, so claims about speed cannot be checked from this text
- Some supported specifications are drafts (for example, the stream reset draft versions), which may change
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| quic-go (this) | 11.8k | Library | advanced | 4 days ago | Go developers building servers or clients that need QUIC or HTTP/3 |
| kcp | 17k | Library | advanced | 5 months ago | Developers building their own UDP-based protocol who need reliable delivery |
| hysteria | 22.8k | App | intermediate | 10 days ago | People on networks with heavy packet loss who want a faster proxy connection |
| gost | 18.3k | CLI | intermediate | 2 months ago | Developers who want a single binary to run a local or remote SOCKS5 or HTTP proxy |
| go-zero | 33.4k | Library | intermediate | 5 days ago | Go developers building REST APIs or microservices |
| kit | 27.4k | Library | advanced | 2.3 years ago | Go developers building service-oriented or microservice backends |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.