505 HTTP Version Not Supported
HTTP response status code 505 HTTP Version Not Supported is a server error indicating the server does not support the major HTTP protocol version used in the request.
Usage
The 505 HTTP Version Not Supported status code means the server does not support the major protocol version from the request. The server is expected to generate a response explaining why the specific HTTP protocol version is not supported and listing which HTTP protocols the server is willing to accept for this URI.
SEO impact
Search engines like Google do not index a URL returning a 505 HTTP Version Not Supported status. Previously indexed URLs returning this status code are removed from search results.
Example
The client requests a resource using HTTP/2 and the server responds with a 505 HTTP Version Not Supported status code because the server only supports HTTP/1.1.
Request
GET / HTTP/2
Host: www.example.re
Response
HTTP/1.1 505 HTTP Version Not Supported
Content-Type: text/html; charset=UTF-8
Content-Length: 141
<html>
<head>
<title>Protocol Not Supported</title>
</head>
<body>
<p>HTTP/2 not supported. Use HTTP/1.1.</p>
</body>
</html>
How to fix
Identify the protocol mismatch. The server log or response body names which HTTP version was rejected and which versions the server accepts.
On the client side:
- Downgrade the request to a version the server
supports. Most servers accept HTTP/1.1.
In
curl, force a version with--http1.1or--http2. - Check for misconfigured proxies or load balancers in the request path. An intermediary rewriting the protocol version line to an unsupported value triggers a 505 at the next hop.
On the server side:
- Nginx. HTTP/2 support requires the
listen 443 ssl;directive with a separatehttp2 on;directive in the same server block. Without TLS, nginx does not serve HTTP/2. HTTP/3 requires building nginx with QUIC support and addinglisten 443 quic;. - Apache. Enable
mod_http2and addProtocols h2 h2c http/1.1to the virtual host. Restart Apache after the change. Apache requires OpenSSL with ALPN support for HTTP/2 over TLS. - IIS. HTTP/2 is enabled by default on Windows Server with IIS 10 and later. Older IIS versions require a manual registry edit or upgrade.
- Outdated server software. Old builds of web servers lack HTTP/2 or HTTP/3 support entirely. Update to a current stable release.
Verify the fix by making a request with the previously rejected HTTP version and confirming a successful response.
Code references
.NET
HttpStatusCode.HttpVersionNotSupported
Rust
http::StatusCode::HTTP_VERSION_NOT_SUPPORTED
Rails
:http_version_not_supported
Go
http.StatusHTTPVersionNotSupported
Symfony
Response::HTTP_VERSION_NOT_SUPPORTED
Python3.5+
http.HTTPStatus.VERSION_NOT_SUPPORTED
Java
java.net.HttpURLConnection.HTTP_VERSION
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED
Angular
@angular/common/http/HttpStatusCode.HttpVersionNotSupported
Takeaway
The 505 HTTP Version Not Supported status code is a server error generated when the server is unable or unwilling to process a request because the HTTP protocol version is not supported.
See also
- RFC 9110: HTTP Semantics
- Google: HTTP status codes and network errors
- HTTP/1.1
- HTTP/2
- HTTP/3
- 500 Internal Server Error
- HTTP status codes