Server Error
501

Not Implemented

The server does not support the functionality required to fulfill the request method.

# Quick Definition

The 501 Not Implemented status code means the server does not support the functionality required to fulfill the request. Specifically, the server does not recognize the request method or lacks the ability to fulfill it. This is different from 405 Method Not Allowed, where the server recognizes the method but disallows it for the specific resource.

# When Does a 501 Error Occur?

A 501 error occurs when the server receives an HTTP method it does not recognize or has not implemented. For example, if a client sends a PATCH request to a server that only supports GET and POST, the server may return 501. It can also occur when a server receives a request with a completely unknown or custom method.

The key distinction is whether the server knows the method at all. A server that knows about PATCH but doesn't allow it on a specific resource returns 405. A server that has never heard of PATCH or hasn't implemented support for it returns 501.

# Common Causes

# How to Fix a 501 Error

  1. Verify the HTTP method is correct -- Double-check that you're using the right method (GET, POST, PUT, PATCH, DELETE) for the endpoint. Typos in method names or using custom methods can trigger 501.
  2. Check API documentation -- Review the server or API documentation to confirm which methods are supported. You may need to use an alternative method.
  3. Inspect proxy/load balancer configuration -- [Nginx] Ensure proxy_method isn't overriding the original method. [Apache] Verify AllowMethods includes the required methods. [HAProxy] Check that http-request deny rules aren't blocking the method.
  4. Update server software -- If your web server is outdated, upgrade to the latest version. Older versions of Apache, Nginx, or IIS may not support newer HTTP methods like PATCH.
  5. Enable the method in your framework -- [Express.js] Add a route for the method: app.patch('/resource', handler). [Django] Add the method to your view's http_method_names. [Laravel] Use Route::patch() in your routes file.
  6. Check firewall/WAF rules -- Review your WAF configuration to ensure it allows the HTTP methods your application needs. Some default rulesets block methods like PUT, DELETE, and PATCH.

# HTTP Example

Request
PATCH /api/users/123 HTTP/1.1
Host: api.example.com
Content-Type: application/json

{
  "name": "Updated Name"
}
Response
HTTP/1.1 501 Not Implemented
Content-Type: application/json

{
  "error": "Not Implemented",
  "message": "PATCH method is not supported"
}

# Related Status Codes

# Frequently Asked Questions

What is the difference between 501 and 405?+
A 501 Not Implemented means the server does not recognize or support the HTTP method at all -- the server simply cannot handle that type of request. A 405 Method Not Allowed means the server recognizes the method but it is not allowed for the specific resource being requested. For example, a server that doesn't support PATCH at all returns 501, while a server that supports PATCH but not on /users/123 returns 405.
Is a 501 error permanent?+
Not necessarily. A 501 indicates the server doesn't currently support the functionality needed to fulfill the request. This could be a temporary limitation that the server administrator plans to implement in the future. However, if the server fundamentally doesn't support certain HTTP methods (like PATCH or PROPFIND), the 501 will persist until the server software is updated.
Can a proxy server cause a 501 error?+
Yes, a reverse proxy or load balancer can return 501 if it doesn't support the HTTP method being used. For example, some older proxy configurations may not forward PATCH, OPTIONS, or custom HTTP methods. Check your proxy configuration (Nginx, Apache, HAProxy) to ensure all required methods are allowed through.

Get alerted before your users notice

Monitor your endpoints 24/7 and receive instant alerts when 501 errors appear.

Start Free Monitoring