426 Upgrade Required

The 426 Upgrade Required status code is used when a server wants to tell a client that they should be using a newer version or different protocol to talk to the server.


HTTP/1.1 426 Upgrade Required
Upgrade: HTTP/3
Connection: Upgrade

To use this service, you must use HTTP version 3. 


When a HTTP connection is switched to another protocol (such as Websocket), typically this is done via the Upgrade header in the request, and the server responding with 101 Switching Protocols. This is true for initiating a Websocket connection and for switching a (non-TLS) HTTP/1 to HTTP/2 connection.

The 426 status code could be used by a server to force this protocol switch, however, I haven’t seen any examples personally of servers doing this.

I can imagine that during the upgrade from HTTP/1.0 to HTTP/1.1 this could have been useful and thus this feature may have been added to prepare for situations where servers want to enforce a client to use a newer version.

I believe this is also used by people who are forcing a switch from HTTP to HTTPS without an automated redirect.

I’m not aware if there are clients that can switch protocols or protocol versions automatically, and I don’t know if browsers support this out of the box. My guess is no, but I don’t have a source for this.


HTTP series

This article is part of a series about the HTTP protocol. Read them all here:

Informational 1xx

Successful 2xx

Redirection 3xx

Client Error 4xx

Server Error 5xx

Web mentions