How to enable HTTP/2 and HTTP/3
HTTP/2 loads many files over one connection and HTTP/3 shortens the handshake. Most hosts and CDNs enable them with one switch.
Step by step, with screenshots: ERR_HTTP2_PROTOCOL_ERROR: what it means and how to fix it →
Check your own site
Runs these 4 checks and the other 189, free, in about 45 seconds.
Or run only this check with the free HTTP/2 & HTTP/3 test or the free Web hosting speed test.
What it is
HTTP/2 and HTTP/3 are newer versions of the protocol browsers use to download web pages. HTTP/2 loads many files at once over a single connection; HTTP/3 does the same over QUIC, which sets up connections faster and copes better with patchy mobile networks. HTTP/1.1 downloads about six files at a time per host and queues the rest.
A page with dozens of images, scripts and styles loads noticeably faster over HTTP/2 without any code change. Browsers only use HTTP/2 over HTTPS, and most hosts and CDNs already offer it; HTTP/3 is announced with an Alt-Svc header and needs UDP port 443 open.
OK looks like this: the server negotiates HTTP/2 or HTTP/3, no files on the page are still served over HTTP/1.1, and ideally HTTP/3 is advertised. getReport checks the protocol of every request and the server's Alt-Svc header.
What a passing site looks like
- HTTP/2 server support: passeswarning · −2 ptseffort M
- Every request uses HTTP/2 or HTTP/3warning · −2 ptseffort M
- Every request uses HTTP/2 or HTTP/3warning · −1.5 ptseffort M
- HTTP/3 is advertised via Alt-Svcinfo onlyeffort S
1. The server does not offer HTTP/2
Why it matters. Without HTTP/2 the browser opens up to six connections and queues everything else. Turning it on is a server or CDN setting and makes pages with many files load faster with no code change.
- Enable HTTP/2 in your web server (nginx 1.25.1+: "http2 on;" in the server block, older: "listen 443 ssl http2"; Apache mod_http2) or put the site behind a CDN that speaks it.
- Check the host's control panel; on Cloudflare, Netlify, Vercel and most managed WordPress hosts it is already on.
2. HTTP/2 and HTTP/3
Why it matters. HTTP/2 and HTTP/3 load many files at once over one connection. HTTP/1.1 queues them, which hurts most on pages with many images and scripts.
- Enable HTTP/2 (and HTTP/3 where available) on your server or CDN: it usually comes with HTTPS.
- Move assets hosted on old HTTP/1.1 origins behind the same CDN.
3. HTTP/2 or HTTP/3 requests
Why it matters. HTTP/2 and HTTP/3 load many files over one connection at once; HTTP/1.1 queues them six at a time. Switching usually makes a page with many images or scripts noticeably faster with no code change.
- Turn on HTTP/2 or HTTP/3 in your hosting or CDN panel; on Cloudflare and most managed hosts it is a checkbox.
- Move assets that are still served over HTTP/1.1 (see the technical detail) to a host that supports HTTP/2.
4. HTTP/3 is not advertised
Why it matters. HTTP/3 (QUIC) shortens the connection setup and copes better with flaky mobile networks. Servers announce it with an Alt-Svc header; without it browsers never try.
- Enable HTTP/3 in your CDN or server (Cloudflare toggle, Caddy default, Nginx 1.25+ "listen 443 quic").
- Make sure UDP port 443 is open in the firewall.
Questions people ask
What is QUIC?
QUIC is a transport protocol, originally developed at Google and standardised by the IETF in 2021, that runs over UDP instead of TCP. It combines the connection and encryption handshakes, so connections start faster, and it keeps other files flowing when one packet is lost. HTTP/3 is HTTP running over QUIC.
What is the difference between HTTP/2 and HTTP/1.1?
HTTP/1.1 sends one request at a time per connection, so browsers open about six connections per host and queue everything else. HTTP/2 sends many requests in parallel over one connection, compresses headers and lets the server prioritise files. Pages with many files load faster over HTTP/2.
What is HTTP/2?
HTTP/2 is the second major version of the HTTP protocol, published in 2015 and now defined in RFC 9113. It keeps the same methods, headers and status codes as HTTP/1.1 but changes how data travels, multiplexing many requests over one connection. Browsers use it only over HTTPS.
What is the difference between HTTP/3 and HTTP/2?
HTTP/2 runs over TCP, where one lost packet holds up every file on the connection. HTTP/3 runs over QUIC on UDP, where a lost packet only delays its own file, and connections open with fewer round trips. The gains are biggest on mobile and unreliable networks.