HTTP/2 & HTTP/3 check

Does your website speak HTTP/2 and HTTP/3? The check does not just look at the announcement but also tests whether a QUIC server really answers on UDP port 443.

HTTP/1.1, HTTP/2, HTTP/3Real QUIC test on UDP 443Config for nginx, Apache, IIS
Try it:

Enter an address. HTTPS on port 443 is checked.

The check runs via the hollop.net server: a TLS handshake, one header request, a DNS lookup and a single UDP packet to port 443. Internal addresses are not queried and nothing is stored.

HTTP/1.1, HTTP/2 and HTTP/3 at a glance

All three versions carry the same content, but with different efficiency. Browsers negotiate the best common version themselves; your server only has to offer it.

How does a browser find HTTP/3?

A browser always connects over TCP first. Only when the server offers HTTP/3 in the Alt-Svc: h3=":443" header does it try QUIC next time. Alternatively the offer is in the DNS record of type HTTPS, which works on the very first visit. Without either, a working QUIC server goes unused. If HTTP/3 is announced but UDP 443 is blocked, the browser falls back to HTTP/2 and loses time doing so.

How does the tool check HTTP/3?

It sends a QUIC packet with a deliberately unknown version number to UDP port 443. Every QUIC server must answer with the list of its versions (RFC 9000). This proves that a QUIC server really is listening there and that it is not just announced. If there is no answer, it is almost always a firewall, security group or missing port mapping for UDP.

Check the security headers of the same site in the security header check and the certificate in the SSL check.

FAQ

Do I need HTTP/3 at all?

No, HTTP/2 is already a big step for most websites. HTTP/3 mainly helps on mobile devices and networks with packet loss. If your web server or CDN offers it without effort, it is worth it.

My server announces HTTP/3 but the check finds no QUIC server. Why?

HTTP/3 runs over UDP port 443. If only TCP 443 is open – in the firewall, the cloud security group or the Docker port mapping – the QUIC packet does not arrive. Open 443/udp as well.

Why does my browser still show HTTP/2?

Browsers only learn about HTTP/3 from the Alt-Svc header of the first response. Load the page a second time. The developer tools (Network, column “Protocol”) will then show h3.

Does Apache support HTTP/3?

No. Apache supports HTTP/2 via mod_http2; for HTTP/3 you need a reverse proxy such as Caddy or nginx in front of it, or a CDN.

Does the check put load on my server?

No. There is one TLS handshake, two header requests without content and one or two UDP packets.