HTTP status codes: the complete list
Data last checked 2026-09-20
This table lists every status code in the IANA HTTP Status Code Registry, the authoritative list maintained for the HTTP specifications. Codes are grouped by their first digit: 1xx informational, 2xx success, 3xx redirection, 4xx client error and 5xx server error. Names follow RFC 9110 (the 2022 HTTP semantics standard), which renamed a few codes: 413 is now "Content Too Large" and 422 "Unprocessable Content".
Two numbers are registered but unused: 306 was reserved after a draft "Switch Proxy" was dropped, and 418 was reserved so that the April-1 "I'm a teapot" joke from RFC 2324 is never assigned a conflicting meaning. Codes you may see in the wild that are not in the registry, such as Cloudflare's 520 to 530 or Nginx's 499, are vendor-specific and belong to the server, not to HTTP.
For upload forms the codes that matter most are 413 (file too large), 415 (format not accepted) and 422 (the server validated the file and rejected it). If a portal returns one of those, the file tools on this site can usually fix the file: compress it under the limit or convert it to JPEG or MP4.
All registered status codes
63 rows
| Code | Name | Class | Meaning | Defined in |
|---|---|---|---|---|
| 100 | Continue | 1xx Informational | The initial part of the request was received; the client may continue sending the body. | RFC 9110 |
| 101 | Switching Protocols | 1xx Informational | The server agrees to switch to the protocol named in the Upgrade header (for example WebSocket). | RFC 9110 |
| 102 | Processing | 1xx Informational | WebDAV: the request was accepted and is being processed, but no response is available yet. | RFC 2518 |
| 103 | Early Hints | 1xx Informational | Preliminary headers (typically Link preload hints) sent before the final response. | RFC 8297 |
| 200 | OK | 2xx Success | The request succeeded; the response body carries the result. | RFC 9110 |
| 201 | Created | 2xx Success | A new resource was created; its location is usually in the Location header. | RFC 9110 |
| 202 | Accepted | 2xx Success | The request was accepted for processing, but processing has not completed. | RFC 9110 |
| 203 | Non-Authoritative Information | 2xx Success | The response was modified by a proxy from the origin server's 200 response. | RFC 9110 |
| 204 | No Content | 2xx Success | Success with no body to return (common for DELETE and some PUT requests). | RFC 9110 |
| 205 | Reset Content | 2xx Success | Success; the client should reset the form or view that sent the request. | RFC 9110 |
| 206 | Partial Content | 2xx Success | A range request succeeded; the body contains the requested byte range. | RFC 9110 |
| 207 | Multi-Status | 2xx Success | WebDAV: the body contains several status codes for several resources. | RFC 4918 |
| 208 | Already Reported | 2xx Success | WebDAV: members of a binding were already listed earlier in the multistatus response. | RFC 5842 |
| 226 | IM Used | 2xx Success | The response is the result of applying instance manipulations (delta encoding) to the resource. | RFC 3229 |
| 300 | Multiple Choices | 3xx Redirection | Several representations exist; the client or user can pick one. | RFC 9110 |
| 301 | Moved Permanently | 3xx Redirection | The resource has a new permanent URL; clients and search engines should update links. May change POST to GET. | RFC 9110 |
| 302 | Found | 3xx Redirection | Temporary redirect to another URL; the original should still be used in future. May change POST to GET. | RFC 9110 |
| 303 | See Other | 3xx Redirection | Redirect to a different resource with GET, typically after a form POST. | RFC 9110 |
| 304 | Not Modified | 3xx Redirection | Conditional request: the cached copy is still valid; no body is sent. | RFC 9110 |
| 305 | Use Proxy | 3xx Redirection | Deprecated: the resource must be accessed through a proxy. Browsers ignore it. | RFC 9110 |
| 306 | (Unused) | 3xx Redirection | Reserved; was "Switch Proxy" in a draft and is no longer used. | RFC 9110 |
| 307 | Temporary Redirect | 3xx Redirection | Temporary redirect that must keep the same method and body (POST stays POST). | RFC 9110 |
| 308 | Permanent Redirect | 3xx Redirection | Permanent redirect that must keep the same method and body. | RFC 9110 |
| 400 | Bad Request | 4xx Client error | The server cannot process the request because of a client error (malformed syntax, invalid framing). | RFC 9110 |
| 401 | Unauthorized | 4xx Client error | Authentication is required or failed; the WWW-Authenticate header says how to authenticate. | RFC 9110 |
| 402 | Payment Required | 4xx Client error | Reserved for future use; some APIs use it for quota or billing problems. | RFC 9110 |
| 403 | Forbidden | 4xx Client error | The server understood the request but refuses to authorise it; authenticating again will not help. | RFC 9110 |
| 404 | Not Found | 4xx Client error | No resource matches the URL (or the server hides its existence). | RFC 9110 |
| 405 | Method Not Allowed | 4xx Client error | The method (for example POST) is not supported for this resource; Allow lists the valid ones. | RFC 9110 |
| 406 | Not Acceptable | 4xx Client error | No representation matches the Accept, Accept-Language or similar headers. | RFC 9110 |
| 407 | Proxy Authentication Required | 4xx Client error | Like 401, but authentication is required by a proxy. | RFC 9110 |
| 408 | Request Timeout | 4xx Client error | The server gave up waiting for the request to arrive. | RFC 9110 |
| 409 | Conflict | 4xx Client error | The request conflicts with the current state of the resource (edit conflict, duplicate). | RFC 9110 |
| 410 | Gone | 4xx Client error | The resource was intentionally removed and will not return; search engines drop it faster than for 404. | RFC 9110 |
| 411 | Length Required | 4xx Client error | The server requires a Content-Length header. | RFC 9110 |
| 412 | Precondition Failed | 4xx Client error | A condition in If-Match, If-Unmodified-Since or similar was not met. | RFC 9110 |
| 413 | Content Too Large | 4xx Client error | The request body exceeds the server's limit (formerly "Payload Too Large"); the usual response to an oversized upload. | RFC 9110 |
| 414 | URI Too Long | 4xx Client error | The URL is longer than the server will accept. | RFC 9110 |
| 415 | Unsupported Media Type | 4xx Client error | The body's Content-Type is not supported (for example a HEIC upload where only JPEG is accepted). | RFC 9110 |
| 416 | Range Not Satisfiable | 4xx Client error | The requested byte range lies outside the resource. | RFC 9110 |
| 417 | Expectation Failed | 4xx Client error | The Expect header requirement could not be met. | RFC 9110 |
| 418 | (Unused) | 4xx Client error | Reserved. Originally the April-1 "I'm a teapot" code from RFC 2324; not used by HTTP. | RFC 9110 |
| 421 | Misdirected Request | 4xx Client error | The request was sent to a server that cannot produce a response for that host (common with HTTP/2 connection reuse). | RFC 9110 |
| 422 | Unprocessable Content | 4xx Client error | The request is well-formed but semantically invalid (validation errors); widely used by APIs. | RFC 9110 |
| 423 | Locked | 4xx Client error | WebDAV: the resource is locked. | RFC 4918 |
| 424 | Failed Dependency | 4xx Client error | WebDAV: the request failed because a request it depended on failed. | RFC 4918 |
| 425 | Too Early | 4xx Client error | The server refuses to process a request that might be replayed (TLS early data). | RFC 8470 |
| 426 | Upgrade Required | 4xx Client error | The client must switch to a different protocol named in the Upgrade header. | RFC 9110 |
| 428 | Precondition Required | 4xx Client error | The server requires a conditional request (for example If-Match) to avoid lost updates. | RFC 6585 |
| 429 | Too Many Requests | 4xx Client error | Rate limit exceeded; Retry-After may say when to try again. | RFC 6585 |
| 431 | Request Header Fields Too Large | 4xx Client error | A header or the combined headers are too large (often oversized cookies). | RFC 6585 |
| 451 | Unavailable For Legal Reasons | 4xx Client error | Access is blocked for legal reasons such as a court order or geo-restriction. | RFC 7725 |
| 500 | Internal Server Error | 5xx Server error | A generic server-side failure; check the server logs. | RFC 9110 |
| 501 | Not Implemented | 5xx Server error | The server does not support the request method at all. | RFC 9110 |
| 502 | Bad Gateway | 5xx Server error | A gateway or proxy received an invalid response from the upstream server. | RFC 9110 |
| 503 | Service Unavailable | 5xx Server error | The server is overloaded or down for maintenance; Retry-After may be set. | RFC 9110 |
| 504 | Gateway Timeout | 5xx Server error | A gateway or proxy did not get a timely response from the upstream server. | RFC 9110 |
| 505 | HTTP Version Not Supported | 5xx Server error | The server does not support the HTTP version used in the request. | RFC 9110 |
| 506 | Variant Also Negotiates | 5xx Server error | Transparent content negotiation is misconfigured (circular reference). | RFC 2295 |
| 507 | Insufficient Storage | 5xx Server error | WebDAV: the server cannot store the representation needed to complete the request. | RFC 4918 |
| 508 | Loop Detected | 5xx Server error | WebDAV: the server detected an infinite loop while processing a request with Depth: infinity. | RFC 5842 |
| 510 | Not Extended (OBSOLETED) | 5xx Server error | Obsoleted: further extensions to the request were required (historic HTTP extension framework). | RFC 2774 |
| 511 | Network Authentication Required | 5xx Server error | The client must authenticate to gain network access (captive portals on Wi-Fi). | RFC 6585 |
Sources
Frequently asked questions
What is the difference between 401 and 403?
401 means the server does not know who you are: send credentials (or valid ones) and try again. 403 means it knows who you are and still refuses; retrying with the same identity will not help.
Should I use 301 or 308 for a permanent redirect?
Both are permanent. 301 allows clients to change a POST into a GET; 308 requires the method and body to be preserved. For plain page moves 301 is universal; for API endpoints that receive POST, use 308.
Why did my upload return 413?
The request body is larger than the server's configured limit (for example Nginx's client_max_body_size or a portal's file-size rule). Reduce the file with the image or video compressor before uploading.
Is 418 "I'm a teapot" a real status code?
It comes from an April-1 RFC (2324, Hyper Text Coffee Pot Control Protocol) and is not part of HTTP. IANA keeps 418 registered as "(Unused)" so no real meaning is ever assigned to it.
What are 520, 521, 522 and 499?
They are not standard. Cloudflare uses 520 to 530 for problems reaching an origin server, and Nginx logs 499 when the client closed the connection first. They never appear in the IANA registry.
Related tools
- Format, beautify or minify JSONPretty-print or minify JSON with 2-space, 4-space or tab indentation and optional key sorting.
- Decode a JWT (without sending it anywhere)Decode a JSON Web Token's header and payload and see whether it has expired. Signature is not verified; the token stays in your browser.
- URL-encode or decode textPercent-encode text for URLs (encodeURIComponent or encodeURI) or decode an encoded string.
- Compress an image to under 1 MBReduce large photos to under 1 MB for email, forms and faster sharing.
Related references
- File extensions and MIME types120 common file extensions with their type, MIME type, the programs that open them and notes on converting them, from HEIC and WebP to MKV, OPUS and DOCX.
- Unit conversion tables with live convertersExact conversion factors for length, mass, volume, area, temperature and data sizes (KB vs KiB, MB vs MiB), with a live converter for each section. No sign-up.