An HTTP 505 HTTP Version Not Supported response indicates that the server does not support, or refuses to support, the major version of HTTP that was used in the request message.

HTTP 505 at a glance

  • Status: 505
  • Phrase: HTTP Version Not Supported
  • Class: 5xx Server Error
  • Specification: RFC 9110 Section 15.6.6
  • Typical context: Obsolete protocol versions (HTTP/0.9) or misconfigured proxy protocol bridges
  • Client retry: Safe after upgrading client protocol version to HTTP/1.1, HTTP/2, or HTTP/3

What a 505 response tells you

When a client receives an HTTP 505 status code, specific protocol facts are established:

  1. The server refused the major protocol version: The server determined that the major version specified in the request line cannot or will not be serviced.
  2. The response should explain supported versions: The response entity should describe why that version is not supported and what other versions are supported by that server.

What a 505 does not tell you

  • It does not mean the application crashed (500).
  • It does not mean the endpoint URL is missing (404).
  • It does not mean the request headers or body are malformed (400).

Similar status codes

500 Internal Server Error

A generic server crash.

502 Bad Gateway

A reverse proxy failed to establish communication with an upstream origin.

For more information, see our guide on 500 Internal Server Error.

Diagnostic scenarios

Scenario 1: Legacy embedded client transmitting obsolete HTTP/1.0

An IoT device or legacy embedded device hardcodes HTTP/1.0 in its request string. A cloud API Gateway configured with strict security baselines rejects non-HTTP/1.1/HTTP/2 traffic with 505.

Scenario 2: TLS ALPN mismatch on reverse proxy

A custom HTTP client requests an experimental HTTP/3 QUIC connection without verifying server ALPN support, prompting the edge server to return 505.

Common causes of HTTP 505

Client transmitted unsupported major HTTP version

A legacy client or custom script transmitted a request line specifying an obsolete version (such as HTTP/0.9 or HTTP/1.0) rejected by modern server security policies.

Reverse proxy ALPN and upstream protocol mismatch

An edge proxy negotiated HTTP/2 or HTTP/3 with the client but attempted to forward raw binary frames to an upstream server that only understands HTTP/1.1.

Malformed HTTP version string in request line

A malformed request line sent an unparseable version string (e.g., HTTP/1.9 or HTTP/2.0 instead of standard formatting).

Headers you may encounter

  • Content-Type: Typically application/problem+json (RFC 7807).
  • Date: The timestamp when the rejection occurred.

Troubleshooting flow

HTTP 505 HTTP Version Not Supported
  |
  +-- What HTTP version is the client sending?
        |
        +-- HTTP/0.9 or HTTP/1.0:
        |     -> Upgrade client library to HTTP/1.1 or HTTP/2.
        |
        +-- HTTP/2 or HTTP/3:
              -> Check reverse proxy ALPN and protocol translation settings.

What to check before changing backend code

  1. Check the raw HTTP request line version token.
  2. Verify TLS ALPN negotiation on load balancers.
  3. Review NGINX or Envoy proxy protocol translation configurations.

How to verify the fix

Test the endpoint with curl explicitly enforcing HTTP/1.1 or HTTP/2:

curl -i --http1.1 https://api.example.test/v1/status

Ensure the server returns 200 OK over standard modern HTTP versions.

Remediation paths to evaluate

If client uses legacy libraries

Upgrade client HTTP SDKs to modern versions supporting HTTP/1.1, HTTP/2, or HTTP/3.

If proxy translation is misconfigured

Configure the reverse proxy (e.g., NGINX proxy_http_version 1.1;) to cleanly bridge modern client protocols to backend application origins.

FAQ

Is HTTP/1.1 still universally supported?

Yes. Virtually all HTTP servers support HTTP/1.1 as a baseline fallback protocol.

Can a client retry after a 505 error?

Yes, but the client must upgrade its request protocol version to a version supported by the server.

Key takeaway

HTTP 505 HTTP Version Not Supported indicates that the server refused the major protocol version in the request line. Upgrade client HTTP libraries to HTTP/1.1 or HTTP/2 and verify proxy protocol bridging.