HTTP Status Codes

A fast, searchable reference of every standard HTTP status code, with its official name and a plain-English explanation of what it means. Type a number or a keyword in the box to filter the whole list instantly.

1xx — Informational

100ContinueThe server received the request headers and the client should proceed to send the body.
101Switching ProtocolsThe server is switching protocols as requested by the client (Upgrade header).
102ProcessingThe server has received and is processing the request, but no response is available yet.
103Early HintsUsed to return some response headers before the final HTTP message.

2xx — Success

200OKThe request succeeded. The meaning depends on the HTTP method used.
201CreatedThe request succeeded and a new resource was created as a result.
202AcceptedThe request has been received but not yet acted upon. Non-committal.
203Non-Authoritative InformationThe returned metadata is from a copy, not the origin server.
204No ContentThere is no content to send for this request, but the headers may be useful.
205Reset ContentTells the client to reset the document that sent this request.
206Partial ContentUsed when the client sends a Range header to request only part of a resource.
207Multi-StatusConveys information about multiple resources, for WebDAV.
208Already ReportedMembers of a DAV binding have already been enumerated.
226IM UsedThe server fulfilled a GET request for the resource using instance manipulations.

3xx — Redirection

300Multiple ChoicesThe request has more than one possible response; the user should choose one.
301Moved PermanentlyThe URL of the resource has changed permanently. The new URL is given in the response.
302FoundThe resource is temporarily located at a different URL.
303See OtherThe client should get the resource at another URL with a GET request.
304Not ModifiedThe cached response is still valid; the resource has not changed.
307Temporary RedirectLike 302, but the method and body must not change on the redirected request.
308Permanent RedirectLike 301, but the method and body must not change on the redirected request.

4xx — Client Error

400Bad RequestThe server cannot process the request due to a client error (e.g. malformed syntax).
401UnauthorizedAuthentication is required and has failed or not been provided.
402Payment RequiredReserved for future use; sometimes used by payment or rate-limited APIs.
403ForbiddenThe client is authenticated but does not have permission to access the resource.
404Not FoundThe server cannot find the requested resource. The most familiar status code.
405Method Not AllowedThe request method is known but not supported by the target resource.
406Not AcceptableNo content matching the criteria in the Accept headers could be produced.
407Proxy Authentication RequiredAuthentication with the proxy is required first.
408Request TimeoutThe server timed out waiting for the request.
409ConflictThe request conflicts with the current state of the server.
410GoneThe resource is permanently gone and no forwarding address is known.
411Length RequiredThe server requires a Content-Length header.
412Precondition FailedA precondition in the request headers was not met.
413Payload Too LargeThe request body is larger than the server is willing to process.
414URI Too LongThe requested URI is longer than the server is willing to interpret.
415Unsupported Media TypeThe media format of the request data is not supported.
416Range Not SatisfiableThe Range specified in the request cannot be fulfilled.
417Expectation FailedThe expectation in the Expect header could not be met.
418I'm a teapotAn April Fools joke from RFC 2324; returned by teapots that refuse to brew coffee.
421Misdirected RequestThe request was directed at a server unable to produce a response.
422Unprocessable EntityThe request was well-formed but had semantic errors (common in APIs).
423LockedThe resource being accessed is locked (WebDAV).
424Failed DependencyThe request failed because a previous request it depended on failed (WebDAV).
425Too EarlyThe server is unwilling to risk processing a request that might be replayed.
426Upgrade RequiredThe client should switch to a different protocol given in the Upgrade header.
428Precondition RequiredThe origin server requires the request to be conditional.
429Too Many RequestsThe user has sent too many requests in a given amount of time (rate limiting).
431Request Header Fields Too LargeThe header fields are too large for the server to process.
451Unavailable For Legal ReasonsThe resource is unavailable due to legal demands.

5xx — Server Error

500Internal Server ErrorA generic error; the server hit an unexpected condition.
501Not ImplementedThe server does not support the functionality required to fulfill the request.
502Bad GatewayThe server, acting as a gateway, got an invalid response from the upstream server.
503Service UnavailableThe server is not ready to handle the request (overloaded or down for maintenance).
504Gateway TimeoutThe server, acting as a gateway, did not get a response in time from the upstream server.
505HTTP Version Not SupportedThe HTTP version used in the request is not supported by the server.
506Variant Also NegotiatesThe server has an internal configuration error during content negotiation.
507Insufficient StorageThe server cannot store the representation needed to complete the request (WebDAV).
508Loop DetectedThe server detected an infinite loop while processing the request (WebDAV).
510Not ExtendedFurther extensions to the request are required for the server to fulfill it.
511Network Authentication RequiredThe client needs to authenticate to gain network access (e.g. captive portals).

What are HTTP status codes?

An HTTP status code is a three-digit number that a server returns with every response to tell the client how the request went. The first digit places it into one of five classes.

The five classes

  • 1xx Informational — the request was received and the process is continuing.
  • 2xx Success — the request was received, understood, and accepted.
  • 3xx Redirection — further action is needed to complete the request.
  • 4xx Client Error — the problem is on the client side, like a bad URL or missing authentication.
  • 5xx Server Error — the server failed to fulfil a valid request.

Frequently asked questions

What is the difference between a 301 and a 302 redirect?

301 is a permanent redirect, so search engines move their index to the new URL. 302 is temporary, so the original URL keeps its ranking. Use 301 for permanent moves and 302 for short-term ones.

What is the difference between 401 and 403?

401 Unauthorized means you have not authenticated yet. 403 Forbidden means you are authenticated but still not permitted. In short: 401 is “who are you?” and 403 is “I know who you are, and the answer is no.”

What does a 500 Internal Server Error mean?

500 is a generic message that something went wrong on the server and it could not be more specific. The real cause is usually found in the server logs.