§ 01 / TOOL
HTTP Status Codes.
STATUS READYCODES 69SOURCE RFC 9110 + IANA
> SEARCH
BY CODE OR NAME
STATUS CODES.
69 OF 69- 100InformationalContinueInitial part of request received; client should continue with the body.
- 101InformationalSwitching ProtocolsServer is switching to the protocol the client requested via Upgrade.
- 102InformationalProcessingWebDAV — request is being processed; no response yet.// WebDAV
- 103InformationalEarly HintsPreview of headers (e.g. <link rel=preload>) before the full response.
- 200SuccessOKStandard success.
- 201SuccessCreatedRequest succeeded and a new resource was created.
- 202SuccessAcceptedRequest accepted but not yet acted on (async).
- 203SuccessNon-Authoritative InformationReturned info is from a transforming proxy, not the origin.
- 204SuccessNo ContentSuccess with empty body. Common for DELETE.
- 205SuccessReset ContentTell client to reset the document view (rare).
- 206SuccessPartial ContentRange request succeeded; only part of the resource is in the body.
- 207SuccessMulti-StatusWebDAV — multiple status codes for multiple operations.// WebDAV
- 208SuccessAlready ReportedWebDAV — members already enumerated; not repeated.// WebDAV
- 226SuccessIM UsedDelta encoding — response is the result of one or more instance-manipulations.// RFC 3229
- 300RedirectionMultiple ChoicesMultiple response options; client must choose.
- 301RedirectionMoved PermanentlyResource moved permanently. Update bookmarks.
- 302RedirectionFoundTemporary redirect; method may change to GET historically. Use 307/308 for clarity.
- 303RedirectionSee OtherGet the resource at a different URI, typically with GET.
- 304RedirectionNot ModifiedCached version is still valid; no body returned.
- 305RedirectionUse ProxyDeprecated.// deprecated
- 307RedirectionTemporary RedirectLike 302 but the request method MUST be preserved.
- 308RedirectionPermanent RedirectLike 301 but the request method MUST be preserved.
- 400Client errorBad RequestServer cannot process due to malformed syntax.
- 401Client errorUnauthorizedMissing/invalid authentication. (Despite the name, it’s about auth, not permissions.)
- 402Client errorPayment RequiredReserved for future use; rarely seen in practice.
- 403Client errorForbiddenAuthenticated but not authorized for this resource.
- 404Client errorNot FoundResource doesn’t exist (or server doesn’t admit it does).
- 405Client errorMethod Not AllowedHTTP method (GET/POST/etc.) not supported on this resource.
- 406Client errorNot AcceptableServer can’t produce a response matching the Accept-* headers.
- 407Client errorProxy Authentication RequiredClient must authenticate with the proxy.
- 408Client errorRequest TimeoutServer gave up waiting for the request.
- 409Client errorConflictRequest conflicts with current state (e.g. edit conflict, duplicate entry).
- 410Client errorGoneResource permanently removed; no forwarding address.
- 411Client errorLength RequiredServer requires Content-Length header.
- 412Client errorPrecondition FailedA precondition (If-Match, If-None-Match, etc.) failed.
- 413Client errorContent Too LargeRequest body exceeded server’s limit.
- 414Client errorURI Too LongURL exceeded server’s length limit.
- 415Client errorUnsupported Media TypeRequest body in a format the server can’t process.
- 416Client errorRange Not SatisfiableRequested range outside the resource size.
- 417Client errorExpectation FailedServer can’t meet the Expect header requirements.
- 418Client errorI’m a teapotApril Fools’ RFC 2324; some APIs use it for fun.// RFC 2324
- 421Client errorMisdirected RequestRequest sent to a server unable to produce a response (HTTP/2 connection coalescing).
- 422Client errorUnprocessable ContentSyntactically valid but semantically wrong (validation error).
- 423Client errorLockedWebDAV — resource is locked.// WebDAV
- 424Client errorFailed DependencyWebDAV — depended on a request that failed.// WebDAV
- 425Client errorToo EarlyServer unwilling to risk processing a request that might be replayed.
- 426Client errorUpgrade RequiredClient must switch to a different protocol.
- 428Client errorPrecondition RequiredOrigin requires the request to be conditional.
- 429Client errorToo Many RequestsRate limited. Retry-After header tells you when to try again.
- 431Client errorRequest Header Fields Too LargeHeaders exceeded server limit.
- 451Client errorUnavailable For Legal ReasonsCensored / takedown. Named after Fahrenheit 451.
- 500Server errorInternal Server ErrorCatch-all server failure. Logs are your friend.
- 501Server errorNot ImplementedServer doesn’t support the requested method.
- 502Server errorBad GatewayUpstream server returned an invalid response.
- 503Server errorService UnavailableServer temporarily unable to handle request (overloaded, down for maintenance).
- 504Server errorGateway TimeoutUpstream server didn’t respond in time.
- 505Server errorHTTP Version Not SupportedServer doesn’t support the HTTP version in the request.
- 506Server errorVariant Also NegotiatesInternal config error in transparent content negotiation.
- 507Server errorInsufficient StorageWebDAV — server out of space to store the representation.// WebDAV
- 508Server errorLoop DetectedWebDAV — infinite loop detected while processing.// WebDAV
- 510Server errorNot ExtendedFurther extensions required to fulfill the request.// deprecated
- 511Server errorNetwork Authentication RequiredCaptive portal — must authenticate to gain network access.
- 520Server errorWeb Server Returned Unknown ErrorCloudflare — origin returned something Cloudflare couldn’t parse.// Cloudflare
- 521Server errorWeb Server Is DownCloudflare — couldn’t reach the origin.// Cloudflare
- 522Server errorConnection Timed OutCloudflare — TCP handshake to origin timed out.// Cloudflare
- 523Server errorOrigin Is UnreachableCloudflare — DNS or routing failure to origin.// Cloudflare
- 524Server errorA Timeout OccurredCloudflare — origin took too long to respond after TCP connection.// Cloudflare
- 525Server errorSSL Handshake FailedCloudflare — TLS handshake to origin failed.// Cloudflare
- 526Server errorInvalid SSL CertificateCloudflare — origin’s TLS cert failed validation.// Cloudflare
§ 02 / ABOUT
The five classes.
HTTP status codes are three-digit numbers grouped into five classes by the leading digit. The class tells you who’s responsible — informational, success, redirect, client mistake, or server mistake.
// THE CLASSES
- 1xx Informational — Provisional response. Continue, Switching Protocols, Early Hints.
- 2xx Success — Worked. 200 OK, 201 Created, 204 No Content.
- 3xx Redirection — Resource is elsewhere. 301 permanent, 302/307 temporary, 304 cached version OK.
- 4xx Client error — Your request is bad. 400 syntax, 401 auth, 403 forbidden, 404 missing, 429 rate limit.
- 5xx Server error — Our problem. 500 generic crash, 502 upstream broken, 503 overloaded, 504 upstream timeout.
// WHAT TO DO WITH EACH
- 2xx — Process the response. Done.
- 3xx — Follow the Location header. Most HTTP clients do this automatically.
- 4xx — Fix the request. Don’t retry without changes — it’ll fail again.
- 429 — Wait. Honor Retry-After header. Backoff exponentially if the server didn’t specify.
- 5xx — Retry with backoff. Server-side issue, often transient.
§ 03 / FAQ
Status code questions.
What’s the difference between 401 and 403?+
401 Unauthorized means "you didn’t authenticate" — no credentials, expired token, etc. 403 Forbidden means "you authenticated, but you’re not allowed." Confusingly, both are about access — but 401 is identity, 403 is permission.
301 vs 302 vs 307 vs 308 — which redirect should I use?+
301 = permanent, 302 = temporary, 307 = temporary (preserves method), 308 = permanent (preserves method). Modern best practice: use 307/308 instead of 302/301 because they explicitly preserve POST/PUT/DELETE — older 301/302 implementations would silently switch to GET on redirect.
What does 422 actually mean?+
The request was syntactically valid (parsed fine) but failed semantic validation — e.g. JSON body schema violations, missing required fields, value out of range. APIs use it for "your input is well-formed but wrong."
What’s a 5xx I should actually fix vs let alone?+
500/502/503/504 are infrastructure problems — fix or escalate. 501 means a method isn’t implemented (often expected, e.g. HEAD on certain endpoints). Cloudflare 520-526 are origin issues — debug your backend, not Cloudflare.
Is 418 I’m a teapot real?+
It’s an April Fools’ RFC from 1998 (RFC 2324, Hyper Text Coffee Pot Control Protocol). Not in the standard HTTP set, but enough APIs use it as a joke or rate-limit signal that it’s widely supported. Node’s http module recognizes it.
§ 04 / TOOLS
Related calculators.
§ 05 / READING

