505 HTTP Version Not Supported: what it means and what to do

A 505 is the server rejecting the dialect, not the words. The official definition in RFC 9110 is that the server does not support, or refuses to support, the major version of HTTP used in the request message. It is one of the rarest codes in normal browsing, because browsers speak versions every server accepts. It appears instead around very old software, hand-rolled scripts, embedded devices, and proxies mangling requests on the way through.

If you ran into this

  1. If it came from a script or tool, check the HTTP version it sends. Old libraries and hand-built requests sometimes emit HTTP/1.0 or a malformed version string. Forcing HTTP/1.1, or using a maintained HTTP library, resolves most cases.
  2. Update the client software. Ancient applications and embedded devices can be stuck on protocol versions modern servers, especially behind CDNs, no longer accept.
  3. Test without the proxy or VPN. Intermediaries that rewrite requests can corrupt the version line. A direct connection tells you whether the middleman is the problem.

If it is your site or your server

  1. Check what actually arrived. Your access log records the protocol of every request. A 505 spike usually shows a single broken client or bot sending a garbled version string, not a server fault.
  2. Review CDN and load balancer protocol settings. If HTTP/1.0 support or specific versions were disabled during a hardening pass, legitimate old clients may be the collateral damage.
  3. Send the versions you do support. RFC 9110 expects the response to make clear which versions would have worked, so a well-behaved client can retry intelligibly.
Everyone: a 505 is a version negotiation failure, closer to a language barrier than a broken page. Find out what the client spoke and what the server accepts, and the fix is in the gap.

Common questions

Can a normal browser cause a 505? Practically never. Every mainstream browser negotiates a standard HTTP version that servers support. A 505 almost always involves a script, an old library, a network device, or an intermediary rewriting the request.

What is the difference between 501 and 505? A 501 says the server does not support the functionality requested, most often the HTTP method. A 505 is narrower: it says the server does not support the major HTTP version of the request itself.

Related errors

501 Not Implemented · 400 Bad Request · 502 Bad Gateway