# quic-go/quic-go

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/quic-go-quic-go).**

11,650 stars · 1,578 forks · Go · MIT

## Links

- GitHub: https://github.com/quic-go/quic-go
- Homepage: https://quic-go.net
- awesome-repositories: https://awesome-repositories.com/repository/quic-go-quic-go.md

## Topics

`go` `golang` `http3` `protocol` `qlog` `quic` `quic-client` `quic-server`

## Description

This project is a high-performance implementation of the QUIC transport protocol, providing a library for establishing multiplexed, low-latency network connections over UDP. It serves as a foundational networking stack for building modern web servers and clients, with native support for HTTP/3 and WebTransport standards.

The library distinguishes itself through advanced connection management, including the ability to maintain stable sessions across changing network paths or IP addresses using connection identifiers. It optimizes data throughput by employing packet batching to reduce kernel overhead and dynamic flow control windowing to prevent congestion. Furthermore, it supports zero-round-trip handshake resumption, allowing clients to transmit application data immediately upon reconnection by reusing cached cryptographic state.

Beyond core transport capabilities, the project provides a comprehensive suite of tools for traffic regulation, network observability, and proxying. It includes mechanisms for bidirectional and unidirectional stream management, unreliable datagram transmission, and graceful connection termination. The implementation also handles complex scenarios such as NAT rebinding recovery, path MTU discovery, and protocol version negotiation to ensure reliable communication in diverse network environments.

The library is written in Go and provides a modular API for configuring transport parameters, managing concurrent streams, and integrating with existing network clients.

## Tags

### Networking & Communication

