Back to HTTP Status Codes

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 PATCH on 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., PATCH wasn'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.

Related Status Codes