What Is the HTTP 505 Error Code and How to Fix It in 2026?
TL;DR
A 505 error means "HTTP Version Not Supported" — the server rejected the HTTP version stated in the request line, which usually has nothing to do with the specific page you were trying to load
The documented technical causes are a malformed request line, a request line terminated with the wrong line ending, or an intermediary (proxy or load balancer) that mishandles the forwarded request before it reaches the origin server.
As a visitor, updating or switching your browser and clearing its cache resolves most client-side 505s, since an outdated client can send a version modern servers no longer accept.
As a server admin, the fix usually lives in your reverse proxy or web server configuration — nginx's proxy_http_version directive and Apache's force-proxy-request-1.0 setting both control which HTTP version reaches your backend.
A proxy or load balancer sitting between the client and your origin server is a documented cause of 505s, so ruling out that layer before touching application code saves debugging time.
A 505 is a different failure from a 502, 503, or 504 gateway error and from a 426 Upgrade Required response, even though all of them originate on the server side.
What the HTTP 505 error means
An HTTP 505 response means the server has refused to process the request because it doesn't support the HTTP version the request declared. It's a narrower failure than most status codes a browser or HTTP proxy can surface, since it concerns the protocol envelope itself rather than authentication, rate limits, or the resource being requested. Per the MDN HTTP status code reference, "the HTTP 505 HTTP Version Not Supported server error response status code indicates that the HTTP version used in the request is not supported by the server." That framing matters: a 505 is a statement about the protocol envelope of the request, not about the URL, the page content, or (usually) your account or permissions. Seeing a 505 doesn't mean the site is down in the way a 404 or 500 would suggest — it means something in the path between your client and the server sent a request the server couldn't parse as a version it recognizes.
Three technical situations produce this response, and MDN documents all three directly. A malformed request line — for example a raw, unencoded space where a URL should have %20 — can confuse how the server parses the HTTP version token that follows it. A request line terminated with a bare \n instead of the required \r\n can have the same effect, since the server's parser is looking for a specific line ending before it reads the version. The third cause is the one most often missed: an intermediary, such as a load balancer or proxy, that doesn't correctly forward the version information in the request line it passes along, which leaves the origin server reading a version that was never actually what the client sent.
Common causes worth ruling out first
In practice, a handful of everyday situations account for most 505s reported by site visitors and developers. An outdated browser or HTTP client library that still issues requests in a legacy format is one of the more common triggers, especially with automated scripts or older SDKs that haven't been updated in years. A misconfigured web server — one set to reject HTTP/1.0 entirely, or one with a virtual host pointing at the wrong protocol handler — is another. Outdated server software that predates wide HTTP/1.1 or HTTP/2 support can also produce it. The fourth, and the one this guide spends the most time on, is a proxy or intermediary altering the HTTP version during transmission, which lines up exactly with the third cause MDN lists.
Take a Quick Look
If you're getting inconsistent 505s while running requests through a rotating proxy pool, the proxy itself can be the thing mangling your request line — Nstproxy's gateway speaks standard HTTP(S) and SOCKS5 rather than a custom protocol implementation, so it isn't the variable you have to debug.
Start with your browser, since that's the fastest thing to change and rule out. Update it to the current version, since browser vendors periodically drop support for or change how they negotiate older HTTP behavior, and an outdated build is one of the documented triggers. If updating doesn't help, try the same URL in a completely different browser — if the second browser loads the page normally, the issue is specific to your original browser's configuration or an extension, not the website. Clear your browser's cache next, since a cached, malformed version of a request or a stale service worker can occasionally resubmit a broken request line on repeat visits. Finally, double-check the URL itself for stray characters, especially unencoded spaces or unusual punctuation pasted in from somewhere else, since a malformed request line is one of the three causes MDN documents directly.
How to fix a 505 error on your server
If you administer the server, the fix is almost always a configuration setting rather than application code. On nginx, check the proxy_http_version directive in any location or server block that proxies to a backend — nginx's own documentation lists the syntax as proxy_http_version 1.0 | 1.1 | 2;, with a default of 1.1 since nginx 1.29.7 (versions before that defaulted to 1.0). If your backend only speaks HTTP/1.1 and your nginx build predates that change, an explicit proxy_http_version 1.1; in the relevant block removes the ambiguity:
On Apache, the equivalent control points are two mod_proxy environment variables set via SetEnv. Apache's own mod_proxy documentation describes force-proxy-request-1.0, which "forces the proxy to use HTTP/1.0 with no keepalive" toward the backend and is meant for backends that don't correctly implement HTTP/1.1 or keepalive, plus proxy-nokeepalive, which disables keepalive connections to the backend without forcing HTTP/1.0. Apache's documentation shows them together like this:
If you have a load balancer or CDN in front of the origin server, check its HTTP version settings too — a 505 that only appears through the load balancer and not when you hit the origin directly points squarely at that intermediary rewriting or misreporting the request line.
505 vs. other HTTP error codes
A 505 is easy to lump in with other server-side errors, but each one points somewhere different. A 502 Bad Gateway or 504 Gateway Timeout means an intermediary reached the backend and got either an invalid response or no response in time — the protocol version wasn't the problem, connectivity or response handling was. A 503 Service Unavailable usually signals the server is intentionally refusing requests, often for maintenance or because it's overloaded, with no version mismatch involved at all. A 429 Too Many Requests error is different again — it's a rate limit, not a protocol disagreement, and the fix (spacing out or distributing requests) has nothing in common with a 505 fix. A 426 Upgrade Required is the closer cousin: it also concerns HTTP version negotiation, but it's the server asking the client to switch to a newer version rather than rejecting the request outright, and it's typically paired with an Upgrade header naming the version it wants. Knowing which of these you're actually looking at narrows the fix before you touch any configuration.
When a proxy is the real cause
If 505s show up specifically when requests run through a proxy, VPN, or load balancer — and not when the same request goes directly to the origin — the intermediary is very likely mangling the request line, exactly as MDN's third documented cause describes. Isolate this by running the same request twice, once through the proxy and once direct, or by using a proxy-checking tool to confirm the proxy itself is responding and forwarding correctly before assuming the target server is at fault. This matters most for anyone running automated requests at volume, where a flaky or poorly built proxy can introduce version-mismatch errors that look like they're coming from the target site.
Nstproxy's Residential Lite line is one option for that specific situation. It's a residential proxy service that documents standard HTTP(S) and SOCKS5 protocol support rather than a bespoke or partial implementation, so requests routed through it follow the same version negotiation any modern client or reverse proxy already expects. It's aimed at developers and small teams running scraping, monitoring, or automation workloads who need to rule out the proxy layer as a variable when a request pipeline is throwing inconsistent 505s or similar errors. Access is sold in prepaid data packages rather than a flat monthly subscription, which fits a short debugging run or moderate ongoing use better than it fits continuous, high-volume traffic. It's worth knowing going in that Residential Lite is one product line among several Nstproxy offers, so a workload that needs a dedicated static IP or mobile-carrier IPs specifically would look at a different line instead.
Standard HTTP(S) and SOCKS5 support — the same two protocol families ChromeOS, most HTTP client libraries, and reverse proxies like nginx already expect, so there's no custom protocol translation layer to debug.
50M+ residential IPs across 200+ countries and regions — useful when the underlying task is large-scale request distribution, not just protocol compatibility.
Prepaid packages from 10GB up to 10TB — sized for testing a fix on a small package before committing to ongoing volume.
A dashboard-generated gateway per account — you get a single, consistent connection point to point your requests at, which makes it easier to isolate whether an error originates from your own code, the proxy, or the destination server; setup steps are documented for pointing an HTTP client or browser at that gateway.
A 505 error is narrower than it looks: it's specifically a disagreement about HTTP protocol version between the client, any intermediary, and the server, not a generic "something broke" signal. Visitors can usually clear it by updating or switching browsers and checking the URL for stray characters. Server admins should check proxy_http_version on nginx or the force-proxy-request-1.0/proxy-nokeepalive environment variables on Apache before assuming the problem is in application code, and anyone running requests through a proxy or load balancer should test a direct request to the origin to see whether the intermediary is the actual source.
No, a 505 specifically means the server rejected the HTTP version stated in the request, which is a narrower problem than the server being unreachable or overloaded, and it doesn't necessarily indicate the site is down for other visitors.
Q: Is a 505 error caused by my computer or by the website?
It can be either side: MDN documents malformed request lines and incorrect line termination (usually a client-side issue) alongside intermediary mishandling of the forwarded request (a server- or network-side issue), so the fix depends on which of the two you're dealing with.
Q: What's the difference between a 505 and a 502 or 503 error?
A 505 is specifically about HTTP version compatibility, while a 502 means an intermediary got an invalid response from the backend and a 503 means the server is intentionally refusing requests, typically for maintenance or overload, with no version mismatch involved in either case.
Q: Can a proxy or VPN cause a 505 error?
Yes — MDN lists an intermediary that mishandles the forwarded request line as one of the three documented causes, so if a 505 only appears when traffic passes through a proxy, load balancer, or VPN and not on a direct request, that intermediary is the most likely source.
Q: Do I need to change server code to fix a 505 error?
Usually not; the fix is typically a configuration change — the proxy_http_version directive on nginx or the force-proxy-request-1.0/proxy-nokeepalive settings on Apache — rather than a change to application code.
A school Chromebook's website block is usually a network-level or device-level filter, and the fix depends on which one you're facing. This guide walks through configuring a manual HTTP/SOCKS5 proxy in ChromeOS settings, explains why admin-managed devices often lock that screen, warns against risky free proxy lists, and covers the school-policy considerations before you try any of it.
Lena Zhou
Aug. 5th 2026
110M+ real IPs with 99.9% access success
Blazing-fast average response ~0.5s for high-concurrency tasks
From only $0.1/GB
Get immediate access to premium residential, datacenter, IPv6 and ISP proxy pools.