HTTP status code · Server errors (5xx)
510 Not Extended
510 Not Extended meant the request did not satisfy the server's policy for accessing the resource, because it lacked a mandatory extension declared with the RFC 2774 HTTP Extension Framework. That framework was never adopted, RFC 2774 is now Historic, and IANA marks 510 as obsoleted.
| Class | 5xx, Server errors |
|---|---|
| Defined in | RFC 2774 §7 |
| Cacheable by default | Only with explicit Cache-Control or Expires |
| Safe to retry | Only if the response says which extension to add and the client can add it |
| Relevant headers |
|
| Status | Deprecated: Obsolete: RFC 2774 was moved to Historic, and IANA lists 510 as "Not Extended (OBSOLETED)". |
What 510 means
RFC 2774 (February 2000) proposed a way to declare mandatory HTTP extensions with the Man and Opt headers and the M- method prefix. Section 7 defines 510 for a request that does not meet the policy for accessing the resource; the response should carry everything the client needs to send an extended request.
The experiment ended without real deployments. The IETF moved RFC 2774 to Historic along with several other old HTTP experiments, and the IANA registry now lists the code as "Not Extended (OBSOLETED)". If you meet it today, it is almost certainly an application misusing the number for its own purposes.
Common causes
If you run the server
- An application or framework that repurposes 510 for its own "missing extension" or "missing feature flag" check.
- Legacy software built around the RFC 2774 extension framework.
How to fix it
If you run the server
- Replace it with a registered code that says what is really wrong: 400 or 422 for a missing required header or parameter, 426 to require a protocol upgrade, 403 for a policy refusal.
How to send 510
Do not send 510 in new code. Clients and libraries will only understand it as a generic 500.
Commonly confused with
- 510 vs 426
- 426 Upgrade Required is the live, standard way to say "switch to another protocol first"; 510 was about optional HTTP extensions and is obsolete.
- 510 vs 428
- 428 Precondition Required tells the client to send a conditional header such as If-Match; it covers one of the few "you must add something to the request" cases that still matter.
Frequently asked questions
- Is 510 Not Extended still valid?
- It is still in the IANA registry, but marked as obsoleted, because the RFC 2774 HTTP Extension Framework it belongs to was moved to Historic. New software should not use it.
- What should I use instead of 510?
- Pick the code for the real problem: 400 or 422 for a missing required header or parameter, 426 Upgrade Required to demand a different protocol, 403 Forbidden for a policy refusal.
- What was the HTTP Extension Framework?
- An experimental design from RFC 2774 that let clients declare mandatory or optional extensions with the Man and Opt headers, so servers could refuse requests missing a required one. It never gained real implementations.
Last reviewed by Arielton Oberek.