HTTP Status Codes Reference
A complete, searchable reference of HTTP response status codes. Filter by code or keyword.
1xx — Informational
| Code | Name | Description |
|---|---|---|
| 100 | Continue | The server has received the request headers and the client should proceed to send the request body. |
| 101 | Switching Protocols | The server is switching protocols as requested by the client (e.g., upgrading to WebSocket). |
| 102 | Processing | The server has received and is processing the request, but no response is available yet (WebDAV). |
| 103 | Early Hints | Used to return some response headers before the final response, allowing the client to preload resources. |
2xx — Success
| Code | Name | Description |
|---|---|---|
| 200 | OK | The request succeeded. The meaning depends on the HTTP method used. |
| 201 | Created | The request succeeded and a new resource was created as a result. |
| 202 | Accepted | The request has been received but not yet acted upon. It is intended for asynchronous processing. |
| 203 | Non-Authoritative Information | The returned metadata is from a local or third-party copy, not the origin server. |
| 204 | No Content | The request succeeded but there is no content to return in the response body. |
| 205 | Reset Content | The server asks the client to reset the document view (e.g., clear a form). |
| 206 | Partial Content | The server is delivering only part of the resource due to a Range header sent by the client. |
| 207 | Multi-Status | Conveys information about multiple resources in situations where multiple status codes might be appropriate (WebDAV). |
3xx — Redirection
| Code | Name | Description |
|---|---|---|
| 300 | Multiple Choices | The request has more than one possible response. The client should choose one. |
| 301 | Moved Permanently | The resource has been permanently moved to a new URL. Search engines will update their links. |
| 302 | Found | The resource is temporarily located at a different URL. The client should continue using the original URL. |
| 303 | See Other | The response can be found at a different URL using a GET request. |
| 304 | Not Modified | The resource has not been modified since the last request. The client can use its cached version. |
| 307 | Temporary Redirect | The resource is temporarily at a different URL. The request method must not change. |
| 308 | Permanent Redirect | The resource has permanently moved. The request method must not change (like 301 but method-preserving). |
4xx — Client Error
| Code | Name | Description |
|---|---|---|
| 400 | Bad Request | The server cannot process the request due to malformed syntax or invalid parameters. |
| 401 | Unauthorized | The request requires authentication. The client must provide valid credentials. |
| 402 | Payment Required | Reserved for future use. Some APIs use it to indicate a payment is required. |
| 403 | Forbidden | The server understood the request but refuses to authorize it. Authentication will not help. |
| 404 | Not Found | The server cannot find the requested resource. The URL may be incorrect or the resource may have been removed. |
| 405 | Method Not Allowed | The HTTP method used is not supported for the requested resource. |
| 406 | Not Acceptable | The server cannot produce a response matching the Accept headers sent by the client. |
| 407 | Proxy Authentication Required | The client must authenticate with a proxy before the request can proceed. |
| 408 | Request Timeout | The server timed out waiting for the client to send a complete request. |
| 409 | Conflict | The request conflicts with the current state of the resource (e.g., duplicate entry, edit conflict). |
| 410 | Gone | The resource is no longer available and has been permanently removed. Unlike 404, this is intentional. |
| 411 | Length Required | The server requires a Content-Length header in the request. |
| 412 | Precondition Failed | A condition in the request headers (e.g., If-Match) evaluated to false. |
| 413 | Content Too Large | The request body exceeds the size limit defined by the server. |
| 414 | URI Too Long | The request URL is longer than the server is willing to interpret. |
| 415 | Unsupported Media Type | The server does not support the media type of the request body. |
| 416 | Range Not Satisfiable | The Range header in the request cannot be fulfilled (e.g., beyond the resource size). |
| 417 | Expectation Failed | The server cannot meet the requirements of the Expect header. |
| 418 | I'm a Teapot | An April Fools' joke from RFC 2324. The server refuses to brew coffee because it is a teapot. |
| 422 | Unprocessable Content | The server understands the request but cannot process the contained instructions (e.g., validation errors). |
| 425 | Too Early | The server is unwilling to process a request that might be replayed (TLS early data). |
| 426 | Upgrade Required | The server refuses the request using the current protocol and requires the client to upgrade. |
| 428 | Precondition Required | The server requires the request to be conditional (e.g., include If-Match header). |
| 429 | Too Many Requests | The client has sent too many requests in a given time period (rate limiting). |
| 431 | Request Header Fields Too Large | The server refuses the request because the header fields are too large. |
| 451 | Unavailable For Legal Reasons | The resource is unavailable due to legal demands (e.g., government censorship, DMCA). |
5xx — Server Error
| Code | Name | Description |
|---|---|---|
| 500 | Internal Server Error | The server encountered an unexpected condition that prevented it from fulfilling the request. |
| 501 | Not Implemented | The server does not support the functionality required to fulfill the request. |
| 502 | Bad Gateway | The server, acting as a gateway or proxy, received an invalid response from an upstream server. |
| 503 | Service Unavailable | The server is temporarily unable to handle the request due to maintenance or overload. |
| 504 | Gateway Timeout | The server, acting as a gateway, did not receive a timely response from the upstream server. |
| 505 | HTTP Version Not Supported | The server does not support the HTTP version used in the request. |
| 506 | Variant Also Negotiates | The server has a configuration error in transparent content negotiation. |
| 507 | Insufficient Storage | The server cannot store the representation needed to complete the request (WebDAV). |
| 508 | Loop Detected | The server detected an infinite loop while processing the request (WebDAV). |
| 510 | Not Extended | Further extensions to the request are required for the server to fulfill it. |
| 511 | Network Authentication Required | The client needs to authenticate to gain network access (e.g., captive portal). |
Frequently Asked Questions
What are HTTP status codes?
Three-digit numbers returned by a server indicating the result of a request. They are grouped into five classes: 1xx (Informational), 2xx (Success), 3xx (Redirection), 4xx (Client Error), and 5xx (Server Error).
401 vs 403?
401 Unauthorized: the client should authenticate and retry. 403 Forbidden: the server refuses even with valid credentials — the user simply doesn't have permission.
200 vs 201 vs 204?
200 OK: standard success. 201 Created: a resource was created (typically POST). 204 No Content: success with no response body (common for DELETE/PUT).