HTTP Status Codes
A quick lookup table for HTTP response codes, grouped by class, with what each one actually means in practice.
HTTP status codes are three-digit responses your server uses to tell the client what happened to a request. They are grouped into five classes: informational (1xx), success (2xx), redirection (3xx), client errors (4xx) and server errors (5xx). The first digit always tells you the class, so 404 and 410 both mean the resource was not found, but with a different lifetime.
For debugging you almost always care about the 4xx and 5xx ranges: a 4xx means the request was valid but the server cannot fulfill it, and a 5xx means the server itself failed. Remember that 304 is not an error — it is the server telling you the cache is still fresh.
The request was received and the server is continuing to process it.
The request was understood, accepted and fulfilled.
Further action is needed to complete the request.
The request contains bad syntax or cannot be fulfilled.
The server failed to fulfill an apparently valid request.
1xxInformational
| Code | Name | What it means |
|---|---|---|
| 100 | Continue | The client should continue with its request. |
| 101 | Switching Protocols | The server agrees to the requested protocol switch. |
| 102 | Processing | Received and processing, but no response yet (WebDAV). |
2xxSuccessful
| Code | Name | What it means |
|---|---|---|
| 200 | OK | The request succeeded. |
| 201 | Created | A new resource was created (usually after POST/PUT). |
| 202 | Accepted | Accepted for processing, but processing is not complete. |
| 204 | No Content | Success, but there is no body to return. |
| 206 | Partial Content | Only part of a resource was sent (e.g. range requests). |
3xxRedirection
| Code | Name | What it means |
|---|---|---|
| 301 | Moved Permanently | Moved to a new URL; bookmarks should update. |
| 302 | Found | Temporarily moved to a new URL. |
| 303 | See Other | Redirect; fetch with GET instead of the original method. |
| 304 | Not Modified | The cached copy is still valid. |
| 307 | Temporary Redirect | Redirect that preserves the request method and body. |
| 308 | Permanent Redirect | Permanent redirect that preserves method and body. |
4xxClient error
| Code | Name | What it means |
|---|---|---|
| 400 | Bad Request | The server cannot process the request as written. |
| 401 | Unauthorized | Authentication is required and has not been supplied. |
| 403 | Forbidden | Authenticated, but access is denied. |
| 404 | Not Found | The resource could not be found. |
| 405 | Method Not Allowed | The HTTP method is not supported for this resource. |
| 408 | Request Timeout | The server timed out waiting for the request. |
| 409 | Conflict | The request conflicts with the current state. |
| 410 | Gone | The resource is gone and will not return. |
| 413 | Payload Too Large | The request body is larger than the server accepts. |
| 415 | Unsupported Media Type | The content-type is not supported. |
| 422 | Unprocessable Entity | Well-formed but semantically invalid (WebDAV/JSON API). |
| 429 | Too Many Requests | Rate limiting kicked in; retry after the given delay. |
5xxServer error
| Code | Name | What it means |
|---|---|---|
| 500 | Internal Server Error | Generic server-side failure. |
| 501 | Not Implemented | The server does not support the requested method. |
| 502 | Bad Gateway | A gateway/proxy got an invalid upstream response. |
| 503 | Service Unavailable | Temporarily overloaded or down for maintenance. |
| 504 | Gateway Timeout | A gateway/proxy timed out waiting for upstream. |