Skip to content

How to enable HTTP/2 and HTTP/3

Best practicesSpeed2 min readFixes 4 checks http2-negotiated, http2-or-3, http2, http3-advertised

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: CDN basics: what a CDN fixes and what it does not →

Check your own site

Runs these 4 checks and the other 183, free, in about 45 seconds.

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.

How to fix it.
  1. 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.
  2. 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.

How to fix it.
  1. Enable HTTP/2 (and HTTP/3 where available) on your server or CDN — it usually comes with HTTPS.
  2. 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.

How to fix it.
  1. Turn on HTTP/2 or HTTP/3 in your hosting or CDN panel; on Cloudflare and most managed hosts it is a checkbox.
  2. 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.

How to fix it.
  1. Enable HTTP/3 in your CDN or server (Cloudflare toggle, Caddy default, Nginx 1.25+ "listen 443 quic").
  2. Make sure UDP port 443 is open in the firewall.

Filed under Best practices. Copy is generated from the same catalogue that scores every report, so what you read here is what the report says.