Performance

HTTP/3

Also called HTTP/3, QUIC.

HTTP/3 is HTTP carried over QUIC on UDP, with built-in TLS 1.3 and faster handshakes. It avoids the stalls that one lost TCP packet causes in HTTP/2.

How it is measured

Look for `h3` in the Protocol column of DevTools. The first connection learns about HTTP/3 through an `Alt-Svc` header, so the first visit may use h2 and later ones h3.

A new QUIC connection needs one round trip, and a resumed one can send data in zero round trips. Streams are independent, so loss on one does not block the others. Connection migration keeps a session alive when a phone switches from Wi-Fi to cellular.

Worked example

On an 80 ms RTT mobile link, an HTTP/2 connection needs a TCP and TLS handshake of about 240 ms before the first request. HTTP/3 needs about 80 ms. At 2 percent packet loss, a page measured at 3,100 ms over h2 measures 2,550 ms over h3.

A visitor on a fast fibre line sees almost no difference, with 1,020 ms versus 990 ms.

How it differs

HTTP/3 is the newer transport. HTTP/2 runs on TCP and carries the same semantics. The TLS handshake is folded into the QUIC handshake, which is one source of the faster start. The two protocols give the same headers and methods, only transport differs.

Common errors

Expecting big gains on fast, clean connections. Blocking UDP 443 at a firewall and silently falling back. Forgetting to advertise Alt-Svc. Measuring one run and calling it a win. Assuming every CDN host and third party supports it.

In practice

Turn on HTTP/3 at your CDN, verify h3 appears on a repeat load, and compare field TTFB and LCP by connection type. Keep HTTP/2 enabled as a fallback.

See also

HTTP/2, TLS handshake

Sources

Count this on a real site.

Watch my website