501 Not Implemented
The server does not support the functionality required to fulfil the request.
What 501 means
501 means the server does not recognise the request method, or does not support it for any resource. It is a statement about the server's capabilities rather than about this particular URL, which is what distinguishes it from 405.
It is genuinely rare in application code. Where you do see it, it is usually a proxy or gateway that does not support a method being tunnelled through it, or an endpoint stubbed out for a feature not yet built.
It is the one 5xx that clients should not retry, because the capability is absent rather than temporarily unavailable. Retry logic that treats all 5xx as transient will loop pointlessly on a 501.
Should a client retry?
The server cannot do this at all, so retrying cannot help. This is the 5xx to exclude from automatic retry.
FAQ
- What is the difference between 501 and 405?
- 405 means this resource does not support the method, though others might - and it must list the ones that do in an Allow header. 501 means the server does not support the method anywhere.
- Should clients retry a 501?
- No. Unlike other 5xx codes it is not transient - the functionality does not exist. Exclude it from retry logic that otherwise treats 5xx as retryable.
Often confused with
- 405 Method Not Allowed The URL exists but does not support the HTTP method used.
- 500 Internal Server Error The server hit an unexpected condition and could not complete the request.