HTTP/2 vs HTTP/3: What's New and Why Upgrade
The Evolution of HTTP
HTTP/1.1 served the web for over 15 years, but its limitations — head-of-line blocking, maximum 6 parallel connections per domain — held back progress. HTTP/2 (2015) solved many issues, and HTTP/3 (2022) rewrote the transport layer from scratch, switching from TCP to QUIC.
HTTP/2: Key Improvements
Multiplexing
HTTP/2 allows multiple requests and responses in parallel over a single TCP connection. In HTTP/1.1, parallelism requires separate connections (up to 6 per domain).
Header Compression (HPACK)
HTTP/1.1 sends headers as text, often repeating the same ones (Cookie, User-Agent). HPACK compresses headers using tables and Huffman encoding, reducing size by 85-95%.
Server Push
The server can send a resource before the browser requests it. For example, sending CSS and JS along with HTML. In practice, this feature is rarely used and is being removed from browsers.
Stream Prioritization
The browser indicates resource priorities to the server: CSS and JS higher than images. This allows the server to send critical resources first.
The HTTP/2 Problem
HTTP/2 uses TCP, which has its own head-of-line blocking: losing a single packet blocks all streams in the connection until the packet is retransmitted. On lossy networks (mobile, Wi-Fi), this can negate the benefits of multiplexing.
HTTP/3: The QUIC Revolution
QUIC Instead of TCP
HTTP/3 runs on QUIC — a protocol developed by Google and standardized by the IETF. QUIC uses UDP but implements reliability, flow control, and encryption at the protocol level.
Solving Head-of-Line Blocking
In QUIC, streams are independent. A lost packet in one stream doesn't block others. On networks with 1% loss, HTTP/3 can be 3x faster than HTTP/2.
Built-in Encryption (TLS 1.3)
QUIC integrates TLS 1.3 into the protocol. There's no option to use QUIC without encryption. This simplifies the stack and enhances security.
0-RTT (Zero Round Trip Time)
When reconnecting to a server, QUIC can send data with the very first packet, without waiting for a handshake. This reduces latency to zero for repeat visits.
Connection Migration
In TCP, a connection is bound to IP address and port. When switching from Wi-Fi to cellular, the TCP connection drops. QUIC uses a Connection ID, allowing the session to continue on a new IP without reconnecting.
Improved Loss Recovery
QUIC has more accurate RTT estimation and improved congestion control compared to TCP. This is especially noticeable on long and unstable connections.
Performance Comparison
- Stable network (fiber) — HTTP/2 and HTTP/3 are roughly equal
- Mobile network (4G/5G) — HTTP/3 is 10-30% faster due to no HOL blocking
- Lossy network — HTTP/3 is significantly faster (up to 3x at 2% loss)
- Repeat visits — HTTP/3 with 0-RTT saves 1 RTT
- Network switch — HTTP/3 is seamless, HTTP/2 reconnects
How to Check Support
Use the Enterno.io HTTP Checker to inspect your server's response headers. The alt-svc header with an h3 parameter indicates HTTP/3 support.
In Chrome DevTools, the Network tab's Protocol column shows h2 for HTTP/2 and h3 for HTTP/3.
How to Enable HTTP/3
nginx (1.25.0+)
server {
listen 443 ssl;
listen 443 quic; # HTTP/3
http2 on; # HTTP/2
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
add_header Alt-Svc 'h3=":443"; ma=86400';
}
CDN
Most CDNs (Cloudflare, Fastly, AWS CloudFront) support HTTP/3 out of the box — simply enable the option in the control panel.
Summary
HTTP/3 is a significant step forward, especially for mobile users and unstable networks. Key advantages: eliminated HOL blocking, 0-RTT for repeat visits, seamless connection migration. If your CDN or web server supports HTTP/3, enable it. On stable networks the difference will be minimal, but for mobile users it will be noticeable.
Check your website right now
Check now →