501 Not Implemented
HTTP response status code 501 Not Implemented is a server error indicating the server does not support the functionality required to fulfill the request.
The HTTP response is cacheable by default. Overriding this behavior requires appropriate HTTP caching headers in the response.
Usage
The 501 Not Implemented status code means the server is unable to fulfill the request due to a server-side deficiency. This is similar to the 405 Method Not Allowed status code, although a 405 specifically means the requested method is recognized but not allowed for the target resource.
A 405 Method Not Allowed status code means the server recognizes the method but does not allow the method for the target resource. A 501 Not Implemented status code means the server does not recognize the method or lacks the ability to support the method for any resource. This is a permanent server-level condition.
This status is appropriate when the server does not recognize the request method and is therefore unable to support the request for any resource.
SEO impact
Search engines like Google do not index a URL returning a 501 Not Implemented status. Previously indexed URLs returning this status code are removed from search results.
Some APIs extend the meaning of 501 beyond missing methods. The Shopify API returns 501 Not Implemented when the requested endpoint is unavailable on the shop's current plan, such as a feature restricted to Shopify Plus. The endpoint exists in the API surface but is gated by subscription tier.
Example
The client requests a resource and the server responds with a 501 Not Implemented status code because the request method is recognized but not yet supported.
Request
POST /requests?id=111&flag=start HTTP/1.1
Host: www.example.re
Response
HTTP/1.1 501 Not Implemented
Content-Type: text/html; charset=UTF-8
Content-Length: 148
<html>
<head>
<title>Function Not Implemented</title>
</head>
<body>
<p>This functionality is under development.</p>
</body>
</html>
How to fix
Confirm the HTTP method in the request is correct.
A PATCH sent to a server expecting only GET and
POST triggers a 501 if the server has no handler
for the method at all.
Common root causes and their fixes:
Unsupported method on the server. In Apache, the
LimitandLimitExceptdirectives control allowed methods. In nginx, method filtering happens in thelocationblock. Ensure the method the client sends is not excluded by configuration.Missing server modules. Apache requires
mod_davfor WebDAV methods likePROPFINDandMKCOL. IIS requires WebDAV Publishing and the correct handler mappings. Enable the module and restart the service.Reverse proxy stripping or rewriting methods. Some proxies convert non-standard methods to
GET. In nginx, verifyproxy_methodis not set unless intentional. In AWS ALB, confirm the target group supports the required HTTP methods.Outdated server software. Older web server builds lack support for methods standardized after their release. Update Apache, nginx, or IIS to a current stable version.
Firewall or WAF blocking. Web application firewalls and security plugins sometimes reject methods like
PUT,DELETE, orOPTIONS. Review WAF rules and allowlist the required methods for the endpoint.API feature restricted by plan tier. Platforms like Shopify return 501 when an endpoint exists but is unavailable for the shop's subscription level. Verify the feature's plan requirements in the API documentation and upgrade if needed.
On the client side, confirm the request URL is correct. A typo routing traffic to the wrong server or endpoint returns 501 when the receiving server has no implementation for the method.
Code references
.NET
HttpStatusCode.NotImplemented
Rust
http::StatusCode::NOT_IMPLEMENTED
Rails
:not_implemented
Go
http.StatusNotImplemented
Symfony
Response::HTTP_NOT_IMPLEMENTED
Python3.5+
http.HTTPStatus.NOT_IMPLEMENTED
Java
java.net.HttpURLConnection.HTTP_NOT_IMPLEMENTED
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_NOT_IMPLEMENTED
Angular
@angular/common/http/HttpStatusCode.NotImplemented
Takeaway
The 501 Not Implemented status code is a server error indicating the server does not support the functionality required to complete the request at this time.
See also
- RFC 9110: HTTP Semantics
- Google: HTTP status codes and network errors
- 405 Method Not Allowed
- 500 Internal Server Error
- HTTP status codes