HTTP Status Codes
An HTTP status code is the three-digit number a server sends back to say how a request went. The first digit gives the class: 1xx informational, 2xx success, 3xx redirection, 4xx client error and 5xx server error. This list follows the official IANA registry as of 2026-10-04, so names like Content Too Large (413) and Unprocessable Content (422) are the current RFC 9110 ones.
1xx Informational
| Code | Name | Meaning |
|---|---|---|
| 100 | Continue | The server received the request headers and the client should go on and send the body. |
| 101 | Switching Protocols | The server agrees to switch to the protocol named in the Upgrade header, for example WebSocket. |
| 102 | Processing | Defined by WebDAV (RFC 2518): the server accepted the request and is still working on it. Later WebDAV specifications no longer use it. |
| 103 | Early Hints | Lets the server send preliminary headers, such as Link preload hints, before the final response is ready. |
2xx Success
| Code | Name | Meaning |
|---|---|---|
| 200 | OK | The request succeeded. What the body contains depends on the method used. |
| 201 | Created | The request succeeded and created a new resource, usually identified by a Location header. |
| 202 | Accepted | The request was accepted for processing, but the processing is not finished. |
| 203 | Non-Authoritative Information | The response is a modified version of the origin server's response, typically produced by a transforming proxy. |
| 204 | No Content | The request succeeded and there is no body to send back. |
| 205 | Reset Content | The request succeeded and the client should reset its document view, for example by clearing a form. |
| 206 | Partial Content | The server is delivering only part of the resource, as requested with a Range header. |
| 207 | Multi-Status | WebDAV: the body holds separate status codes for several resources. |
| 208 | Already Reported | WebDAV: members of a binding were already listed earlier in the response and are not repeated. |
| 226 | IM Used | The server fulfilled a GET request using one or more instance manipulations, such as delta encoding. |
3xx Redirection
| Code | Name | Meaning |
|---|---|---|
| 300 | Multiple Choices | The request has more than one possible response and the client or user should choose one. |
| 301 | Moved Permanently | The resource has moved permanently to the URL in the Location header. |
| 302 | Found | The resource is temporarily at a different URL, given in the Location header. |
| 303 | See Other | Look at another URL with a GET request to see the result, typically after a POST. |
| 304 | Not Modified | The cached copy is still valid, so no body is sent. |
| 305 | Use Proxy | Deprecated: told the client to use a proxy. Clients must not rely on it. |
| 306 | Switch Proxy (reserved) | Reserved and unused. It once meant 'Switch Proxy'. |
| 307 | Temporary Redirect | Temporary redirect that keeps the original method and body. |
| 308 | Permanent Redirect | Permanent redirect that keeps the original method and body. |
4xx Client error
| Code | Name | Meaning |
|---|---|---|
| 400 | Bad Request | The server cannot process the request because it looks malformed. |
| 401 | Unauthorized | The request lacks valid authentication credentials for the target resource. |
| 402 | Payment Required | Reserved for future digital payment schemes. No standard use exists. |
| 403 | Forbidden | The server understood the request but refuses to authorize it. |
| 404 | Not Found | The server cannot find the requested resource. |
| 405 | Method Not Allowed | The method is known but not allowed for this resource. |
| 406 | Not Acceptable | The server cannot produce a response matching the Accept headers the client sent. |
| 407 | Proxy Authentication Required | Like 401, but the client must authenticate with the proxy first. |
| 408 | Request Timeout | The server timed out waiting for the request to be sent in full. |
| 409 | Conflict | The request conflicts with the current state of the resource. |
| 410 | Gone | The resource used to exist at this URL and has been removed on purpose, with no forwarding address. |
| 411 | Length Required | The server requires a Content-Length header and the request did not have one. |
| 412 | Precondition Failed | A precondition in the request headers, such as If-Match, evaluated to false. |
| 413 | Content Too Large | The request body is larger than the server is willing to process. |
| 414 | URI Too Long | The URL is longer than the server is willing to interpret. |
| 415 | Unsupported Media Type | The server refuses the request because the body's media type is not supported. |
| 416 | Range Not Satisfiable | The Range header asks for a part of the resource that cannot be served. |
| 417 | Expectation Failed | The server cannot meet the requirements of the Expect header. |
| 418 | I'm a teapot (reserved) | Reserved by RFC 9110. It is best known as the 'I'm a teapot' joke from the April Fools RFC 2324. |
| 421 | Misdirected Request | The request was sent to a server that cannot produce a response for that host and scheme. |
| 422 | Unprocessable Content | The server understands the content type and syntax but cannot process the contained instructions. |
| 423 | Locked | WebDAV: the source or destination resource is locked. |
| 424 | Failed Dependency | WebDAV: the request failed because it depended on another request that failed. |
| 425 | Too Early | The server is unwilling to risk processing a request that might be replayed. |
| 426 | Upgrade Required | The server refuses to perform the request with the current protocol and asks the client to upgrade. |
| 428 | Precondition Required | The server requires the request to be conditional, to prevent lost updates. |
| 429 | Too Many Requests | The client has sent too many requests in a given amount of time (rate limiting). |
| 431 | Request Header Fields Too Large | The server refuses the request because its header fields are too large. |
| 451 | Unavailable For Legal Reasons | Access to the resource is denied for legal reasons. |
5xx Server error
| Code | Name | Meaning |
|---|---|---|
| 500 | Internal Server Error | The server hit an unexpected condition that stopped it from fulfilling the request. |
| 501 | Not Implemented | The server does not support the functionality required to fulfill the request. |
| 502 | Bad Gateway | A gateway or proxy received an invalid response from the upstream server. |
| 503 | Service Unavailable | The server is not ready to handle the request, often because of overload or maintenance. |
| 504 | Gateway Timeout | A gateway or proxy did not get a response from the upstream server in time. |
| 505 | HTTP Version Not Supported | The server does not support the HTTP version used in the request. |
| 506 | Variant Also Negotiates | The server has an internal configuration error in transparent content negotiation. |
| 507 | Insufficient Storage | WebDAV: the server cannot store the representation needed to complete the request. |
| 508 | Loop Detected | WebDAV: the server detected an infinite loop while processing the request. |
| 510 | Not Extended (obsolete) | Obsolete: the HTTP extension framework from RFC 2774 was moved to Historic. |
| 511 | Network Authentication Required | The client needs to authenticate to gain network access, as with a captive portal. |
Codes in the table link to a full page when we have written one: what causes it, how to fix it and related codes. See also the HTTP methods reference.