HTTP Status Codes

Look up any HTTP status code — what it means, when servers send it and what to do about it.

✓ Runs locally in your browser — nothing is uploaded

CodeNameMeaning
100ContinueThe server received the request headers; the client may send the body. Used with Expect: 100-continue.
101Switching ProtocolsThe server agrees to switch protocol, e.g. upgrading HTTP to WebSocket.
102ProcessingWebDAV: the request is still being processed (deprecated).
103Early HintsSent before the final response with Link headers so the browser can preload resources early (RFC 8297).
200OKSuccess. The response body contains the requested resource or result.
201CreatedA new resource was created, usually after POST or PUT. The Location header points to it.
202AcceptedThe request was accepted for processing but is not finished — common for queued or async jobs.
203Non-Authoritative InformationA proxy returned a modified version of the origin’s response.
204No ContentSuccess with no response body, typical for DELETE or saving settings.
205Reset ContentSuccess; the client should reset the form or view that sent the request.
206Partial ContentOnly part of the resource is returned, in answer to a Range header (video streaming, resumable downloads).
207Multi-StatusWebDAV: the body contains status codes for several resources.
208Already ReportedWebDAV: members of a binding were already listed earlier in the response.
226IM UsedThe response is the result of instance manipulations (delta encoding).
300Multiple ChoicesThere are several representations; the client or user should choose one.
301Moved PermanentlyThe resource has a new permanent URL. Browsers and search engines update to the Location header; the method may change to GET.
302FoundTemporary redirect. The original URL should still be used in future.
303See OtherRedirect to another URL with GET, typically after a form POST (Post/Redirect/Get).
304Not ModifiedThe cached copy is still valid (after If-None-Match or If-Modified-Since); no body is sent.
305Use ProxyDeprecated; must not be used.
307Temporary RedirectLike 302, but the method and body must not change.
308Permanent RedirectLike 301, but the method and body must not change.
400Bad RequestThe server cannot process the request because it is malformed — invalid JSON, missing parameters or bad syntax.
401UnauthorizedAuthentication is missing or invalid. Log in or send valid credentials (WWW-Authenticate says how).
402Payment RequiredReserved; some APIs use it when a quota or subscription has run out.
403ForbiddenThe server understood who you are but refuses access. Re-authenticating will not help.
404Not FoundNo resource exists at this URL, or the server is hiding it.
405Method Not AllowedThe URL exists but does not support this method (e.g. POST to a read-only endpoint). The Allow header lists valid ones.
406Not AcceptableThe server cannot produce a format matching the Accept headers.
407Proxy Authentication RequiredLike 401, but authentication is needed with a proxy.
408Request TimeoutThe client took too long to send the request.
409ConflictThe request conflicts with the current state, e.g. an edit conflict or duplicate record.
410GoneThe resource was deliberately removed and will not return. Search engines drop it faster than a 404.
411Length RequiredThe request needs a Content-Length header.
412Precondition FailedA condition in headers such as If-Match was not met.
413Content Too LargeThe request body is larger than the server allows (formerly Payload Too Large).
414URI Too LongThe URL is longer than the server will process.
415Unsupported Media TypeThe request body format (Content-Type) is not supported.
416Range Not SatisfiableThe requested Range is outside the size of the resource.
417Expectation FailedThe Expect header cannot be met.
418I’m a teapotAn April Fools’ joke from RFC 2324; reserved and not used seriously.
421Misdirected RequestThe request went to a server that cannot answer for this host (HTTP/2 connection reuse).
422Unprocessable ContentThe syntax is fine but the content fails validation — common for form or API validation errors.
423LockedWebDAV: the resource is locked.
424Failed DependencyWebDAV: the request failed because a previous one failed.
425Too EarlyThe server will not process a request that might be replayed (TLS early data).
426Upgrade RequiredThe client must switch to another protocol, given in the Upgrade header.
428Precondition RequiredThe server requires conditional requests (If-Match) to prevent lost updates.
429Too Many RequestsRate limit exceeded. Wait — the Retry-After header often says how long.
431Request Header Fields Too LargeHeaders (often cookies) are too large. Clearing cookies usually fixes it.
451Unavailable For Legal ReasonsAccess is blocked for legal reasons, such as a court order.
500Internal Server ErrorA generic error: the server hit an unexpected condition, often a bug or crash. Check server logs.
501Not ImplementedThe server does not support the functionality needed, e.g. an unknown method.
502Bad GatewayA proxy or gateway got an invalid response from the upstream server — the app behind it may be down.
503Service UnavailableThe server is temporarily overloaded or in maintenance. Retry later; Retry-After may say when.
504Gateway TimeoutA proxy or gateway did not get a response from the upstream server in time.
505HTTP Version Not SupportedThe server does not support the HTTP version used.
506Variant Also NegotiatesA content negotiation configuration error on the server.
507Insufficient StorageWebDAV: the server cannot store what is needed to complete the request.
508Loop DetectedWebDAV: the server found an infinite loop.
510Not ExtendedObsoleted; further extensions are required.
511Network Authentication RequiredYou need to log in to the network, e.g. a hotel or airport Wi-Fi captive portal.

In short: HTTP status codes are three-digit numbers a server returns with each response: 1xx informational, 2xx success, 3xx redirection, 4xx client error and 5xx server error.

About HTTP Status Codes

Every HTTP response starts with a status code that tells the client what happened. The first digit gives the class: 2xx means it worked, 3xx means look elsewhere, 4xx means the request was wrong, and 5xx means the server failed. Knowing the exact code saves time when debugging an API, a redirect chain or an SEO problem.

This reference covers all codes in the IANA HTTP Status Code Registry as defined by RFC 9110 and related RFCs (such as 429 from RFC 6585 and 103 from RFC 8297), plus 418 for completeness. Each entry explains when it is used in practice, not just the formal definition.

How to use HTTP Status Codes

  1. Type a code, a word such as “redirect” or “auth”, or pick a class.
  2. Read the meaning and typical causes in the table.

Examples

301 vs 302

301 is a permanent redirect — search engines transfer ranking to the new URL. 302 is temporary, so the original URL stays indexed.

401 vs 403

401 means “you are not authenticated” (log in or send a token). 403 means “you are authenticated, but not allowed”.

Frequently asked questions

What is the difference between 500 and 503?

500 is a generic unexpected server error, often a bug. 503 means the server is temporarily unable to handle the request, for example during maintenance or overload, and may include a Retry-After header.

Which redirect should I use for SEO?

Use 301 (or 308 to keep the HTTP method) for permanent moves. Use 302/307 only for genuinely temporary redirects.

Is 418 a real status code?

“I’m a teapot” started as an April Fools’ joke (RFC 2324). It is reserved in the registry and some frameworks support it, but it has no real use.

What does 429 mean?

Too Many Requests: you hit a rate limit. Slow down and check the Retry-After header.

Updated November 2026 · Free, no signup · How we build and test tools

Related tools All developer tools →