505 HTTP Version Not Supported
The server does not support the major version of HTTP that was used.
Usually happens because:
- ☑ Client requesting resource using unsupported
- ☑ Malformed HTTP protocol version string
🔍 Quick Checklist:
Meaning
The HTTP 505 HTTP Version Not Supported server error status code indicates that the server does not support, or refuses to support, the major version of HTTP that was used in the request message.
Root Causes
- Client requesting resource using unsupported newer HTTP protocols (e.g. HTTP/3 on a server that only supports HTTP/1.1).
- Malformed HTTP protocol version string formats.
| Cause | Frequency |
|---|---|
| Client requesting resource using unsupported | ⭐⭐⭐⭐⭐ |
| Malformed HTTP protocol version string | ⭐⭐⭐⭐ |
Common Mistakes
- Assuming all legacy backend proxies support HTTP/2 multiplexing pipelines directly.
How to Fix
Framework-Specific Examples
Express router returning 505.
app.use((req, res, next) => {
if (req.httpVersionMajor > 2) {
return res.status(505).send('HTTP Version Not Supported');
}
next();
});Server Configuration Examples
Configuring Nginx protocol layers.
# Nginx supports HTTP/1.0, HTTP/1.1, HTTP/2 by default, and HTTP/3 if compiled with quic modulePrevention
- Ensure proxies handle newer HTTP versions and translate them to HTTP/1.1 before contacting upstream application servers.
Frequently Asked Questions (FAQ)
Q: Why is HTTP 505 rarely seen by users?
Because modern proxies (like Nginx or Cloudflare) automatically downgrade HTTP/2 or HTTP/3 client requests to HTTP/1.1 before sending them to origin application servers.
Q: What version format triggers a 505 error?
Sending unparseable version identifiers (e.g. HTTP/9.9) or newer HTTP/3 requests to an old legacy server that only supports HTTP/1.0 or HTTP/1.1.
Q: Is 505 cacheable?
No. The 505 HTTP Version Not Supported status code is never cached.
Q: How do clients resolve 505 errors?
Ensure the client library uses standard HTTP/1.1 or HTTP/2 request formatting.