Skip to content

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
Step-by-step guide: how to use quic-goInstall, first run, examples, tips and FAQs

How to get it

  1. 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. 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. 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

ProjectStarsTypeLevelUpdatedBest for
quic-go (this)11.8kLibraryadvanced4 days agoGo developers building servers or clients that need QUIC or HTTP/3
kcp17kLibraryadvanced5 months agoDevelopers building their own UDP-based protocol who need reliable delivery
hysteria22.8kAppintermediate10 days agoPeople on networks with heavy packet loss who want a faster proxy connection
gost18.3kCLIintermediate2 months agoDevelopers who want a single binary to run a local or remote SOCKS5 or HTTP proxy
go-zero33.4kLibraryintermediate5 days agoGo developers building REST APIs or microservices
kit27.4kLibraryadvanced2.3 years agoGo 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.