HTTP 505 HTTP Version Not Supported — What It Means & How to Fix
HTTP 505 HTTP Version Not Supported is an HTTP response status code that indicates the server refuses to support the HTTP protocol version used in the request. This error is rare in modern web environments but can occur with legacy clients, misconfigured proxies, or during HTTP/2 upgrade negotiation failures.
What It Means
Defined in RFC 7231 Section 6.6.6, the 505 status code signals that the server does not support the major HTTP version used in the request line. The server should indicate which protocol versions it does support in the response.
This is distinct from 426 Upgrade Required — 505 means the version itself is unsupported, while 426 means the server wants the client to switch to a specific protocol.
When It’s Sent
- Legacy HTTP/0.9 requests — Ancient clients or scripts sending HTTP/0.9 requests to modern servers.
- HTTP/2 upgrade failures — Clients that incorrectly negotiate HTTP/2 and send malformed frames.
- Misconfigured proxies — A proxy rewrites the HTTP version to one the backend server does not support.
- Load balancer version mismatch — Front-end load balancer speaks HTTP/2 but back-end only handles HTTP/1.1.
- Custom clients with wrong version strings — Hardcoded HTTP version strings like
HTTP/10.0orHTTP/3.0in custom software.
Real Example
The following curl command manually sets an unsupported HTTP version:
curl --http1.0 https://httpbin.org/status/505 -v 2>&1 | grep -E "< HTTP|Version"Expected response:
HTTP/1.1 505 HTTP Version Not Supported
Date: Sat, 20 Jun 2026 12:00:00 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 198
<html>
<head><title>505 HTTP Version Not Supported</title></head>
<body><h1>HTTP Version Not Supported</h1><p>The HTTP version used in the request is not supported by this server.</p></body>
</html>How to Debug & Fix
Client-Side
- Update the HTTP client library — Old libraries may send HTTP/0.9 or HTTP/1.0 by default.
- Check proxy configuration — If behind a proxy, ensure the proxy uses a supported HTTP version.
- Use the latest HTTP version — Modern browsers and tools use HTTP/1.1 or HTTP/2 automatically.
- Verify HTTP/2 negotiation — If using HTTP/2, ensure the TLS handshake uses ALPN correctly.
- Test with a different client — Try curl, a browser, or a different HTTP library to isolate the issue.
Server-Side
- Check the configuration — Ensure the server supports the HTTP versions your clients use.
- Inspect proxy/load balancer — If using a reverse proxy, verify the back-end HTTP version compatibility.
- Update legacy software — Upgrade old server software that only supports HTTP/1.0.
- Log the request-line version — Capture the version string from the request line to identify the client.
- Add Accept header for versioning — Use
UpgradeandAcceptheaders to negotiate protocol versions.
Common Causes Table
| Scenario | Likely Cause | How to Fix |
|---|---|---|
| Old script returns 505 | Script hardcodes HTTP/0.9 in the request | Update the script to use HTTP/1.1 |
| Proxy error after upgrade | Load balancer upgraded to HTTP/2 but backend uses HTTP/1.1 | Configure proxy to translate between versions |
| Custom client fails | Hardcoded HTTP/10.0 version string | Fix the version string to HTTP/1.1 |
| Telnet-based request | Manual HTTP request sent with wrong version | Use a proper HTTP client like curl |
| Legacy embedded device | IoT device sends HTTP/1.0 requests | Update device firmware or add a proxy that translates |
FAQ
Related Codes
HTTP 426 Upgrade Required — The server requires a protocol upgrade.
HTTP 501 Not Implemented — The server does not support the functionality required.
HTTP 400 Bad Request — The server cannot process the request due to malformed syntax.
HTTP 511 Network Authentication Required — Network authentication is required to access the resource.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro