🎉 All Proxy Prices Reduced — Save Up To36%newResidential Lite Proxies$0.50/GB
505 Error Code: Meaning, Causes & How to Fix It (2026)
505

505 Error Code: Meaning, Causes & How to Fix It (2026)

HTTP 505 — HTTP Version Not Supported

⚡ Key Takeaways

  • HTTP 505 means the server cannot process the request because it does not support the HTTP version the client used.
  • It is a server-side 5xx error, but the root cause is often on the client side — an outdated browser, misconfigured scraper, or proxy that downgrades the HTTP version.
  • 505 is distinct from other 5xx errors: it signals a specific protocol version mismatch, not a general server malfunction.
  • For web scrapers and automation tools, 505 errors are frequently caused by libraries defaulting to HTTP/1.0 when the target server requires HTTP/1.1 or HTTP/2.
  • Fixing it almost always means either upgrading the client's HTTP version or adjusting how an intermediary (proxy, load balancer) handles protocol negotiation.

Most HTTP error codes are immediately self-explanatory — a 404 means the page is gone, a 403 means access denied. The 505 is less obvious. It does not mean the server is down. It does not mean your request was wrong. It means the server and the client are attempting to communicate in incompatible versions of the HTTP protocol — and the server is refusing to proceed rather than risk a broken exchange.

For regular users in modern browsers, a 505 is rare to the point of being unusual. For developers running web scrapers, automation pipelines, or API clients with older HTTP libraries, it is a specific and fixable configuration error. This guide explains exactly what triggers it, how it differs from similar 5xx codes, and the complete set of fixes — ordered by cause and audience.

What Is the 505 Error Code?

The HTTP 505 status code means: "HTTP Version Not Supported." It is defined in RFC 7231 Section 6.6.6 as a server error returned when the server does not support, or refuses to support, the major HTTP protocol version used in the client's request.

Every HTTP request begins with a request line that specifies the HTTP version being used — for example:

GET /page HTTP/1.1
Host: example.com

If that version string is one the server does not accept — whether too old (HTTP/1.0) or improperly formed — the server returns 505 and closes the connection without processing the request. As MDN Web Docs notes, this commonly happens when a request line is malformed — for example, spaces in a URL causing GET /path to resource HTTP/1.1 to be parsed incorrectly — or when a load balancer mishandles percent-encoded URLs and the origin server receives garbled version information.

HTTP Version History: Why Version Mismatches Happen

The HTTP protocol has evolved through four major versions, each with different capabilities and compatibility requirements. Understanding the version landscape explains why 505 errors occur more often in automated tools than in browsers:

HTTP Version Year Key Feature Current Status
HTTP/1.0 1996 One request per connection, no persistent connections Largely deprecated — many servers reject it
HTTP/1.1 1997 Persistent connections, chunked transfer encoding Universal baseline — all servers support it
HTTP/2 2015 Multiplexing, header compression, binary framing Widely adopted — standard on most modern sites
HTTP/3 2022 QUIC-based, UDP transport, reduced latency Growing adoption — ~30% of top sites as of 2026

Adoption figures per W3Techs HTTP/3 usage statistics.

Modern browsers automatically negotiate the highest mutually supported HTTP version with every server — Chrome, Firefox, Safari, and Edge all handle this transparently. The 505 appears when a client — typically a scraper, legacy application, or misconfigured proxy — hardcodes or defaults to an HTTP version the target server does not accept.

505 vs. Other 5xx Error Codes

Error Code Name Root Cause Key Difference from 505
500 Internal Server Error Unspecified server-side failure 500 is generic — no specific cause named. 505 identifies protocol mismatch precisely.
501 Not Implemented Server does not support the HTTP method used (e.g., PATCH) 501 is about an unsupported method; 505 is about an unsupported protocol version.
502 Bad Gateway Upstream server returned an invalid response to a gateway 502 is a communication failure between servers; 505 is a protocol negotiation failure.
503 Service Unavailable Server temporarily overloaded or down for maintenance 503 is a capacity/availability issue; 505 is a permanent protocol incompatibility.
504 Gateway Timeout Gateway did not receive a timely response from upstream 504 is a timeout; 505 is a version rejection — the server responded, but refused.
426 Upgrade Required Server requires the client to upgrade to a different protocol 426 is the closest relative — also about protocol version, but requests an upgrade rather than simply refusing.

Status code definitions: Abstract API HTTP 505 reference; MDN Web Docs RFC 7231.

6 Root Causes of the 505 Error

📜 Outdated HTTP Library or Client

Scraping scripts using old versions of Python's urllib, legacy curl builds, or old HTTP clients may default to HTTP/1.0 for requests. Servers that have dropped HTTP/1.0 support return 505 immediately.

🔧 Proxy Downgrading the HTTP Version

A proxy in the request path — including a SOCKS5 or HTTP proxy — may strip HTTP/2 negotiation headers or rewrite the request line to HTTP/1.1 or HTTP/1.0 before forwarding. The target server then receives a version it does not support.

⚖️ Load Balancer Misconfiguration

Misconfigured load balancers — especially those that do not properly handle percent-encoded URLs — can corrupt the request line, causing the server to receive garbled version information. MDN specifically documents this as a common 505 trigger.

🖥️ Outdated Server Software

A server running an old version of Apache, NGINX, or IIS may not support HTTP/2 or HTTP/3 even when the client requests it. Equally, some heavily locked-down servers drop HTTP/1.0 support and only accept HTTP/1.1 and above.

🛡️ Firewall or Security Filter

Web Application Firewalls (WAF) and aggressive network firewalls can modify or strip protocol negotiation headers, causing version mismatches that neither the client nor the origin server intended.

🤖 Anti-Bot Version Enforcement

Some servers deliberately return 505 in response to bot-like request patterns — returning this error instead of 403 to obscure their detection logic. Scrapers sending HTTP/1.0 or missing standard HTTP/1.1 headers are common triggers. As IPRoyal notes, server software may intentionally block certain automated requests this way.

3 Real-World Scenarios Where 505 Errors Occur

🕷️

Python Scraper with Outdated Library

A data engineer runs a scraping script using Python's urllib without specifying an HTTP version. The library defaults to HTTP/1.0 for some request types. The target e-commerce site, running NGINX configured to reject HTTP/1.0, returns 505. Fix: switch to requests or httpx with HTTP/2 support, or explicitly set HTTP/1.1 headers.

⚖️

Load Balancer with Unencoded URL

A client requests GET /search?q=proxy server HTTP/1.1 — a URL with an unencoded space. The load balancer splits the request line at the space, forwarding GET /search?q=proxy and treating server as the HTTP version string. The origin server receives an unknown version and returns 505. Fix: percent-encode URLs before requesting (/search?q=proxy%20server), or configure the load balancer to handle URL encoding correctly.

🔌

SOCKS5 Proxy Downgrading HTTP/2

A developer routes an HTTP/2-capable scraper through a SOCKS5 proxy. The proxy configuration strips ALPN (Application-Layer Protocol Negotiation) headers that enable HTTP/2 negotiation, causing the connection to fall back to HTTP/1.0. A server that has disabled HTTP/1.0 returns 505. Fix: configure the proxy to pass ALPN headers through, or use an HTTP proxy that explicitly supports HTTP/2 forwarding.

How to Fix a 505 Error: Complete Checklist

The correct fix depends on whether you are a browser user, a developer, or a server administrator. Work through the section that applies to your context.

For Browser Users

Browser User

1. Update Your Browser

Outdated browsers are the most common client-side cause. Open browser settings and check for updates. Chrome, Firefox, Edge, and Safari all auto-update — confirm the update is applied and restart.

Browser User

2. Clear Browser Cache and Cookies

Corrupted cached data can conflict with protocol negotiation. Clear cache and cookies (Chrome: Settings → Privacy → Clear browsing data), then reload the page. This resolves 505 errors caused by stale protocol state cached from a previous session.

Browser User

3. Test in a Different Browser

If the error appears in one browser but not another, the issue is browser-specific — a corrupt installation, extension conflict, or outdated configuration. Try Chrome, Firefox, and Edge to isolate.

Browser User

4. Disable Browser Extensions

Some extensions — particularly privacy tools, ad blockers, and VPN extensions — modify HTTP request headers or intercept protocol negotiation in ways that trigger 505. Disable all extensions, reload, and re-enable one by one to identify the cause.

For Developers & Web Scrapers

Developer

5. Upgrade Your HTTP Library

Replace urllib with requests (HTTP/1.1) or httpx (HTTP/1.1 + HTTP/2). Verify the version your library sends by checking the request line in server logs or using a proxy interceptor like mitmproxy. For httpx with HTTP/2: pip install httpx[http2] then client = httpx.Client(http2=True).

Developer

6. Explicitly Set the HTTP Version

Some libraries let you force a specific version. With curl: use --http1.1 or --http2 flags. With Python requests, HTTP version is handled automatically — if you are still seeing 505, the issue is likely in an intermediary (proxy or load balancer), not the library itself.

Developer

7. Percent-Encode URLs Before Requesting

Never include spaces or special characters in URLs. Use Python's urllib.parse.quote() or JavaScript's encodeURIComponent() to encode query parameters. Unencoded URLs are a documented trigger for 505 from load balancers that split on spaces.

Developer

8. Check Proxy Configuration for HTTP/2 Compatibility

If requests route through a proxy, verify it supports HTTP/2 forwarding. Many older proxy configurations strip ALPN headers — the mechanism browsers use to negotiate HTTP/2 during TLS handshake. Test by bypassing the proxy temporarily to confirm whether it is the source of the downgrade. For residential proxies used in scraping, confirm the provider explicitly supports HTTP/2 passthrough.

For Server Administrators

Server Admin

9. Update Server Software

Ensure NGINX, Apache, or your web server is running a current version with HTTP/1.1, HTTP/2, and (optionally) HTTP/3 enabled. For NGINX: confirm listen 443 ssl http2; is present. For Apache: ensure mod_http2 is loaded and Protocols h2 http/1.1 is configured in the virtualhost.

