HTTP status codes
The complete list of standard HTTP response status codes as defined by RFC 9110 and its extensions, grouped by class. Every code links to a full explanation with common causes, client- and server-side fixes, an example exchange and a live URL that returns that exact status.
1xx — Informational
The request was received and processing continues.
| Code | Name | Summary |
|---|---|---|
| 100 | Continue | Interim response telling the client it may continue sending the request body after the server has accepted the initial headers. |
| 101 | Switching Protocols | Interim response confirming the server is switching application protocols in response to an Upgrade header from the client. |
| 102 | Processing | Interim WebDAV response telling the client the server is still working on a long-running request and has not timed out. |
| 103 | Early Hints | Interim response that lets the server send preload or preconnect hints to the client before the final response is ready. |
2xx — Success
The request was received, understood and accepted.
| Code | Name | Summary |
|---|---|---|
| 200 | OK | The request succeeded and the response body, if any, contains the requested representation or the result of the action. |
| 201 | Created | The request succeeded and resulted in a new resource being created, typically referenced by a Location header. |
| 202 | Accepted | The request has been accepted for processing, but that processing has not completed and may not have started yet. |
| 203 | Non-Authoritative Information | The request succeeded but the returned metadata came from a local or third-party copy rather than the origin server. |
| 204 | No Content | The request succeeded but there is no response body, and the client should keep displaying its current view. |
| 205 | Reset Content | The request succeeded and the client should reset the document view that originated the request, such as clearing a form. |
| 206 | Partial Content | The server is delivering only part of the resource in response to a Range header, typically for large file or media downloads. |
| 207 | Multi-Status | The response reports the individual results of multiple independent operations, each with its own status, inside one WebDAV response body. |
| 208 | Already Reported | Suppresses repeated internal members inside a WebDAV Multi-Status response that has already been listed once earlier in the same binding tree. |
| 226 | IM Used | The server fulfilled a GET request for a delta or instance-manipulated representation, applying the client's requested transformation. |
3xx — Redirection
Further action is needed to complete the request.
| Code | Name | Summary |
|---|---|---|
| 300 | Multiple Choices | The requested resource has several representations, and the server cannot pick one automatically. |
| 301 | Moved Permanently | The resource has permanently moved to a new URL, and clients should use the new URL going forward. |
| 302 | Found | The resource temporarily resides at a different URL; clients should keep requesting the original URL in the future. |
| 303 | See Other | The response to the request can be found under a different URL and should be retrieved with a GET. |
| 304 | Not Modified | The cached version of the resource is still valid, so the server tells the client to keep using it. |
| 305 | Use Proxydeprecated | Deprecated: the requested resource must be accessed through the proxy given by the Location header. |
| 306 | (Unused)deprecated | Reserved: this status code is no longer used and is reserved for historical reasons. |
| 307 | Temporary Redirect | The resource temporarily resides at a different URL, and the request method and body must be repeated exactly. |
| 308 | Permanent Redirect | The resource has permanently moved, and the request method and body must be repeated exactly at the new URL. |
4xx — Client Error
The request contains bad syntax or cannot be fulfilled.
| Code | Name | Summary |
|---|---|---|
| 400 | Bad Request | The server cannot process the request because of a client-side error such as malformed syntax, invalid framing, or corrupted request data. |
| 401 | Unauthorized | The request lacks valid authentication credentials for the target resource; the server names an accepted scheme via WWW-Authenticate. |
| 402 | Payment Required | Reserved for future use; increasingly reused by APIs to signal billing failures like an expired subscription or exhausted quota. |
| 403 | Forbidden | The server understood the request and identified the client but refuses to authorize access to the resource. |
| 404 | Not Found | The server cannot find a current representation of the requested resource, and does not say whether the absence is temporary. |
| 405 | Method Not Allowed | The target resource exists but does not support the HTTP method used in the request; the response must list the allowed ones. |
| 406 | Not Acceptable | The server cannot produce a response matching the Accept, Accept-Language, or Accept-Charset constraints the client sent. |
| 407 | Proxy Authentication Required | Like 401, but the client must first authenticate with an intermediary proxy before the request can be forwarded. |
| 408 | Request Timeout | The server timed out waiting for the client to send a complete request within the time it was willing to wait. |
| 409 | Conflict | The request conflicts with the current state of the target resource, such as a concurrent edit or a duplicate unique value. |
| 410 | Gone | The resource used to exist but has been deliberately and permanently removed, with no forwarding address known. |
| 411 | Length Required | The server refuses the request because the mandatory Content-Length header is missing and chunked encoding wasn't used instead. |
| 412 | Precondition Failed | A conditional header such as If-Match or If-Unmodified-Since evaluated to false against the resource's current state. |
| 413 | Content Too Large | The request body exceeds the size limit the server is willing or able to process for this resource. |
| 414 | URI Too Long | The request target is longer than the server is willing to interpret, often from excessive or misused query parameters. |
| 415 | Unsupported Media Type | The server refuses the request because the payload's Content-Type or encoding is not supported by the target endpoint. |
| 416 | Range Not Satisfiable | The server cannot supply the requested byte range because it falls outside the resource's current size. |
| 417 | Expectation Failed | The server cannot meet the requirements stated in the request's Expect header, most often Expect: 100-continue. |
| 418 | I'm a Teapot | A joke status code from an April Fools' RFC, indicating the server refuses to brew coffee because it is a teapot. |
| 421 | Misdirected Request | The request was sent to a server that is not configured to produce a response for the combination of scheme and authority in the request URI. |
| 422 | Unprocessable Content | The request is syntactically valid and understood, but the server cannot process the contained instructions due to semantic errors. |
| 423 | Locked | The source or destination resource of a WebDAV method is locked, so the request cannot proceed. |
| 424 | Failed Dependency | A WebDAV method could not be performed because an earlier, required action in the same request failed. |
| 425 | Too Early | The server is unwilling to process a request that might be a replay, typically one sent as TLS 1.3 early data. |
| 426 | Upgrade Required | The server refuses to continue on the current protocol and requires the client to switch to a different one to proceed. |
| 428 | Precondition Required | The origin server requires the request to be conditional, typically to prevent a lost update from concurrent edits. |
| 429 | Too Many Requests | The client has sent too many requests in a given time window and is being rate limited. |
| 431 | Request Header Fields Too Large | The server refuses to process the request because its HTTP header fields, individually or combined, are too large. |
| 451 | Unavailable For Legal Reasons | The server is denying access to the resource as a result of a legal demand, such as a government-ordered content block. |
5xx — Server Error
The server failed to fulfil an apparently valid request.
| Code | Name | Summary |
|---|---|---|
| 500 | Internal Server Error | The server encountered an unexpected condition that prevented it from fulfilling the request, with no more specific error available. |
| 501 | Not Implemented | The server does not support the functionality required to fulfill the request, typically because the HTTP method is unrecognized. |
| 502 | Bad Gateway | A server acting as a gateway or proxy received an invalid response from the upstream server it needed to fulfill the request. |
| 503 | Service Unavailable | The server is temporarily unable to handle the request due to overload or maintenance, and the condition is expected to be temporary. |
| 504 | Gateway Timeout | A server acting as a gateway or proxy did not receive a timely response from the upstream server it needed to complete the request. |
| 505 | HTTP Version Not Supported | The server refuses to support the HTTP protocol version that was used in the request message. |
| 506 | Variant Also Negotiates | The server has an internal configuration error: the resource chosen via content negotiation is itself set up to negotiate, creating a loop. |
| 507 | Insufficient Storage | The server cannot complete the request because it lacks sufficient storage space to process and store the representation successfully. |
| 508 | Loop Detected | The server terminated an operation because it detected an infinite loop while processing a request with recursive dependencies. |
| 510 | Not Extended | Further extensions to the request are required for the server to fulfill it, and the response describes which extensions are needed. |
| 511 | Network Authentication Required | The client must authenticate to gain network access, typically shown by a captive portal before internet access is granted. |