How does a browser end up using HTTP/2 or HTTP/3?
HTTP/2 (RFC 9113) is chosen inside the TLS handshake: the browser offers "h2" through ALPN (RFC 7301) and the server accepts it or falls back to HTTP/1.1. HTTP/3 (RFC 9114) runs over QUIC on UDP, so a browser first learns about it from an Alt-Svc header (RFC 7838) or an HTTPS DNS record and then tries a QUIC connection, falling back silently when UDP is blocked.
How to use HTTP/2 & HTTP/3 Checker
- Enter the final address of a page, the one that answers 200 (https://www.example.com/ rather than http://example.com, which only redirects).
- Press Check HTTP/2 and HTTP/3 and wait a few seconds while the probe runs.
- Read the two verdicts and their reasons under Details. If HTTP/3 is advertised, confirm in your browser's developer tools (Network panel, Protocol column) that h3 is actually used.
HTTP/2 & HTTP/3 Checker features
- HTTP/2 verified, not guessed: one Globalping community probe requests your page offering only h2 in ALPN, so a finished request proves HTTP/2 and a refusal proves its absence
- HTTP/3 read from the Alt-Svc header (RFC 7838) of the response your URL returns, with every protocol identifier it advertises (h3, h3-29, h2…)
- Unknown is a real answer: plain http URLs, redirects, error responses, a probe that failed or a measurement quota that ran out are reported as unknown with the reason
- Shows the probe's location and network, the HTTP status and method of the sampled request, the Server header and the resolved address
- Says whether the host resolves to Cloudflare's network — and works for those sites, because it needs no raw TCP connection
Inputs and outputs
Inputs
- Page URL: an http:// or https:// address of a public host; a bare host name is read as https. The Mutqan server requests the whole URL; the HTTP/2 probe requests its path without the query string, and a path with characters the measurement service refuses falls back to "/", which the notes then say.
- Nothing else: the method, headers and probe are fixed, and no body is sent.
Outputs
- Summary: HTTP/2 ✓ verified, ✗ refused or ? unknown; HTTP/3 ✓ advertised, ✗ not advertised or ? not judged; the HTTP status and method of the sampled request.
- Details: the route's explanation of each verdict, where the HTTP/2 probe ran, the raw Alt-Svc header and the protocols it lists, the Server header, the resolved address and whether it is on Cloudflare's network.
- Notes: how each protocol was determined, and whether the HTTP/2 probe used another path.
HTTP/2 & HTTP/3 Checker example
A site that speaks HTTP/2 and announces HTTP/3 (illustrative result)
Input:
Page URL: https://www.example.com/Output:
HTTP/2 ✓ (verified by a probe) · HTTP/3 ✓ (advertised in Alt-Svc) · HTTP status 200 · Method HEAD
HTTP/2 result: A Globalping probe completed a request over HTTP/2 (ALPN h2).
HTTP/2 probe: Frankfurt, DE · Hetzner Online GmbH
HTTP/3 result: The response carries an Alt-Svc header that announces h3.
Alt-Svc header: h3=":443"; ma=86400 · Advertised protocols: h3How to read the HTTP/2 & HTTP/3 Checker results
HTTP/2 ✓ means a probe actually completed a request over h2. ✗ means the server refused a connection that offered only h2: it speaks HTTP/1.1 only over TLS. ? means it could not be determined this time — the Details line says why.
HTTP/3 ✓ "advertised" means a successful https response carried Alt-Svc with h3. ✗ "not advertised" means a 2xx response over https carried none — the one case where its absence is evidence. ? "not judged" covers plain http and redirect or error responses.
Advertised h3 with a short ma (max-age) or advertised on some responses only is normal for CDNs. If visitors never use HTTP/3 even though it is advertised, a firewall blocking UDP 443 is the usual cause.
When to use HTTP/2 & HTTP/3 Checker
- Confirm that enabling HTTP/2 or HTTP/3 on a server, CDN or load balancer actually took effect.
- Explain a performance difference between two environments: staging on HTTP/1.1, production on HTTP/2.
- Check that a migration to a new host or CDN kept the Alt-Svc header that lets browsers use QUIC.
- Verify an API endpoint that clients expect to reach over HTTP/2.
Troubleshooting
- HTTP/3 "not judged" with HTTP status 301 or 302: enter the final URL of the redirect chain (the Redirect Checker shows it).
- HTTP/2 unknown with "the measurement service is unavailable or its hourly quota is used up": the shared Globalping budget is exhausted; try again later.
- HTTP/2 refused although your server config enables it: ALPN must be enabled on the TLS terminator that actually answers (a load balancer or proxy in front of the server), and h2 needs TLS 1.2 or later with a cipher suite that RFC 9113 does not prohibit.
- The request fails with a resolution error or "cannot be reached": the host has no public address, or it resolves to a private or reserved one, which the Mutqan server refuses to contact.
Frequently asked questions about HTTP/2 & HTTP/3 Checker
Why is HTTP/2 reported as unknown?
HTTP/2 is verified only by a Globalping probe that offers nothing but h2. It stays unknown when the URL is plain http (browsers use HTTP/2 only over TLS), when the probe could not complete the request, when the measurement service had no quota left, or when the probe did not answer in time. The page never guesses.
Does "advertised" mean HTTP/3 works?
It means the server announces h3 in its Alt-Svc header, which is what makes browsers try HTTP/3 on their next visit. Whether the QUIC connection then succeeds depends on UDP port 443 being open along the way; no QUIC connection is made here. Browsers fall back to HTTP/2 or HTTP/1.1 silently when it fails.
Why can't the Mutqan server see the protocol itself?
It runs on Cloudflare Workers, whose fetch API does not expose which protocol a request negotiated. That is why HTTP/2 is checked by an outside Globalping probe and HTTP/3 is read from the header the server sends.
Why was HTTP/3 "not judged" for my site?
The sampled response was a redirect or an error, and those are often served without the Alt-Svc header a normal page carries, so its absence proves nothing. Check the final URL, the one that answers 200, instead — redirects are not followed.
Does it work for sites behind Cloudflare?
Yes. This check makes ordinary HTTP requests and uses a Globalping probe; it does not need the raw TCP connection that the platform blocks for Cloudflare-hosted sites, which is what stops the TLS checkers.
Technical notes
HTTP/2 (RFC 9113) is negotiated inside the TLS handshake through ALPN (RFC 7301): the client lists the protocols it speaks and the server picks one. The Globalping probe offers only "h2" and does not fall back, so a completed request is proof of HTTP/2 and the error "HTTP/2 is not supported by the server" is proof of its absence. The probe sends a HEAD request for the URL's path and reads the status line.
HTTP/3 (RFC 9114) runs over QUIC (RFC 9000) on UDP. A browser learns that a server offers it from an Alt-Svc header field (RFC 7838) on an HTTP/1.1 or HTTP/2 response — for example h3=":443"; ma=86400 — or from an HTTPS DNS record, and tries QUIC on later requests. That header is what is read here; no QUIC connection is made.
The Mutqan server sends HEAD first and repeats the request with GET only when the server answers 405 or 501. Redirects are not followed: an Alt-Svc on a 301 says nothing reliable about the destination, so HTTP/3 is judged only on a 2xx response over https.
Limitations and methodology
HTTP/2 is tested from one Globalping probe, wherever the network assigns it; a server that negotiates differently by region or client may behave otherwise for your visitors. Measurement parameters and results are public on Globalping.
HTTP/3 is never connected to: an advertised h3 may still fail for visitors whose networks block UDP. An h3 announced only through an HTTPS DNS record, without Alt-Svc, is not detected.
One response is sampled, from the Mutqan server on Cloudflare's network; pages that send Alt-Svc only to some clients or on some paths may be reported differently from what a browser sees.
Security and privacy
The URL goes to the Mutqan server, which requests it once, and — for https — its host name and path go to Globalping, where the measurement parameters and result are public. Nothing is stored by Mutqan. Do not test URLs that carry secrets in the path.
References
- RFC 9113: HTTP/2The HTTP/2 protocol: binary framing and multiplexed streams over one connection, negotiated with the "h2" ALPN identifier over TLS 1.2 or later, and the cipher suites it prohibits.
- RFC 9114: HTTP/3HTTP over QUIC: how HTTP/3 maps requests onto QUIC streams and how clients discover it, typically through an Alt-Svc advertisement for "h3".
- RFC 7838: HTTP Alternative ServicesThe Alt-Svc header field: how a server tells clients that the same resource is available over another protocol or endpoint (h3=":443"; ma=86400), and how long that advice may be cached.