HTTP Status Codes

HTTP 505 HTTP Version Not Supported

505
LowWeb ServerReference page

HTTP Version Not Supported

A 505 response indicates the server received an HTTP request whose protocol version it does not support or refuses to handle. The version appears in the request line of HTTP/1.x messages, and a mismatch triggers this server-side error. Unlike most 5xx codes, 505 is deterministic — the same request from the same client produces the same response until the server configuration or client behavior changes.

Visual summary

A quick reference view of how HTTP 505 works: A mismatch in communication standards between client and server.

HTTP 505 visual summary showing a mismatch in communication standards between client and server.
Visual summary: 505 means the server does not support the HTTP protocol version used by the client.

What 505 Means

The shortest useful reading of this status code.

HTTP Version Not Supported.

This status falls into the 5xx class, indicating a server-side error outcome for the request.

Quick read

HTTP Version Not Supported

A 505 response indicates the server received an HTTP request whose protocol version it does not support or refuses to handle. The version appears in the request line of HTTP/1.x messages, and a mismatch triggers this server-side error. Unlike most 5xx codes, 505 is deterministic — the same request from the same client produces the same response until the server configuration or client behavior changes.

Technical Context

How this status behaves without turning the page into a repair guide.

Standard usage

Modern protocol negotiation largely bypasses the HTTP request line. HTTP/2 and HTTP/3 establish their protocol version during the TLS handshake via ALPN (Application-Layer Protocol Negotiation), before any HTTP message is sent. This means a 505 response is relatively rare in production — most version mismatches surface as TLS negotiation failures rather than HTTP-level errors.

Technical nuance

When 505 does appear, it typically involves HTTP/1.x traffic where the version token is explicitly parsed from the request line. A server configured to reject HTTP/1.0 will return 505 rather than silently downgrading. This behavior lets administrators enforce minimum protocol standards across their infrastructure without ambiguity.

Implementation detail

The distinction between 505 and related codes matters for diagnosis. A 501 Not Implemented means the server does not recognize the request method, while a 426 Upgrade Required asks the client to switch protocols but indicates the server understood the request. A 505 specifically targets the protocol version itself, independent of method or payload.

Architecture

The server response ideally includes an explanation of which protocol versions it does support, sometimes accompanied by an Upgrade header suggesting a compatible alternative. However, not all servers populate this detail, leaving the client to infer the supported range from documentation or trial requests.

Related HTTP Codes

Nearby HTTP status codes help clarify how 505 differs inside the same response family.

505

HTTP Version Not Supported

A 505 response indicates the server received an HTTP request whose protocol version it does not support or refuses to handle. The version appears in the request line of HTTP/1.x messages, and a mismatch triggers this server-side error. Unlike most 5xx codes, 505 is deterministic — the same request from the same client produces the same response until the server configuration or client behavior changes.

500

Internal Server Error

the server hit an unexpected condition while handling the request

501

Not Implemented

the server does not support the HTTP method used in the request

400

Bad Request

the server cannot process the request because it is malformed

Common Causes

Client requesting an outdated HTTP/0.9 or HTTP/1.0 protocol the server no longer accepts

A common condition that triggers a 505 response when the web server evaluates the transaction.

Malformed request line where the HTTP version token is corrupted or missing

A common condition that triggers a 505 response when the web server evaluates the transaction.

Security scanner or fuzzing tool sending fabricated protocol version strings

A common condition that triggers a 505 response when the web server evaluates the transaction.

Reverse proxy forwarding a version identifier the upstream server does not recognize

A common condition that triggers a 505 response when the web server evaluates the transaction.

Typical Scenarios

01

An IoT device with an embedded HTTP/1.0 client connects to a server that only accepts HTTP/1.1 or later

02

A security testing tool sends deliberately malformed version tokens like HTTP/9.9 to probe server behavior

03

A misconfigured load balancer rewrites the request line and introduces a version string the origin rejects

What To Know

A 505 points to a protocol-level configuration mismatch rather than a transient server problem. For client-side resolution, the requesting library or tool needs to use a protocol version the server accepts — typically HTTP/1.1 or HTTP/2. For server administrators, the error may indicate overly strict protocol policies or a proxy layer introducing incompatible version strings into forwarded requests. Checking server logs for the rejected version token reveals whether the issue is a legitimate old client or a misconfigured intermediary.

Frequently Asked Questions

Common interpretation questions about HTTP 505.

The fix depends on which side controls the protocol version. On the client side, updating the HTTP library to use HTTP/1.1 or HTTP/2 resolves most mismatches. On the server side, adjusting protocol policies to accept legacy versions or fixing proxy configurations that corrupt the version token eliminates the error.

Rarely. Browsers negotiate HTTP versions via TLS ALPN before sending any HTTP message, so version mismatches surface as connection failures rather than 505 responses. The error is more common in custom HTTP clients, security scanners, or misconfigured proxies that construct request lines manually.

A 426 means the server understood the request but requires a different protocol version to process it, typically accompanied by an Upgrade header. A 505 means the server simply does not support the version used, without offering a specific upgrade path. Both indicate version problems, but 426 is prescriptive while 505 is declarative.

Yes. If a proxy rewrites the request line and introduces a version identifier the origin server rejects, the origin returns 505. This often happens when a proxy forwards HTTP/2 traffic to a backend that only speaks HTTP/1.1 without properly downgrading the version in the request line.