HTTP

Status Code

505 HTTP Version Not Supported

Learn what 505 HTTP Version Not Supported means when servers reject protocol versions. Understand HTTP/1.1, HTTP/2 compatibility and version negotiation.

2 min read intermediate Try in Playground

TL;DR: 505 HTTP Version Not Supported means the server rejected the request because the HTTP version in use was not acceptable.

What 505 Usually Means In Practice

The name sounds simple, but the real message is: the client and server did not agree on a usable HTTP protocol version for this request.

That can happen because:

  • the client sent an invalid or unsupported request version
  • a proxy rewrote or mangled the request line
  • a custom client forced a version the server does not accept
  • older infrastructure is sitting in the middle of a newer stack

Why Most Teams Rarely See It

In normal browser traffic, version negotiation usually happens automatically:

  • HTTP/2 is typically negotiated through ALPN during TLS
  • HTTP/3 is discovered and adopted through mechanisms like Alt-Svc
  • fallback to HTTP/1.1 happens quietly if needed

That is why 505 is uncommon. Most clients never need to guess.

The Kind Of Cases That Produce It

You are more likely to see 505 when:

  • building or testing a raw HTTP client
  • running unusual reverse-proxy chains
  • dealing with very old origin software
  • mixing protocols or ports incorrectly

If a standard browser is hitting a normal site and you see 505, that usually points to a broken intermediary or custom infrastructure.

505 vs 426

These status codes are related but not interchangeable:

  • 426 Upgrade Required: the server wants the client to reconnect using a required upgrade path
  • 505 HTTP Version Not Supported: the version in the current request is not supported for this exchange

So 426 is a conditional “try again differently,” while 505 is a harder rejection of the version in use.

How To Debug It

The fastest path is to inspect the actual request that reached the server:

GET /resource HTTP/1.1

or whatever version line appeared on the wire.

Then check:

  1. what version the client meant to send
  2. what version the proxy forwarded
  3. what versions the origin actually supports
  4. whether TLS or ALPN negotiation was bypassed or broken

Practical Fix Mindset

Do not start by hard-coding a new version string. Start by understanding how the request got to the server in the first place. With 505, the bug is often in the path between client and origin rather than in the app logic itself.

Frequently Asked Questions

What does 505 HTTP Version Not Supported mean?

It means the server refuses to handle the request because the HTTP version used by the client is not supported for that exchange.

When does 505 occur?

It is rare, but can appear with custom clients, broken proxies, invalid request lines, or infrastructure that expects a different HTTP version than the one received.

How do I fix a 505 error?

Check which HTTP version the client actually sent, then verify what the server and any intermediaries support and negotiate.

Is 505 common?

No. Modern browsers and servers usually negotiate compatible versions automatically, so 505 mostly shows up in edge cases or misconfigurations.

Keep Learning