HTTP/3 / QUIC

The newest HTTP transport, built on QUIC and UDP for quicker secure setup and fewer stalls when packets are lost.

make HTTPS connect faster on mobilethe UDP version of HTTPwhy does the browser say h3newer protocol after HTTP/2keep a connection when Wi-Fi switches to cellularfaster page loads on bad mobile signalthe thing Google made to replace TCP for websiteshtttp 3

See it

Live demo coming soon

What it is

HTTP/3 carries HTTP over QUIC, a transport built on UDP with TLS 1.3 built into its handshake. It can establish secure connections with fewer round trips, and its streams are independent, so one lost packet does not freeze every other response as it can when HTTP/2 shares one TCP connection. Connection IDs also let a session survive a switch from Wi-Fi to cellular.

The history explains the shape. Google started QUIC in 2012 and ran it between Chrome and its own servers for years before the IETF standardized it as RFC 9000 in 2021, with HTTP/3 following as RFC 9114. That is why it looks like a protocol designed by people who already had the traffic data.

Reach for it on public sites with mobile users, lossy networks, or long round trips. Browsers discover support through the Alt-Svc response header, then use h3 on later connections while HTTP/2 remains available as the fallback.

Gotcha: UDP port 443 is sometimes blocked, so TCP 443 must stay open. HTTP/3 shortens transport delays but cannot fix slow application code, an uncached origin, or oversized responses. QUIC 0-RTT data can be replayed, so do not enable it for requests with side effects unless the application handles replay safely.

Ask AI for it

Enable HTTP/3 in Nginx 1.25.1 or newer. Keep 'listen 443 ssl' and add the 'http2 on;' directive so HTTP/1.1 and HTTP/2 still work, add 'listen 443 quic reuseport', require TLS 1.3, and send 'Alt-Svc: h3=":443"; ma=86400' on HTTPS responses. Open UDP 443 in the firewall without closing TCP 443. Verify HTTP/3 with 'curl --http3-only', verify fallback with 'curl --http2', and record the negotiated protocol in Nginx access logs. Leave QUIC 0-RTT disabled for state-changing routes.

You might have meant

cdnbrotli gzip compressiontls certificate tls terminationedge functionanycast routing point of presence