HTTP Status Codes Reference
Searchable list of every HTTP status code in the IANA registry (100–511) with reason phrase, defining RFC and a plain explanation of when it is used.
- 100ContinueRFC 9110
The server received the request headers; the client may continue sending the body (reply to Expect: 100-continue).
- 101Switching ProtocolsRFC 9110
The server agrees to switch protocols as requested in the Upgrade header, e.g. to WebSocket.
- 102ProcessingRFC 2518
WebDAV: the server is still processing a long request; no response yet.
- 103Early HintsRFC 8297
Sent before the final response so the browser can start preloading resources listed in Link headers.
- 104Upload Resumption Supporteddraft-ietf-httpbis-resumable-uploadtemporary registration
Resumable uploads draft: the server supports resuming interrupted uploads.
- 200OKRFC 9110
The request succeeded. The body contains the requested resource or the result of the action.
- 201CreatedRFC 9110
A new resource was created; its URL is usually given in the Location header.
- 202AcceptedRFC 9110
The request was accepted for processing, which has not finished yet (asynchronous jobs).
- 203Non-Authoritative InformationRFC 9110
Success, but the returned content was modified by a transforming proxy.
- 204No ContentRFC 9110
Success with no response body, typical for DELETE or saving data.
- 205Reset ContentRFC 9110
Success; the client should reset the form or view that sent the request.
- 206Partial ContentRFC 9110
Only part of the resource is returned, as requested with a Range header (resumable downloads, video seeking).
- 207Multi-StatusRFC 4918
WebDAV: the body contains separate status codes for several resources.
- 208Already ReportedRFC 5842
WebDAV: members of a binding were already listed earlier in this response.
- 226IM UsedRFC 3229
Delta encoding: the response is the result of instance manipulations applied to the resource.
- 300Multiple ChoicesRFC 9110
Several representations are available and the client may choose one.
- 301Moved PermanentlyRFC 9110
The resource has moved permanently to the URL in Location; search engines transfer ranking. Clients may switch POST to GET.
- 302FoundRFC 9110
The resource is temporarily at another URL; keep using the original URL. Clients may switch POST to GET.
- 303See OtherRFC 9110
See another URL with GET, typically after a form POST (Post/Redirect/Get pattern).
- 304Not ModifiedRFC 9110
The cached copy is still valid (conditional request with If-None-Match / If-Modified-Since); no body is sent.
- 305Use ProxyRFC 9110deprecated
Deprecated: the resource had to be accessed through a proxy. Not used for security reasons.
- 306(Unused)RFC 9110reserved, unused
Reserved; was used in an earlier draft and is no longer used.
- 307Temporary RedirectRFC 9110
Temporary redirect that keeps the method and body (a POST stays a POST).
- 308Permanent RedirectRFC 9110
Permanent redirect that keeps the method and body (a POST stays a POST).
- 400Bad RequestRFC 9110
The server cannot process the request because it is malformed (bad syntax, invalid parameters, invalid JSON).
- 401UnauthorizedRFC 9110
Authentication is required or failed; the response includes a WWW-Authenticate header.
- 402Payment RequiredRFC 9110
Reserved for future use; some APIs use it for payment or quota problems.
- 403ForbiddenRFC 9110
The server understood the request but refuses it; logging in again will not help.
- 404Not FoundRFC 9110
No resource exists at this URL (or the server does not want to reveal it).
- 405Method Not AllowedRFC 9110
The HTTP method is not supported for this resource; the Allow header lists valid methods.
- 406Not AcceptableRFC 9110
No representation matches the Accept headers sent by the client.
- 407Proxy Authentication RequiredRFC 9110
Like 401, but authentication with the proxy is required.
- 408Request TimeoutRFC 9110
The client took too long to send the request; the server closed the connection.
- 409ConflictRFC 9110
The request conflicts with the current state of the resource (e.g. edit conflict, duplicate).
- 410GoneRFC 9110
The resource was removed permanently and will not come back; stronger than 404.
- 411Length RequiredRFC 9110
The server requires a Content-Length header.
- 412Precondition FailedRFC 9110
A precondition such as If-Match or If-Unmodified-Since was not met (optimistic locking).
- 413Content Too LargeRFC 9110
The request body is larger than the server accepts (upload size limit).
- 414URI Too LongRFC 9110
The URL is longer than the server can process.
- 415Unsupported Media TypeRFC 9110
The body’s media type (Content-Type) is not supported.
- 416Range Not SatisfiableRFC 9110
The requested Range cannot be satisfied, e.g. it starts beyond the end of the file.
- 417Expectation FailedRFC 9110
The expectation in the Expect header cannot be met.
- 418(Unused)RFC 9110reserved, unused
Reserved and unused; known from the "I’m a teapot" April Fools’ RFC 2324.
- 421Misdirected RequestRFC 9110
The request reached a server that cannot answer for this host (e.g. reused HTTP/2 connection).
- 422Unprocessable ContentRFC 9110
The syntax is correct but the content is semantically invalid (validation errors).
- 423LockedRFC 4918
WebDAV: the resource is locked.
- 424Failed DependencyRFC 4918
WebDAV: the request failed because an action it depended on failed.
- 425Too EarlyRFC 8470
The server refuses to process a request that might be replayed (TLS 1.3 early data).
- 426Upgrade RequiredRFC 9110
The client must switch to another protocol listed in the Upgrade header.
- 428Precondition RequiredRFC 6585
The server requires a conditional request (If-Match) to prevent lost updates.
- 429Too Many RequestsRFC 6585
Too many requests in a given time (rate limiting); Retry-After says when to try again.
- 431Request Header Fields Too LargeRFC 6585
The request headers (or one header, e.g. cookies) are too large.
- 451Unavailable For Legal ReasonsRFC 7725
The resource is unavailable for legal reasons, such as a court order or censorship.
- 500Internal Server ErrorRFC 9110
A generic, unexpected error on the server.
- 501Not ImplementedRFC 9110
The server does not support the functionality required (e.g. an unknown method).
- 502Bad GatewayRFC 9110
A gateway or proxy received an invalid response from the upstream server.
- 503Service UnavailableRFC 9110
The server is temporarily overloaded or down for maintenance; Retry-After may be sent.
- 504Gateway TimeoutRFC 9110
A gateway or proxy did not get a response from the upstream server in time.
- 505HTTP Version Not SupportedRFC 9110
The HTTP version used in the request is not supported.
- 506Variant Also NegotiatesRFC 2295
Content negotiation is misconfigured: the chosen variant itself negotiates.
- 507Insufficient StorageRFC 4918
WebDAV: the server does not have enough storage to complete the request.
- 508Loop DetectedRFC 5842
WebDAV: the server detected an infinite loop while processing the request.
- 510Not Extended (OBSOLETED)RFC 2774deprecated
Obsoleted: further extensions to the request were required (HTTP Extension Framework).
- 511Network Authentication RequiredRFC 6585
The client must authenticate to gain network access, e.g. a Wi-Fi captive portal.
What is HTTP Status Codes?
A complete, searchable reference of all 64 HTTP status codes registered with IANA, from 100 Continue to 511 Network Authentication Required. Each entry shows the official reason phrase, the RFC that defines it and a short explanation of what it means and when servers send it; deprecated and unused codes are marked.
How to use HTTP Status Codes
- Type a code (
404), part of a code (30) or a word (redirect,timeout) in the search box. - Filter by class: 1xx informational, 2xx success, 3xx redirection, 4xx client error, 5xx server error.
- Read the reason phrase, RFC and explanation for each code.
Example
418
418 (Unused) · RFC 9110 · reserved and unused; known from the "I’m a teapot" April Fools’ RFC 2324.
When to use HTTP Status Codes
Use it while debugging APIs, reading server logs or choosing which status to return from your own endpoints. Unofficial codes used by specific products (Nginx 499, Cloudflare 520–527, IIS 440) are not in the registry and therefore not listed.
How HTTP Status Codes works
The list mirrors the IANA HTTP Status Code Registry, which since 2022 is mostly defined by RFC 9110 (HTTP Semantics) plus extensions such as WebDAV (RFC 4918) and RFC 6585. Search matches the code prefix, the English reason phrase and the explanation in the current language, all locally.
Common Use Cases
- Decide between 401 and 403, or 400 and 422, for an API error.
- Look up 425 Too Early or 421 Misdirected Request seen in logs.
- Explain to a client why 410 Gone is better than 404 for removed pages.
- Choose 307 or 308 when a redirect must keep the POST method.
FAQs
What is the difference between 401 and 403?
401 means not authenticated (or the credentials failed) and comes with WWW-Authenticate. 403 means the server knows who you are but you are not allowed.
Is 418 I'm a teapot a real status code?
It is reserved in the registry and listed as unused by RFC 9110, because so many libraries implement it from the 1998 April Fools' RFC.
Why is 422 now called Unprocessable Content?
RFC 9110 moved it from WebDAV into core HTTP and renamed it from Unprocessable Entity.