HTTP 501 Not Implemented – Free, Online, Private
501 Not Implemented means the server does not support the functionality required.
What HTTP 501 means
501 says the server does not recognize the method or lacks the ability to fulfill the request. It is the status for a method you do not implement at all, as opposed to 405, which is a method you do not allow on one resource that otherwise exists. A server that receives an unknown method can return 501. A proxy that cannot honor a feature can too.
501 Not Implemented belongs to the 5xx server error class. Clients that only look at the class will group it with its neighbors. Clients that care about the exact code should use the narrower rule on this page, because the class is only the first digit.
When you see HTTP 501
When you see HTTP 501 Not Implemented, stop on that exact status line. 501 Not Implemented means the server does not support the functionality required. The trace that usually produces it: The client sent a method the server has never implemented. The 5xx server error class only tells you the first digit. A neighbor in that class is a different fault, and the fix on this page does not transfer to it.
Return 501 when you do not implement the method or feature, full stop. Send Allow if you know the methods you do implement. Use 405 when the resource exists and this method is not one of its methods. Do not use 501 for a feature flag that is off for one customer. That is 403 or 404.
How to fix HTTP 501
To fix HTTP 501, change the condition that made the server choose Not Implemented. Stop using the unsupported method against this server. If Allow is present, pick from it. Do not treat 501 as a reason to try again in a minute. Do not retry the same method. It is not implemented. This is not a temporary outage. If the log line is a different code, leave this page. The mix-up people make with 501 is this one: 405 means this resource does not allow the method. 501 means the server does not implement it. 500 means the implementation exists and failed.
- A required WebDAV feature was missing and the server said so with 501.
- The client retried the same method forever.
- A gateway returned 501 for a method the origin actually implements, because the gateway's allowlist was stale.
An access log that only stores 501 is not enough to tell these apart. Keep the method, the path, and a request id. Do not keep the Authorization header or a request body that might be a token. The status explains the outcome. It is not a place to echo secrets back to the client either.
Example response
HTTP 501 Not ImplementedHTTP/1.1 501 Not Implemented
Allow: GET, HEAD, POST
Allow helps the client pick a method you do speak. If the gap is a feature rather than a method, the body should name it. The client should not retry until it changes the request to something you implement. 501 is not transient.
What the client should do
Stop using the unsupported method against this server. If Allow is present, pick from it. Do not treat 501 as a reason to try again in a minute.
501 may be cached. If you might implement the method soon, do not let caches store the refusal for long.
Do not retry the same method. It is not implemented. This is not a temporary outage.
Codes people confuse with HTTP 501
405 means this resource does not allow the method. 501 means the server does not implement it. 500 means the implementation exists and failed.
Frequently asked questions
How is 501 different from 405?
405 is per resource and comes with Allow. 501 means the server does not provide the functionality.
Should the client retry?
Not with the same method. The answer will not change on its own.
Is 501 for a disabled feature flag?
No. A flag is your policy for that caller. Use 403 or omit the route.
Which methods must exist?
GET and HEAD are required for servers that offer resources. A server that cannot do them is not a general HTTP origin.
What should I do first when I see HTTP 501?
Read the status as 501 Not Implemented specifically. 501 Not Implemented means the server does not support the functionality required. Then check the cause that matches the request you sent, starting with: The client sent a method the server has never implemented.