Server Admin

10. Verify Load Balancer URL Handling

Check that your load balancer properly handles percent-encoded URLs without splitting request lines on decoded characters. In AWS ALB/NLB, review access logs for malformed request line entries. In NGINX used as a load balancer, confirm proxy_pass is configured to preserve the original request URI.

Server Admin

11. Review WAF and Firewall Rules

If a Web Application Firewall is in the request path, check whether any rules are modifying protocol version headers or triggering 505 responses for specific request patterns. In Cloudflare, check Firewall → Events for 505-related rule matches. Review custom WAF rules for any HTTP version filtering logic.

505 Error and Web Scraping: The Proxy Angle

For developers running web scraping pipelines through proxy infrastructure, the 505 is one of the most preventable proxy-related errors. It typically surfaces when:

  • A proxy server downgrades HTTP/2 requests to HTTP/1.0 before forwarding — the target server sees an unsupported version.
  • A proxy's SSL/TLS termination strips ALPN negotiation, preventing HTTP/2 from being established between the proxy and origin.
  • The scraping library and the proxy use different default HTTP versions, creating a mismatch in the protocol negotiation chain.

The fix at the proxy layer is to use a provider that explicitly supports HTTP/2 forwarding and passes ALPN headers through intact. Nstproxy's residential and ISP proxies support full HTTP/2 passthrough across all proxy types — meaning the HTTP version your scraping client negotiates is preserved end-to-end without downgrade. This eliminates the most common proxy-caused 505 trigger in scraping pipelines.

For data collection teams encountering persistent 505 responses from a specific target site, it is worth testing whether the site is using 505 as an anti-bot measure rather than a genuine protocol error — a behaviour documented by IPRoyal. In that case, switching from a datacenter IP to a residential IP from Nstproxy's residential proxy network often resolves the issue by removing the bot signal that was triggering the error. See the high-anonymity proxy guide for technical detail on request header configuration.

Eliminate Proxy-Caused 505 Errors with Nstproxy

HTTP/2-compatible residential proxies with full ALPN passthrough, elite header configuration, and 110M+ clean IPs. No protocol downgrades, no bot detection triggers — from $0.4/GB.

Try Nstproxy for Free →

Conclusion

The HTTP 505 error is a specific, diagnosable protocol-version mismatch — not a generic server failure. The server is telling you precisely what went wrong: the HTTP version in your request is one it does not support. The fix is almost always one of three things: update the client to use a supported HTTP version, fix a URL encoding issue that is corrupting the request line, or address an intermediary (proxy or load balancer) that is downgrading the protocol version before the request reaches the origin server.

For browser users, updating the browser resolves it in nearly every case. For developers, upgrading HTTP libraries to requests or httpx and ensuring proper URL encoding eliminates the most common triggers. For server administrators, keeping web server software current and verifying load balancer URL handling covers the server-side causes. And for scraping pipelines, choosing proxy infrastructure that explicitly supports HTTP/2 forwarding removes the proxy-layer cause entirely.

Frequently Asked Questions

Q1: What does 505 error mean?

HTTP 505 means "HTTP Version Not Supported." The server received a request that specified an HTTP version it does not support — typically HTTP/1.0 when the server requires HTTP/1.1 or higher, or a malformed request line caused by an unencoded URL or misconfigured intermediary. It is a server-side 5xx status code but is usually caused by a client-side or intermediary configuration issue.

Q2: Is 505 a client error or a server error?

505 is classified as a server error (5xx range), because the server is returning the response. However, the root cause is usually a mismatch initiated by the client or an intermediary — an outdated HTTP library, a malformed URL, or a proxy that downgrades the protocol version. The server is working correctly; it is simply refusing to process a request with an unsupported protocol version.

Q3: How is 505 different from 502 Bad Gateway?

A 502 Bad Gateway means a proxy or gateway received an invalid or unexpected response from an upstream server — it is a communication failure between servers. A 505 is a protocol version rejection — the server received a request it understood but refused because the HTTP version is unsupported. Both can involve proxies, but 502 is about a failed server-to-server communication, while 505 is about a client-to-server protocol incompatibility.

Q4: Can a 505 error affect SEO?

Yes. Search engine crawlers (Googlebot, Bingbot) make HTTP requests to your pages. If they encounter 505 responses, they cannot index those pages — removing them from search results. Persistent 505 errors on a site reduce crawl budget efficiency, increase bounce rates from users encountering the error, and can degrade link equity from URLs returning 505 instead of valid content. Fixing 505 errors promptly is an SEO hygiene requirement for any indexed page.

Q5: Why do web scrapers get 505 errors more often than browsers?

Modern browsers automatically negotiate the highest mutually supported HTTP version with every server and update continuously in the background. Web scrapers and automation tools often use specific library versions with fixed default HTTP versions, do not handle ALPN negotiation for HTTP/2, and may route through proxies that alter protocol headers. Each of these creates an opportunity for a version mismatch that never occurs with a regularly updated browser.

Nstproxy logo©2026 NST LABS TECH LTD. All RIGHTS RESERVED.