HTTP status codes

Every common HTTP status code in plain English. Search by number or name.

48 status codes

CodeNameMeaning
1xx Informational
100ContinueThe server got the request headers; the client can send the body.
101Switching ProtocolsThe server is switching protocols as requested, for example upgrading to WebSocket.
103Early HintsPreliminary headers (often Link preload hints) sent before the final response.
2xx Success
200OKThe request succeeded.
201CreatedThe request succeeded and a new resource was created, usually after POST or PUT.
202AcceptedThe request was accepted for processing, but the work is not finished yet.
204No ContentSuccess, with no response body. Common for DELETE and some PUT requests.
206Partial ContentOnly part of the resource was sent, in response to a Range header (used for video streaming and resumable downloads).
3xx Redirection
301Moved PermanentlyThe resource has a new permanent URL. Browsers and search engines update to the new address.
302FoundA temporary redirect. Clients should keep using the original URL in future.
303See OtherRedirect to another URL with GET, typically after a form POST.
304Not ModifiedThe cached copy is still valid, so no body is sent. Saves bandwidth.
307Temporary RedirectTemporary redirect that keeps the original method and body (unlike 302 in practice).
308Permanent RedirectPermanent redirect that keeps the original method and body.
4xx Client error
400Bad RequestThe server could not understand the request: malformed syntax, invalid JSON or bad parameters.
401UnauthorizedAuthentication is required or failed. Despite the name, it means "unauthenticated".
402Payment RequiredReserved for future use; some APIs use it when a payment or plan upgrade is needed.
403ForbiddenThe server understood the request but refuses it, often because you lack permission.
404Not FoundNo resource exists at this URL.
405Method Not AllowedThe URL exists but does not support this HTTP method, such as POST to a read-only endpoint.
406Not AcceptableThe server cannot produce a response matching the Accept headers.
408Request TimeoutThe server gave up waiting for the client to finish sending the request.
409ConflictThe request conflicts with the current state, such as an edit conflict or duplicate record.
410GoneThe resource was deliberately removed and will not come back. Search engines drop it faster than a 404.
411Length RequiredThe server requires a Content-Length header.
412Precondition FailedA condition in the request headers (such as If-Match) was not met.
413Content Too LargeThe request body is bigger than the server allows, such as an upload over the size limit.
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 byte range is outside the size of the resource.
418I'm a teapotAn April Fools joke from RFC 2324, kept alive by developers. Some sites use it to refuse bots.
421Misdirected RequestThe request went to a server that cannot produce a response for this host.
422Unprocessable ContentThe request was well-formed but has semantic errors, such as failed validation.
425Too EarlyThe server is unwilling to process a request that might be replayed.
426Upgrade RequiredThe client must switch to a different protocol, such as a newer TLS version.
428Precondition RequiredThe server requires the request to be conditional, to prevent lost updates.
429Too Many RequestsRate limited: the client sent too many requests in a given time. Check the Retry-After header.
431Request Header Fields Too LargeThe headers (often cookies) are too large.
451Unavailable For Legal ReasonsThe resource is blocked for legal reasons, such as a court order.
5xx Server error
500Internal Server ErrorA generic server error: something unexpected went wrong.
501Not ImplementedThe server does not support the functionality needed for this request.
502Bad GatewayA gateway or proxy got an invalid response from the server behind it.
503Service UnavailableThe server is temporarily unable to handle the request: overloaded or down for maintenance.
504Gateway TimeoutA gateway or proxy did not get a response in time from the server behind it.
505HTTP Version Not SupportedThe server does not support the HTTP version used.
507Insufficient StorageThe server cannot store what is needed to complete the request (WebDAV).
508Loop DetectedThe server detected an infinite loop while processing (WebDAV).
511Network Authentication RequiredYou need to sign in to the network, such as a hotel or airport Wi-Fi login page.

The five classes

  • 1xx informational: the request was received and is continuing.
  • 2xx success: the request worked.
  • 3xx redirection: the client needs to go somewhere else.
  • 4xx client error: something is wrong with the request (bad URL, no permission, too many requests).
  • 5xx server error: the server failed to handle a valid request.

Codes that matter for SEO

  • 301 vs 302: use 301 (or 308) for permanent moves so search engines transfer ranking to the new URL.
  • 404 vs 410: both remove a page from results; 410 is processed slightly faster.
  • 503 during maintenance tells crawlers to come back later instead of dropping pages. Add a Retry-After header.
  • "Soft 404s", which are error pages returning 200, waste crawl budget. Return a real 404.

Questions

What is the difference between 401 and 403?

401 means you're not authenticated (log in and try again). 403 means you're authenticated, or it doesn't matter, but you're not allowed.

Is a website down if it returns a 4xx code?

Not necessarily. 4xx means the server is up and rejecting the request. 5xx codes and timeouts usually mean a real outage.

Related tools