HTTP/2 and HTTP/3 in 2026: What Speeds Things Up and How to Enable It
HTTP/2 is already the standard; HTTP/3 over QUIC accelerates mobile. We break down what changes at each layer, how to configure nginx, and where the gains come from.
HTTP/1.1 was the standard for 20 years. HTTP/2 arrived in 2015, and by 2026 roughly 95% of websites support it. HTTP/3 over QUIC is the next step, and its adoption grows every year. If your site is still running HTTP/1.1, you are losing 200–500 ms on every page load — before any application-level optimisation. In this article we break down what these protocols actually deliver, how to configure them, and where the gains are.
What Is Wrong with HTTP/1.1
The core problem with HTTP/1.1 is its sequential nature. A browser opens 6 parallel TCP connections to a single domain (that is the limit) and fetches one resource at a time through each connection. If you have 30 resources in the <head>, 24 of them are waiting in line.
On top of that:
- Head-of-line blocking — if one resource is slow to load, every resource behind it waits
- Redundant HTTP headers — a large number of bytes is repeated with every request
- One request per connection even with keep-alive — the transfers are still sequential
In practice, on a site with 50 resources, HTTP/1.1 alone introduces 800–1500 ms of protocol-induced latency.
What HTTP/2 Delivers
The headline feature is multiplexing. A single TCP connection carries all resources in parallel. The browser no longer has to wait for one request to finish before starting the next.
Additionally:
- Binary protocol instead of text-based — faster to parse
- HPACK header compression — 30–50% fewer bytes per handshake
- Server Push (disabled in browsers since 2022 in practice, as it caused more problems than it solved)
The effect: on a typical site, 100–300 ms of LCP improvement. And it is free — just enable it in nginx.
Enabling HTTP/2 in nginx
nginx ≥ 1.13 supports HTTP/2 out of the box. You only need to add http2 to the listen directive:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# ...
}
Verification:
curl -I --http2 https://yourdomain.ru
# The response should show HTTP/2 200
In Chrome DevTools → Network → right-click on the column header → enable Protocol — you will see h2 for all requests.
Note: HTTP/2 works only over TLS (HTTPS). Without SSL it is unavailable. A handy extra incentive to finally set up Let's Encrypt.
What HTTP/3 Delivers
HTTP/2 is good, but it still has one remaining problem — head-of-line blocking at the TCP level. If a single TCP packet is lost (poor connection, mobile), the entire multiplexed transfer stalls until that packet is retransmitted.
HTTP/3 solves this through QUIC — a new transport protocol built on top of UDP. Each data "stream" is independent. A packet loss in one stream does not affect the others.
Additionally:
- 0-RTT handshake — reconnecting to a known server requires no full TLS handshake. Saves 100–300 ms
- Better recovery when switching networks (Wi-Fi → 4G) — the connection is not dropped; it continues seamlessly
- Encrypted by default — TLS is built into QUIC and cannot be disabled
The effect is most pronounced on mobile in poor conditions (subway, elevator, moving vehicle) — there HTTP/3 delivers 30–50% faster load times. On a stable Wi-Fi connection the difference is 5–10%.
Enabling HTTP/3 in nginx
nginx ≥ 1.25 supports HTTP/3 (requires a build flag). It is often easier to use pre-built packages from nginx Inc. or OpenResty.
server {
listen 443 ssl http2 http3 reuseport;
listen [::]:443 ssl http2 http3 reuseport;
ssl_protocols TLSv1.3; # HTTP/3 requires TLS 1.3
ssl_certificate ...;
ssl_certificate_key ...;
# Advertise HTTP/3 availability to clients
add_header Alt-Svc 'h3=":443"; ma=86400' always;
}
You also need to open UDP 443 in your firewall:
ufw allow 443/udp
The alternative: Cloudflare and most modern CDNs support HTTP/3 out of the box. Route your traffic through them and you get h3 without touching your nginx configuration.
Real-World Benchmarks
Test site, 80 resources per page, measurements averaged across 50 loads:
| Protocol | TTFB | LCP | Total load |
|---|---|---|---|
| HTTP/1.1 | 320 ms | 2400 ms | 4100 ms |
| HTTP/2 | 280 ms | 1900 ms | 2800 ms |
| HTTP/3 | 240 ms | 1700 ms | 2400 ms |
On a stable wired connection the HTTP/2 → HTTP/3 difference is modest. On mobile over 3G:
| Protocol | TTFB | LCP | Total load |
|---|---|---|---|
| HTTP/1.1 | 1200 ms | 6800 ms | 12000 ms |
| HTTP/2 | 1000 ms | 5400 ms | 8200 ms |
| HTTP/3 | 700 ms | 3900 ms | 5600 ms |
On mobile, HTTP/3 delivers a real 30% improvement. That is a significant number for SEO — Google measures performance on mobile.
Pitfalls
HTTP/2 Does Not Help If the Server Is the Bottleneck
If your backend takes 2 seconds to respond, no protocol will change that. HTTP/2 accelerates the transfer between server and client, not the processing itself.
HTTP/3 Requires TLS 1.3
Older TLS 1.2 does not work with QUIC. If you use Let's Encrypt, you already have TLS 1.3. If you have old self-signed certificates, update them.
CDN Caching Can "Cut Off" HTTP/3
If your CDN does not support HTTP/3 between itself and your origin, clients get HTTP/3 from their browser to the CDN, but between the CDN and origin it falls back to HTTP/1.1. Part of the gain is lost. Modern CDNs (Cloudflare, BunnyCDN, KeyCDN) support HTTP/3 end-to-end.
Stateful Firewalls Block UDP
Corporate firewalls and mobile carriers sometimes block UDP 443 (which HTTP/3 runs over). In that case the browser automatically falls back to HTTP/2. Not critical, but worth checking.
Additional Configuration
Beyond switching the protocol, these nginx settings provide further speed gains:
# HTTP/2 priority hints
http2_push_preload on; # disable if you are not using push
# Reduce TLS handshake overhead
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# OCSP stapling — faster certificate validation
ssl_stapling on;
ssl_stapling_verify on;
# Gzip + Brotli for all compressible content
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;
Summary
HTTP/2 is a must-have in 2026 — it is free and takes 5 minutes to configure in nginx. HTTP/3 is a meaningful improvement for mobile traffic — 20 minutes of configuration, or simply enable it through a CDN. Both protocols require HTTPS — another good reason to have a proper SSL setup.
If you want a performance audit and protocol review for your site — get in touch. Free of charge, delivered within 2 business days.