505 HTTP Version Not Supported
The server refuses to support the HTTP protocol version that was used in the request message.
Defined in RFC 9110 §15.6.6
What 505 means
HTTP 505 HTTP Version Not Supported means the server refuses to service the request because the HTTP protocol version stated in the request line is one it does not support, or does not support with the semantics the client used. RFC 9110 places this alongside the other 5xx codes because the server is making a deliberate choice about its own capabilities rather than rejecting anything wrong with the request's content; a syntactically identical request sent with a supported version would likely succeed. In practice this code is exceedingly rare because virtually every server on the public internet speaks HTTP/1.1 at minimum.
The most realistic scenario today involves custom clients, embedded devices, or legacy scripts that hardcode an ancient HTTP/0.9-style request line, or, at the opposite extreme, a proxy or gateway that has not been updated to understand a newer version like HTTP/2 or HTTP/3 and receives a request already negotiated in that version by a layer in front of it. Load balancers and API gateways occasionally return a synthetic 505 when protocol negotiation between an edge terminator and an internal service falls out of sync, rather than the origin application itself generating it.
Common causes
- A custom or legacy client sends a request line using an HTTP version the server does not implement, such as a bare HTTP/0.9-style request.
- An internal service or older proxy in the chain has not been upgraded to understand HTTP/2 or HTTP/3 semantics a front-end edge already negotiated.
- A misconfigured reverse proxy downgrades or mismatches the protocol version between itself and the origin, producing a version the origin rejects.
- A hand-rolled HTTP client or testing tool sends a malformed or nonstandard version string in the request line.
How to fix a 505
If you are the client (browser user or API caller)
- Use a standard, well-maintained HTTP client library instead of a hand-rolled one, since virtually all of them default to a supported HTTP/1.1 or higher.
- Check any explicit protocol version configuration in the client, such as curl's version flags or an SDK's transport settings, and align it with what the server actually supports.
- If the request originates from an embedded device or legacy system, confirm whether the target server has dropped support for old protocol versions entirely.
If you run the server
- Confirm which HTTP versions the web server and every proxy in the chain actually support, and keep them consistent end to end.
- Upgrade older internal services or load balancers so the protocol version negotiated at the edge, such as HTTP/2 or HTTP/3, is preserved or correctly downgraded through the whole chain.
- Return a clear, documented list of supported versions in monitoring or logs so this rare error is easy to diagnose rather than mysterious.
Example
GET / HTTP/0.9
HTTP/1.1 505 HTTP Version Not Supported
Content-Type: text/plain
This server requires HTTP/1.1 or higher.Try it live
Our free status responder returns a real HTTP 505 you can point tests, monitors or a browser at.
GET https://mcp.httpstatus.com/status/505