Performance · Checked once per domain
HTTP/2 or HTTP/3 enabledWhat it checks and how to fix it
What it checks
Reads the HTTP version the server negotiates for the site. HTTP/2 and HTTP/3 pass; a server that only speaks HTTP/1.x fails.
Why it matters
HTTP/1.1 sends one request at a time per connection, so a page with dozens of assets queues them behind each other or opens many connections, each with its own TLS handshake. HTTP/2 multiplexes every request over a single connection and compresses headers, and HTTP/3 also avoids stalls on lossy mobile networks, so the same page loads noticeably faster.
How to fix it
Enable HTTP/2 (and HTTP/3 where available) on the server or proxy that terminates TLS. Browsers only use HTTP/2 over HTTPS.
nginx (1.25.1 or later; older versions use listen 443 ssl http2;)
server {
listen 443 ssl;
http2 on;
}
Apache (mod_http2)
Protocols h2 http/1.1
Cloudflare: HTTP/2 is always on for proxied hostnames; turn on HTTP/3 under Speed → Optimization → Protocol Optimization.
Rails: Puma speaks HTTP/1.1 only, so put a proxy that speaks HTTP/2 in front of it (nginx, Thruster, kamal-proxy, or a CDN).