HTTP Status Codes

Every standard HTTP status code, what it means and when a server sends it. Search by number or reason phrase to jump straight to the code you saw in a log or a browser. The list covers codes defined by RFC 9110 and related specifications, including WebDAV and newer additions such as 103 and 425.

62 codes

HTTP status codes and their meanings
CodeReason phraseWhat it means
100ContinueThe server received the request headers and the client should send the body.
101Switching ProtocolsThe client asked to switch protocols and the server agreed, for example to WebSocket.
102ProcessingWebDAV: the server accepted the request but has not finished it yet.
103Early HintsA preload hint sent before the final response, usually to start fetching assets.
200OKThe standard success response. The body contains the requested representation.
201CreatedA new resource was created. The Location header usually points to it.
202AcceptedThe request was accepted for processing, but processing is not finished.
203Non-Authoritative InformationThe response came from a transforming proxy and is not the origin's exact payload.
204No ContentSuccess with no response body, common for PUT and DELETE.
205Reset ContentThe client should reset the document view that sent the request.
206Partial ContentA range request was fulfilled and the body contains only the requested bytes.
207Multi-StatusWebDAV: the body contains several independent status codes.
208Already ReportedWebDAV: members of a binding were already listed in an earlier response.
226IM UsedThe server applied delta encoding to the response.
300Multiple ChoicesSeveral representations are available and the client should choose one.
301Moved PermanentlyThe resource moved permanently. Clients should update bookmarks and cached links.
302FoundA temporary redirect. Many clients change the method to GET on the second request.
303See OtherThe result can be fetched with a GET request at the URI in the Location header.
304Not ModifiedThe cached copy is still valid, so the client should reuse it.
305Use ProxyDeprecated: the client must use the proxy given in Location.
307Temporary RedirectA temporary redirect that preserves the original method and body.
308Permanent RedirectA permanent redirect that preserves the original method and body.
400Bad RequestThe server cannot process the request because the syntax or parameters are invalid.
401UnauthorizedAuthentication is required or the supplied credentials are invalid.
402Payment RequiredReserved for future use; some APIs return it when an account is out of credit.
403ForbiddenThe server understood the request but refuses to authorize it.
404Not FoundNo resource matches the request URI, or the server hides whether one exists.
405Method Not AllowedThe resource exists but does not support the request method.
406Not AcceptableThe server cannot produce a response matching the client's Accept headers.
407Proxy Authentication RequiredThe client must authenticate with the proxy first.
408Request TimeoutThe client did not finish sending the request in the time the server allowed.
409ConflictThe request conflicts with the current state of the resource, such as a concurrent edit.
410GoneThe resource existed but has been permanently removed and will not return.
411Length RequiredThe request must include a Content-Length header.
412Precondition FailedA conditional header such as If-Match evaluated to false.
413Content Too LargeThe request body is larger than the server is willing to accept.
414URI Too LongThe request target is longer than the server can handle.
415Unsupported Media TypeThe body format is not supported by the resource.
416Range Not SatisfiableThe requested byte range cannot be served, often past the end of the file.
417Expectation FailedThe server cannot meet the expectation in the Expect header.
418I'm a teapotA joke status code from RFC 2324. Some sites use it to reject bots or unwanted requests.
421Misdirected RequestThe server cannot answer for the authority in the request's URI.
422Unprocessable ContentThe request is syntactically valid but cannot be processed because of semantic errors.
423LockedWebDAV: the resource is locked by another user or process.
424Failed DependencyThe request failed because an earlier request in the same batch failed.
425Too EarlyThe server is not willing to risk a replay attack; retry later.
426Upgrade RequiredThe client must switch to a different protocol before the server will proceed.
428Precondition RequiredThe server requires the request to be conditional, usually to prevent lost updates.
429Too Many RequestsThe client exceeded a rate limit and should retry after the period in Retry-After.
431Request Header Fields Too LargeThe header block is larger than the server allows.
451Unavailable For Legal ReasonsThe resource is blocked for legal or regulatory reasons.
500Internal Server ErrorThe server hit an unexpected condition and could not complete the request.
501Not ImplementedThe server does not support the request method or the functionality required.
502Bad GatewayA gateway or proxy received an invalid response from an upstream server.
503Service UnavailableThe server is overloaded or under maintenance and cannot handle the request right now.
504Gateway TimeoutA gateway or proxy did not receive a response from the upstream server in time.
505HTTP Version Not SupportedThe server does not support the HTTP version used in the request.
506Variant Also NegotiatesContent negotiation is misconfigured and the chosen variant refers back to itself.
507Insufficient StorageWebDAV: the server cannot store the representation because it is out of space.
508Loop DetectedWebDAV: the server detected an infinite loop while processing the request.
510Not ExtendedThe server needs further extensions to the request before it can fulfill it.
511Network Authentication RequiredThe client must authenticate with the network, as captive portals do.

Status code classes

Status codes that are easy to confuse

401 vs 403: authentication or authorization?

401 means the request lacks valid authentication credentials, so the client should authenticate and retry. 403 means the server knows who the client is and still refuses, either because the account lacks permission or because the resource is deliberately hidden. A 401 usually comes with a WWW-Authenticate header; a 403 does not.

301, 302, 307 and 308: which redirect preserves the method?

301 and 302 are the old redirects, and many clients change a POST into a GET when following them. 307 and 308 were defined to keep the original method and body. Use 308 when the move is permanent and 307 when it is temporary; only 301 and 308 tell caches and search engines that the new URL is the canonical one.

502 vs 503 vs 504: which server failed?

502 means a proxy or load balancer received an invalid response from an upstream server. 503 means the server itself is overloaded or in maintenance and is refusing work. 504 means the proxy waited for an upstream and gave up. The distinction tells you whether to look at the application, the upstream pool or a timeout budget.

400 vs 422: what is the difference?

400 means the request could not be parsed or was structurally invalid, such as malformed JSON. 422 means the request parsed correctly but failed validation, for example a field that must be positive received a negative number. Many JSON APIs return 400 for both, so check the response body for details.

429 and Retry-After

429 means the client exceeded a rate limit. A well-behaved server includes a Retry-After header giving the number of seconds or an HTTP date before the next attempt. Clients should honour it instead of retrying immediately, which only extends the limit window.

Non-standard and vendor codes

Some servers return codes outside the standard set, such as Cloudflare's 520-526 range or Microsoft IIS codes. Those are not part of the HTTP specification and mean whatever that vendor documents. When you see an unfamiliar code in the 5xx range, identify the proxy or CDN in front of the application before assuming the origin is at fault.

Definitions follow RFC 9110 and the WebDAV specifications. Vendor-specific codes are not included.

More browser-based tools that pair with this page. Everything runs locally with no signup.

Last reviewed 2026-10-31 ยท Back to all ports