Alt-Used

When a client connects through an alternative protocol or endpoint advertised via Alt-Svc, the Alt-Used request header identifies which alternative service is in use.

Usage

The Alt-Used header is part of the HTTP Alternative Services framework. When a server sends an Alt-Svc response header advertising alternative endpoints (like HTTP/3 on a different port or HTTP/2 at a different hostname), the client stores this information and attempts to use the alternative for future requests to the same origin.

Once the client connects through an alternative service, clients like Firefox include the Alt-Used header in the request to inform the server which alternative was selected. The header value contains the host and an optional port of the alternative service, formatted as hostname:port or hostname.

The header serves three purposes. First, alternative services detect connection loops by comparing the Alt-Used value against their own advertised endpoints. Second, load balancers differentiate alternative service traffic from direct origin connections. Third, servers track which alternatives are working in production, aiding debugging and capacity planning.

The Alt-Used value differs from the Host header when an alternative is active. The Host header continues to reference the original origin, while Alt-Used identifies the actual network endpoint handling the request.

Values

hostname:port

The value is a hostname and port combination representing the alternative service selected by the client. The format matches the authority portion advertised in the Alt-Svc response.

The port is optional in the value. Clients commonly send only the hostname when the alternative service uses the default port for the protocol.

Example

A client connects to a server using an HTTP/3 alternative service on port 443 as advertised by the origin. The Alt-Used header indicates the specific endpoint in use.

Alt-Used: example.re:443

When the alternative uses the default HTTPS port, the port number is often omitted.

Alt-Used: example.re

A server advertising HTTP/2 at a different hostname sees the alternative hostname in Alt-Used when clients connect through the advertised endpoint.

Alt-Used: alt.example.re

Who sends the header, and what the value means

The header pairs with Host rather than replacing anything: Host keeps naming the origin while Alt-Used names the alternative endpoint carrying the connection, which lets the alternative detect loops and separate traffic per destination. The port appears only when non-default, so a bare hostname is the common form.

Engine behavior split, and the split explains why origins rarely log the header. Firefox sends Alt-Used on connections reached through Alt-Svc, including HTTP/3, and suppresses the header in private browsing. On falling back to a direct connection, Firefox overwrites rather than removes, sending Alt-Used: 0 when a direct route wins the race or the alternative fails. Chrome, under observation, sends nothing on connections reached the same way.

A 421 from the alternative clears the stored mapping for the origin, and any Alt-Svc header arriving on the 421 itself is ignored, which together give a misrouted client a clean path back to the origin.

The header is settable from page script, unusually for connection-level machinery, and Firefox hides the field from service workers after the value leaked into fetch events and broke CORS-preflighted requests by naming an unexpected header.

See also

Last updated: August 17, 2026