501 Not Implemented 5xx
The server does not support the functionality required to fulfill the request.
What does 501 mean?
A 501 Not Implemented response means the server doesn't support the functionality required to fulfill the request — most commonly, this means the server doesn't recognize or support the HTTP method used (an unusual or rarely-used method like PATCH, TRACE, or a custom method), independent of whether that method would be valid for the specific resource being requested.
This is a step removed from 405 (Method Not Allowed): 405 means "this specific resource doesn't support this method" (but the server understands the method in general). 501 means "the server itself doesn't implement this method at all," regardless of which resource is being requested.
How a 501 behaves
- It can carry a body explaining what's not supported
- It's not cacheable
- It often indicates a fundamental capability gap in the server software itself, rather than a per-resource configuration issue — fixing it might require upgrading server software, not just changing routing/configuration
Common causes
If you're building/operating the server:
- A client is using an HTTP method your server software doesn't implement at all (rare for common methods like GET/POST/PUT/DELETE, more plausible for less-common methods like
PATCHon older server software, or non-standard custom methods) - Your application framework doesn't have any handler registered for a particular method across the entire application, and the framework's default behavior for "no handler matches this method anywhere" is 501
If you're calling an API:
- You're using an HTTP method the API server doesn't support at all — double-check the API documentation for which methods are genuinely supported across the API, not just for the specific endpoint
- You're interacting with an older server that predates wider support for certain methods (e.g.,
PATCHwasn't always universally implemented)
If you're a website visitor:
- Essentially never encountered — normal browsing uses GET/POST, which virtually all servers implement
How to fix it
As an API/website builder:
- If 501 is appearing for methods you do intend to support, check your server/framework configuration — this might indicate a version issue (older software lacking support for a method) or a configuration gap
- Document which methods your API genuinely supports server-wide, distinct from which methods specific endpoints support (the 405-level distinction)
As an API consumer:
- Check whether the method you're using is genuinely supported by the API/server at all — this is a more fundamental check than verifying a specific endpoint supports the method (which would be a 405 concern instead)
- If working with older server software, verify it supports the HTTP method/version features you're relying on
As a website visitor:
- Not applicable
501 vs 405 vs 500
| Code | Meaning | Scope |
|---|---|---|
| 405 Method Not Allowed | This specific resource doesn't support this method | Per-resource — the server understands the method generally |
| 501 Not Implemented | The server doesn't support this method/functionality at all | Server-wide — a fundamental capability gap |
| 500 Internal Server Error | An unhandled error occurred while processing | Indicates a bug, not a missing capability |
Real-world examples
501 is relatively rare in modern web development, since the HTTP methods commonly used by REST APIs (GET, POST, PUT, PATCH, DELETE) are universally supported by virtually all current server software — 501 is more likely to surface with genuinely unusual methods, very old server software, or custom/non-standard methods that aren't part of typical HTTP usage.
SEO implications
501 would be an unusual and concerning response for a page search engines try to crawl — crawlers use standard GET requests, which virtually all servers support, so encountering 501 for normal page requests would indicate a significant server configuration issue worth investigating immediately.
FAQ
What's the difference between 501 and 405?
405 means a specific resource doesn't support the method you used, but the server understands the method in general (and the Allow header tells you what methods are supported for that resource). 501 means the server doesn't support the method at all, anywhere.
Is 501 common?
No — for standard HTTP methods used by typical web applications and APIs (GET, POST, PUT, PATCH, DELETE), 501 is rare on modern server software. It's more associated with unusual methods or very old/limited server implementations.
Does 501 mean there's a bug in my application?
Not necessarily a bug in the traditional sense — it more often indicates a fundamental capability gap (the server software itself doesn't support something) rather than an error in application logic processing a request it otherwise understands.
Can 501 happen for GET or POST requests?
Extremely unlikely — GET and POST are the most universally implemented HTTP methods across all server software. 501 for these methods would indicate something highly unusual about the server setup.
How would I fix a genuine 501?
Depending on the cause, this might require upgrading server software to a version that supports the needed method/functionality, or reconsidering whether the method/feature you're trying to use is appropriate given the server's actual capabilities.
Fun fact
501 sits at an interesting point in the "error specificity spectrum" of HTTP — while 405 communicates a relatively common, easily-fixed mismatch (wrong method for this endpoint), 501 communicates something more fundamental (this server, full stop, doesn't do that), which is part of why 501 often points toward infrastructure/software-version issues rather than the kind of routing or application-logic fixes that resolve most other 4xx/5xx errors.