HTTP Status Codes
A fast, searchable reference of every standard HTTP status code, with its official name and a plain-English explanation of what it means. Type a number or a keyword in the box to filter the whole list instantly.
1xx — Informational
| 100 | Continue | The server received the request headers and the client should proceed to send the body. |
| 101 | Switching Protocols | The server is switching protocols as requested by the client (Upgrade header). |
| 102 | Processing | The server has received and is processing the request, but no response is available yet. |
| 103 | Early Hints | Used to return some response headers before the final HTTP message. |
2xx — Success
| 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. Non-committal. |
| 203 | Non-Authoritative Information | The returned metadata is from a copy, not the origin server. |
| 204 | No Content | There is no content to send for this request, but the headers may be useful. |
| 205 | Reset Content | Tells the client to reset the document that sent this request. |
| 206 | Partial Content | Used when the client sends a Range header to request only part of a resource. |
| 207 | Multi-Status | Conveys information about multiple resources, for WebDAV. |
| 208 | Already Reported | Members of a DAV binding have already been enumerated. |
| 226 | IM Used | The server fulfilled a GET request for the resource using instance manipulations. |
3xx — Redirection
| 300 | Multiple Choices | The request has more than one possible response; the user should choose one. |
| 301 | Moved Permanently | The URL of the resource has changed permanently. The new URL is given in the response. |
| 302 | Found | The resource is temporarily located at a different URL. |
| 303 | See Other | The client should get the resource at another URL with a GET request. |
| 304 | Not Modified | The cached response is still valid; the resource has not changed. |
| 307 | Temporary Redirect | Like 302, but the method and body must not change on the redirected request. |
| 308 | Permanent Redirect | Like 301, but the method and body must not change on the redirected request. |
4xx — Client Error
| 400 | Bad Request | The server cannot process the request due to a client error (e.g. malformed syntax). |
| 401 | Unauthorized | Authentication is required and has failed or not been provided. |
| 402 | Payment Required | Reserved for future use; sometimes used by payment or rate-limited APIs. |
| 403 | Forbidden | The client is authenticated but does not have permission to access the resource. |
| 404 | Not Found | The server cannot find the requested resource. The most familiar status code. |
| 405 | Method Not Allowed | The request method is known but not supported by the target resource. |
| 406 | Not Acceptable | No content matching the criteria in the Accept headers could be produced. |
| 407 | Proxy Authentication Required | Authentication with the proxy is required first. |
| 408 | Request Timeout | The server timed out waiting for the request. |
| 409 | Conflict | The request conflicts with the current state of the server. |
| 410 | Gone | The resource is permanently gone and no forwarding address is known. |
| 411 | Length Required | The server requires a Content-Length header. |
| 412 | Precondition Failed | A precondition in the request headers was not met. |
| 413 | Payload Too Large | The request body is larger than the server is willing to process. |
| 414 | URI Too Long | The requested URI is longer than the server is willing to interpret. |
| 415 | Unsupported Media Type | The media format of the request data is not supported. |
| 416 | Range Not Satisfiable | The Range specified in the request cannot be fulfilled. |
| 417 | Expectation Failed | The expectation in the Expect header could not be met. |
| 418 | I'm a teapot | An April Fools joke from RFC 2324; returned by teapots that refuse to brew coffee. |
| 421 | Misdirected Request | The request was directed at a server unable to produce a response. |
| 422 | Unprocessable Entity | The request was well-formed but had semantic errors (common in APIs). |
| 423 | Locked | The resource being accessed is locked (WebDAV). |
| 424 | Failed Dependency | The request failed because a previous request it depended on failed (WebDAV). |
| 425 | Too Early | The server is unwilling to risk processing a request that might be replayed. |
| 426 | Upgrade Required | The client should switch to a different protocol given in the Upgrade header. |
| 428 | Precondition Required | The origin server requires the request to be conditional. |
| 429 | Too Many Requests | The user has sent too many requests in a given amount of time (rate limiting). |
| 431 | Request Header Fields Too Large | The header fields are too large for the server to process. |
| 451 | Unavailable For Legal Reasons | The resource is unavailable due to legal demands. |
5xx — Server Error
| 500 | Internal Server Error | A generic error; the server hit an unexpected condition. |
| 501 | Not Implemented | The server does not support the functionality required to fulfill the request. |
| 502 | Bad Gateway | The server, acting as a gateway, got an invalid response from the upstream server. |
| 503 | Service Unavailable | The server is not ready to handle the request (overloaded or down for maintenance). |
| 504 | Gateway Timeout | The server, acting as a gateway, did not get a response in time from the upstream server. |
| 505 | HTTP Version Not Supported | The HTTP version used in the request is not supported by the server. |
| 506 | Variant Also Negotiates | The server has an internal configuration error during 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 portals). |
What are HTTP status codes?
An HTTP status code is a three-digit number that a server returns with every response to tell the client how the request went. The first digit places it into one of five classes.
The five classes
- 1xx Informational — the request was received and the process is continuing.
- 2xx Success — the request was received, understood, and accepted.
- 3xx Redirection — further action is needed to complete the request.
- 4xx Client Error — the problem is on the client side, like a bad URL or missing authentication.
- 5xx Server Error — the server failed to fulfil a valid request.
Frequently asked questions
What is the difference between a 301 and a 302 redirect?
301 is a permanent redirect, so search engines move their index to the new URL. 302 is temporary, so the original URL keeps its ranking. Use 301 for permanent moves and 302 for short-term ones.
What is the difference between 401 and 403?
401 Unauthorized means you have not authenticated yet. 403 Forbidden means you are authenticated but still not permitted. In short: 401 is “who are you?” and 403 is “I know who you are, and the answer is no.”
What does a 500 Internal Server Error mean?
500 is a generic message that something went wrong on the server and it could not be more specific. The real cause is usually found in the server logs.