- [Network Protocol Implementations](https://awesome-repositories.com/f/networking-communication/network-protocol-implementations.md) — Provides a high-performance library for establishing multiplexed, low-latency network connections using the QUIC transport protocol.
- [Real-time Communication Libraries](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/communication-protocols/real-time-communication-libraries.md) — Provides a framework for bidirectional, real-time data exchange between web clients and servers over secure transport protocols.
- [HTTP/3 Libraries](https://awesome-repositories.com/f/networking-communication/http-3-libraries.md) — Builds high-performance web servers and clients that use the QUIC protocol to provide multiplexed, low-latency communication for modern web applications.
- [Connection Multiplexing](https://awesome-repositories.com/f/networking-communication/connection-multiplexing.md) — Provides a toolkit for managing multiple concurrent data streams and unreliable datagrams over a single encrypted UDP connection.
- [Early Data Transmitters](https://awesome-repositories.com/f/networking-communication/low-latency-data-transmission/early-data-transmitters.md) — Transmits data to clients immediately after the initial handshake exchange to reduce latency before the full connection is established. ([source](https://quic-go.net/docs/quic/server/))
- [Connection and Session Management](https://awesome-repositories.com/f/networking-communication/network-reliability-diagnostics/connection-session-management.md) — Initiates connections to servers using modern protocols with configurable parameters and mandatory datagram support. ([source](https://quic-go.net/docs/webtransport/client/))
- [Connection Migrators](https://awesome-repositories.com/f/networking-communication/persistent-network-connections/connection-migrators.md) — Maintains active network connections during IP or port changes by using connection identifiers to ensure seamless transitions. ([source](https://quic-go.net/docs/quic/connection-migration/))
- [Real-Time Communication Protocols](https://awesome-repositories.com/f/networking-communication/real-time-communication-protocols.md) — Enables bidirectional, multiplexed streaming and unreliable datagram delivery between web clients and servers for low-latency data exchange.
- [UDP Transport Implementations](https://awesome-repositories.com/f/networking-communication/transport-layers/udp-transport-implementations.md) — Implements a custom reliable transport protocol over standard UDP to provide multiplexed streams and low-latency data delivery.
- [Bidirectional Streaming Protocols](https://awesome-repositories.com/f/networking-communication/bidirectional-streaming-protocols.md) — Opens two-way communication channels between peers to allow simultaneous data transmission and reception over a single network connection. ([source](https://quic-go.net/docs/webtransport/streams/))
- [Connection Establishment Protocols](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/network-protocols/connection-establishment-protocols.md) — Listens for and establishes new network connections, allowing for independent lifecycle management of the listener and active sessions. ([source](https://quic-go.net/docs/quic/server/))
- [Network Transport Layers](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/network-transport-layers.md) — Opens and accepts bidirectional or unidirectional data channels between peers while managing flow control limits to ensure reliable communication. ([source](https://quic-go.net/docs/quic/streams/))
- [Connection Handshake Protocols](https://awesome-repositories.com/f/networking-communication/connection-handshake-protocols.md) — Exchanges settings frames between endpoints to negotiate protocol extensions and performance parameters during the initial handshake. ([source](https://quic-go.net/docs/http3/server/))
- [Flow Control Mechanisms](https://awesome-repositories.com/f/networking-communication/flow-control-mechanisms.md) — Project networking increases receive window sizes dynamically during a connection to maximize bandwidth utilization based on observed round-trip performance. ([source](https://quic-go.net/docs/quic/flowcontrol/))
- [Flow Control Window Managers](https://awesome-repositories.com/f/networking-communication/flow-control-window-managers.md) — Configures initial and maximum receive window sizes for connections and streams to optimize data throughput based on network conditions. ([source](https://quic-go.net/docs/quic/flowcontrol/))
- [High-Performance Transport Layers](https://awesome-repositories.com/f/networking-communication/high-performance-transport-layers.md) — Optimizes data transfer through advanced flow control, connection multiplexing, and zero-round-trip resumption to reduce latency in distributed systems.
- [NAT Rebinding Handlers](https://awesome-repositories.com/f/networking-communication/nat-diagnostics/nat-rebinding-handlers.md) — Adapts to network address translation changes by re-validating connections when packets arrive from unexpected source addresses or ports. ([source](https://quic-go.net/docs/quic/connection-migration/))
- [Connection Resilience Layers](https://awesome-repositories.com/f/networking-communication/network-reliability-diagnostics/connection-session-management/connection-management/connection-resilience-layers.md) — Maintains stable communication sessions across changing network paths or IP addresses by using connection identifiers to ensure seamless transitions.
- [Path Migration Managers](https://awesome-repositories.com/f/networking-communication/network-reliability-diagnostics/connection-session-management/path-migration-managers.md) — Maintains active sessions during network interface changes by validating new paths and updating connection identifiers without dropping the link.
- [HTTP Proxies](https://awesome-repositories.com/f/networking-communication/http-proxies.md) — Encapsulates IP packets within HTTP streams to enable transparent network routing and connectivity through web-based proxies. ([source](https://quic-go.net/docs/))
- [Network Traffic Managers](https://awesome-repositories.com/f/networking-communication/network-traffic-managers.md) — Manages the rate of data transmission to prevent network congestion, minimize packet loss, and reduce latency during communication between endpoints. ([source](https://quic-go.net/docs/quic/congestion-control/))
- [Packet Batching Engines](https://awesome-repositories.com/f/networking-communication/packet-engines/packet-processing-frameworks/packet-batching-engines.md) — Combines multiple individual data packets into a single system call to minimize processing overhead and increase throughput during high-volume communication. ([source](https://quic-go.net/docs/quic/optimizations/))
- [UDP Datagram Transmitters](https://awesome-repositories.com/f/networking-communication/packet-engines/udp-datagram-transmitters.md) — Sends small, time-sensitive messages without the overhead of stream-based reliability to allow faster communication. ([source](https://quic-go.net/docs/quic/datagrams/))
- [Protocol Negotiation Tools](https://awesome-repositories.com/f/networking-communication/protocol-negotiation-tools.md) — Advertises supported application-level protocols during the connection handshake to ensure client and server agreement. ([source](https://quic-go.net/docs/webtransport/client/))
- [Transport Timeouts](https://awesome-repositories.com/f/networking-communication/transport-timeouts.md) — Terminates inactive network connections based on negotiated time limits to conserve resources and prevent unnecessary radio activity. ([source](https://quic-go.net/docs/quic/connection/))
- [UDP Proxies](https://awesome-repositories.com/f/networking-communication/udp-proxies.md) — Routes network traffic through proxy servers by encapsulating UDP datagrams within secure, multiplexed connections to bypass restrictive network environments.
- [HTTP Datagram Transports](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/transport-protocols/http-transports/http-datagram-transports.md) — Supports the transmission of unreliable data packets by upgrading standard streams to allow direct access to the underlying transport protocol. ([source](https://quic-go.net/docs/http3/datagrams/))
- [Stream Limiters](https://awesome-repositories.com/f/networking-communication/concurrent-stream-handlers/stream-limiters.md) — Limits the number of simultaneous incoming bidirectional and unidirectional streams a peer can open to protect local resource consumption. ([source](https://quic-go.net/docs/quic/flowcontrol/))
- [Custom Transport Protocols](https://awesome-repositories.com/f/networking-communication/custom-transport-protocols.md) — Enables the use of custom packet connection interfaces to facilitate protocol communication over non-standard transports. ([source](https://quic-go.net/docs/quic/transport/))
- [HTTP Transport Configurations](https://awesome-repositories.com/f/networking-communication/http-transport-configurations.md) — Allows customization of connection settings and socket behavior to gain fine-grained control over network data travel and session management. ([source](https://quic-go.net/docs/http3/client/))
- [Unidirectional Streams](https://awesome-repositories.com/f/networking-communication/network-streaming/unidirectional-streams.md) — Opens one-way communication channels to send data from one peer to another without requiring a return path. ([source](https://quic-go.net/docs/webtransport/streams/))
- [Path MTU Discoverers](https://awesome-repositories.com/f/networking-communication/network-transport-protocols/path-mtu-discoverers.md) — Determines the maximum transmission unit size for a network path to prevent packet fragmentation and optimize data delivery efficiency. ([source](https://quic-go.net/docs/quic/))
- [Fallback Mechanisms](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/transport-protocols/fallback-mechanisms.md) — Switches to alternative transport protocols when modern protocols are blocked to ensure connectivity in restricted environments. ([source](https://quic-go.net/docs/webtransport/))
- [Path Aggregators](https://awesome-repositories.com/f/networking-communication/network-transport-protocols/path-aggregators.md) — Transfers application data simultaneously across multiple network interfaces to increase throughput and improve resilience against individual path failures. ([source](https://quic-go.net/docs/quic/multipath/))
- [UDP Socket Managers](https://awesome-repositories.com/f/networking-communication/socket-networking/udp-socket-managers.md) — Provides control over underlying UDP connections by injecting custom sockets to handle proxying of network traffic. ([source](https://quic-go.net/docs/connect-udp/proxy/))
- [Socket Sharers](https://awesome-repositories.com/f/networking-communication/socket-networking/udp-socket-managers/socket-sharers.md) — Runs client and server instances on the same UDP socket by leveraging connection ID demultiplexing to reduce resource usage. ([source](https://quic-go.net/docs/http3/client/))

### Security & Cryptography

- [Zero-RTT Resumption](https://awesome-repositories.com/f/security-cryptography/process-sandboxes/session-resumption/zero-rtt-resumption.md) — Allows returning clients to send data immediately upon connection by configuring the server to accept early streams and session resumption. ([source](https://quic-go.net/docs/quic/server/))
- [Handshake Protocols](https://awesome-repositories.com/f/security-cryptography/handshake-protocols.md) — Resumes previous sessions to skip handshake steps, reducing latency by reusing existing session state and credentials. ([source](https://quic-go.net/docs/quic/client/))
- [Zero-RTT Handshake Resumption](https://awesome-repositories.com/f/security-cryptography/handshake-protocols/zero-rtt-handshake-resumption.md) — Allows clients to send application data immediately upon reconnection by reusing cached cryptographic state from previous successful sessions.
- [Path Validators](https://awesome-repositories.com/f/security-cryptography/network-connection-security/path-validators.md) — Verifies that new network paths are functional and secure by exchanging challenge and response frames before switching traffic. ([source](https://quic-go.net/docs/quic/connection-migration/))
- [Origin Validators](https://awesome-repositories.com/f/security-cryptography/cross-origin-security-policies/origin-validators.md) — Prevents cross-site request forgery by verifying that the client request origin matches the server host before allowing a session upgrade. ([source](https://quic-go.net/docs/webtransport/server/))

### System Administration & Monitoring

- [Network Protocol Metrics](https://awesome-repositories.com/f/system-administration-monitoring/logging/system-metrics-collection/network-protocol-metrics.md) — Exposes internal protocol events and performance statistics to provide visibility into connection health and transport behavior. ([source](https://quic-go.net/docs/quic/metrics/))

### DevOps & Infrastructure

- [Connection Termination](https://awesome-repositories.com/f/devops-infrastructure/client-connectivity-tools/connection-termination.md) — Closes active network sessions by communicating specific error codes and reasons to remote peers for state synchronization. ([source](https://quic-go.net/docs/quic/connection/))
- [Stateless Resetters](https://awesome-repositories.com/f/devops-infrastructure/client-connectivity-tools/connection-termination/stateless-resetters.md) — Issues cryptographically signed tokens to peers after a reboot, allowing them to immediately terminate stale connections without waiting for timeouts. ([source](https://quic-go.net/docs/quic/transport/))

### Education & Learning Resources

- [Protocol Error Handlers](https://awesome-repositories.com/f/education-learning-resources/educational-resources/systems-applied-computing/infrastructure-architecture/computer-networks/networking-protocols/protocol-error-handling/protocol-error-handlers.md) — Reports protocol violations, handshake failures, and remote closures to allow applications to implement appropriate retry or recovery logic. ([source](https://quic-go.net/docs/quic/connection/))
- [Protocol Error Handling](https://awesome-repositories.com/f/education-learning-resources/educational-resources/systems-applied-computing/infrastructure-architecture/computer-networks/networking-protocols/protocol-error-handling.md) — Communicates application-specific error codes when resetting a stream to notify peers of failures or state changes during transmission. ([source](https://quic-go.net/docs/quic/streams/))

### User Interface & Experience

- [Flow Control Window Controllers](https://awesome-repositories.com/f/user-interface-experience/window-management/window-lifecycle-controllers/flow-control-window-controllers.md) — Regulates data transmission rates by dynamically adjusting receive windows to prevent network congestion and optimize bandwidth utilization.

### Web Development

- [HTTP Header Compression Engines](https://awesome-repositories.com/f/web-development/backend-development/request-response-handling/http-utilities/http-header-manipulators/http-header-compression-engines.md) — Provides dynamic table and static dictionary encoding to reduce the size of transmitted network headers during client-server communication. ([source](https://quic-go.net/docs/http3/qpack/))
- [HTTP Request Clients](https://awesome-repositories.com/f/web-development/http-request-clients.md) — Integrates with standard network clients to perform high-performance data transfers over modern protocol versions for faster content delivery. ([source](https://quic-go.net/docs/http3/client/))

### Operating Systems & Systems Programming

- [Network Buffer Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/buffer-and-cache-management/network-buffer-managers.md) — Increases kernel-level receive and send buffer capacities to prevent packet loss and maintain stable data flow during high-bandwidth activity. ([source](https://quic-go.net/docs/quic/optimizations/))
- [Packet Batching Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-calls/packet-batching-interfaces.md) — Reduces kernel overhead by grouping multiple network packets into single system calls to improve throughput during high-volume data transfers.
