HTTP status codes
Every common HTTP status code in plain English. Search by number or name.
48 status codes
| Code | Name | Meaning |
|---|---|---|
| 1xx Informational | ||
| 100 | Continue | The server got the request headers; the client can send the body. |
| 101 | Switching Protocols | The server is switching protocols as requested, for example upgrading to WebSocket. |
| 103 | Early Hints | Preliminary headers (often Link preload hints) sent before the final response. |
| 2xx Success | ||
| 200 | OK | The request succeeded. |
| 201 | Created | The request succeeded and a new resource was created, usually after POST or PUT. |
| 202 | Accepted | The request was accepted for processing, but the work is not finished yet. |
| 204 | No Content | Success, with no response body. Common for DELETE and some PUT requests. |
| 206 | Partial Content | Only part of the resource was sent, in response to a Range header (used for video streaming and resumable downloads). |
| 3xx Redirection | ||
| 301 | Moved Permanently | The resource has a new permanent URL. Browsers and search engines update to the new address. |
| 302 | Found | A temporary redirect. Clients should keep using the original URL in future. |
| 303 | See Other | Redirect to another URL with GET, typically after a form POST. |
| 304 | Not Modified | The cached copy is still valid, so no body is sent. Saves bandwidth. |
| 307 | Temporary Redirect | Temporary redirect that keeps the original method and body (unlike 302 in practice). |
| 308 | Permanent Redirect | Permanent redirect that keeps the original method and body. |
| 4xx Client error | ||
| 400 | Bad Request | The server could not understand the request: malformed syntax, invalid JSON or bad parameters. |
| 401 | Unauthorized | Authentication is required or failed. Despite the name, it means "unauthenticated". |
| 402 | Payment Required | Reserved for future use; some APIs use it when a payment or plan upgrade is needed. |
| 403 | Forbidden | The server understood the request but refuses it, often because you lack permission. |
| 404 | Not Found | No resource exists at this URL. |
| 405 | Method Not Allowed | The URL exists but does not support this HTTP method, such as POST to a read-only endpoint. |
| 406 | Not Acceptable | The server cannot produce a response matching the Accept headers. |
| 408 | Request Timeout | The server gave up waiting for the client to finish sending the request. |
| 409 | Conflict | The request conflicts with the current state, such as an edit conflict or duplicate record. |
| 410 | Gone | The resource was deliberately removed and will not come back. Search engines drop it faster than a 404. |
| 411 | Length Required | The server requires a Content-Length header. |
| 412 | Precondition Failed | A condition in the request headers (such as If-Match) was not met. |
| 413 | Content Too Large | The request body is bigger than the server allows, such as an upload over the size limit. |
| 414 | URI Too Long | The URL is longer than the server will process. |
| 415 | Unsupported Media Type | The request body format (Content-Type) is not supported. |
| 416 | Range Not Satisfiable | The requested byte range is outside the size of the resource. |
| 418 | I'm a teapot | An April Fools joke from RFC 2324, kept alive by developers. Some sites use it to refuse bots. |
| 421 | Misdirected Request | The request went to a server that cannot produce a response for this host. |
| 422 | Unprocessable Content | The request was well-formed but has semantic errors, such as failed validation. |
| 425 | Too Early | The server is unwilling to process a request that might be replayed. |
| 426 | Upgrade Required | The client must switch to a different protocol, such as a newer TLS version. |
| 428 | Precondition Required | The server requires the request to be conditional, to prevent lost updates. |
| 429 | Too Many Requests | Rate limited: the client sent too many requests in a given time. Check the Retry-After header. |
| 431 | Request Header Fields Too Large | The headers (often cookies) are too large. |
| 451 | Unavailable For Legal Reasons | The resource is blocked for legal reasons, such as a court order. |
| 5xx Server error | ||
| 500 | Internal Server Error | A generic server error: something unexpected went wrong. |
| 501 | Not Implemented | The server does not support the functionality needed for this request. |
| 502 | Bad Gateway | A gateway or proxy got an invalid response from the server behind it. |
| 503 | Service Unavailable | The server is temporarily unable to handle the request: overloaded or down for maintenance. |
| 504 | Gateway Timeout | A gateway or proxy did not get a response in time from the server behind it. |
| 505 | HTTP Version Not Supported | The server does not support the HTTP version used. |
| 507 | Insufficient Storage | The server cannot store what is needed to complete the request (WebDAV). |
| 508 | Loop Detected | The server detected an infinite loop while processing (WebDAV). |
| 511 | Network Authentication Required | You need to sign in to the network, such as a hotel or airport Wi-Fi login page. |
The five classes
- 1xx informational: the request was received and is continuing.
- 2xx success: the request worked.
- 3xx redirection: the client needs to go somewhere else.
- 4xx client error: something is wrong with the request (bad URL, no permission, too many requests).
- 5xx server error: the server failed to handle a valid request.
Codes that matter for SEO
- 301 vs 302: use 301 (or 308) for permanent moves so search engines transfer ranking to the new URL.
- 404 vs 410: both remove a page from results; 410 is processed slightly faster.
- 503 during maintenance tells crawlers to come back later instead of dropping pages. Add a Retry-After header.
- "Soft 404s", which are error pages returning 200, waste crawl budget. Return a real 404.
Questions
What is the difference between 401 and 403?
401 means you're not authenticated (log in and try again). 403 means you're authenticated, or it doesn't matter, but you're not allowed.
Is a website down if it returns a 4xx code?
Not necessarily. 4xx means the server is up and rejecting the request. 5xx codes and timeouts usually mean a real outage.