Initial part of the request received; client should continue. Typically a response to an Expect: 100-continue header.
Example — Large upload pre-flight check before sending the body.
RFC 9110 §15.2.1
Search all 61 HTTP status codes by number, name, or use case — from 100 Continue to 511 Network Authentication Required. Filter by class, read a plain-English meaning and a real use case for each, and cite the exact RFC 9110 section. Free, 100% in-browser.
Showing 61 of 61 codes
Request received, continuing process.
Initial part of the request received; client should continue. Typically a response to an Expect: 100-continue header.
Example — Large upload pre-flight check before sending the body.
RFC 9110 §15.2.1
Server is switching protocols as requested via Upgrade header.
Example — HTTP/1.1 → WebSocket upgrade handshake.
RFC 9110 §15.2.2
Server is processing the request but no response yet available. (WebDAV)
Example — Long-running WebDAV operations that exceed default timeouts.
RFC 2518
Server is preparing the final response; client may begin processing Link headers (e.g. preload).
Example — Send preload hints before the full response is ready, improving LCP.
RFC 8297
Action successfully received, understood, and accepted.
Standard success response with a body.
Example — GET that returns resource data; POST that completed synchronously.
RFC 9110 §15.3.1
Resource successfully created; typically returns a Location header pointing to the new resource.
Example — POST /users creating a new user; PUT creating a resource at the supplied URL.
RFC 9110 §15.3.2
Request accepted for processing but not yet completed; status check is the client's responsibility.
Example — Async job queued — return a job ID, expose a separate GET /jobs/:id endpoint.
RFC 9110 §15.3.3
Body is from a transforming proxy, not the origin server.
Example — Through a transparent proxy that modified the payload.
RFC 9110 §15.3.4
Successful response with no body. Headers may still convey meta-information.
Example — DELETE that completed successfully; PUT update with no body to return.
RFC 9110 §15.3.5
Tells the client to reset the document view (e.g. clear a form).
Example — After form submission, reset the input fields client-side.
RFC 9110 §15.3.6
Successful range request — returning only the requested byte range.
Example — Video streaming; resume of an interrupted download via Range header.
RFC 9110 §15.3.7
Body contains multiple status codes for batched WebDAV operations.
Example — WebDAV PROPFIND, COPY, MOVE responses with per-resource statuses.
RFC 4918
In a Multi-Status response, the member was already reported elsewhere. (WebDAV)
Example — WebDAV bindings — avoid reporting duplicate state.
RFC 5842
Server fulfilled the request using one or more instance manipulations.
Example — Delta encoding for cache-aware updates (rare in practice).
RFC 3229
Further action required to complete the request.
Multiple response options exist; the client picks one (rarely used).
Example — Content-negotiation fallback when no preferred match is found.
RFC 9110 §15.4.1
Resource permanently moved to the URL in the Location header. SEO signal: pass link equity.
Example — Site migration; URL restructuring. Cached and bookmarked aggressively by browsers.
RFC 9110 §15.4.2
Resource temporarily at the URL in Location. Historically ambiguous — prefer 303 or 307.
Example — Legacy redirect after form submission (modern code should use 303 or 307).
RFC 9110 §15.4.3
Forces a GET request on the redirect target, regardless of the original method.
Example — POST/Redirect/GET pattern — after a successful POST, redirect to a confirmation page.
RFC 9110 §15.4.4
Conditional GET succeeded but the resource has not changed. Body is empty; reuse cached version.
Example — Browser cache validation via If-None-Match (ETag) or If-Modified-Since.
RFC 9110 §15.4.5
Same as 302 but the HTTP method MUST NOT change. Use instead of 302 for non-GET methods.
Example — A/B testing redirect on a POST endpoint; preserves request method and body.
RFC 9110 §15.4.8
Same as 301 but the HTTP method MUST NOT change. Modern replacement for 301 with method preservation.
Example — Permanent move of an API endpoint that accepts POST/PUT; clients keep their method.
RFC 7538
Request contains bad syntax or cannot be fulfilled.
Request cannot be processed due to client error (malformed syntax, invalid framing, etc.).
Example — Malformed JSON body; missing required query parameter.
RFC 9110 §15.5.1
Authentication required and has either not been provided or has failed. Misnamed — should be "Unauthenticated".
Example — Missing or expired Bearer token; invalid API key.
RFC 9110 §15.5.2
Reserved for future use; sometimes adopted by APIs for quota or billing-related rejections.
Example — API exceeded paid-tier quota; account in arrears.
RFC 9110 §15.5.3
Server understood the request but refuses to authorize it. Authentication is valid but insufficient.
Example — User authenticated but lacks permission for this resource.
RFC 9110 §15.5.4
Server cannot find the requested resource. May also be used to obscure existence (vs 403).
Example — Mistyped URL; deleted resource; resource never existed.
RFC 9110 §15.5.5
Method known but not supported on this resource. MUST include Allow header listing valid methods.
Example — DELETE on a read-only endpoint; POST on a GET-only resource.
RFC 9110 §15.5.6
No representation matches the client's Accept-* headers.
Example — Client demands Accept: application/xml but server only emits JSON.
RFC 9110 §15.5.7
Like 401 but the proxy requires authentication.
Example — Corporate proxy demanding sign-in before forwarding the request.
RFC 9110 §15.5.8
Server timed out waiting for the request to complete.
Example — Idle keep-alive connection closed by server after timeout window.
RFC 9110 §15.5.9
Request conflicts with the current state of the target resource (concurrent modification).
Example — PUT with stale If-Match ETag; create-if-not-exists where the resource already exists.
RFC 9110 §15.5.10
Resource intentionally removed and will not return. Stronger SEO signal than 404 for de-indexing.
Example — Deprecated API endpoint that has been removed; canceled user account.
RFC 9110 §15.5.11
Server refuses the request without a Content-Length header.
Example — POST without Content-Length where the server cannot use chunked encoding.
RFC 9110 §15.5.12
One or more conditions in the request headers (If-Match, If-Unmodified-Since) failed.
Example — Optimistic concurrency control — request rejected because the resource changed.
RFC 9110 §15.5.13
Request body exceeds the server's configured limit. (Formerly "Payload Too Large".)
Example — Upload over the 100 MB body cap; oversized JSON payload.
RFC 9110 §15.5.14
Request URI exceeds the server's length limit.
Example — GET with too many query parameters (move to POST with a body).
RFC 9110 §15.5.15
Request body media type is not supported by the resource.
Example — Content-Type: text/xml on a JSON-only API.
RFC 9110 §15.5.16
Range header specifies a range outside the resource size.
Example — Byte-range request that starts beyond end-of-file.
RFC 9110 §15.5.17
Server cannot satisfy the Expect request header.
Example — Client sent Expect: 100-continue but server refuses.
RFC 9110 §15.5.18
HTCPCP joke status — should never be used in production but persists in many frameworks.
Example — Honeypots; humorously rejecting brewing-related requests.
RFC 2324 (April 1)
Request directed at a server unable or unwilling to produce a response.
Example — HTTP/2 connection reuse to a server that does not serve this hostname.
RFC 9110 §15.5.20
Body well-formed but semantically invalid. (Formerly "Unprocessable Entity".)
Example — JSON parses fine but business validation fails (email format, required field combinations).
RFC 9110 §15.5.21
Resource is locked by another client. (WebDAV)
Example — WebDAV LOCK conflict; collaborative editing exclusive lock.
RFC 4918
Request failed because it depended on a prior request that failed. (WebDAV)
Example — WebDAV multi-step operation where the prerequisite step returned an error.
RFC 4918
Server unwilling to process early-data request (TLS 1.3 0-RTT).
Example — Replay protection for non-idempotent requests sent in 0-RTT data.
RFC 8470
Server refuses to use the current protocol; client must upgrade.
Example — Server-side deprecation of HTTP/1.0; mandate TLS upgrade.
RFC 9110 §15.5.22
Origin server requires the request to be conditional (prevent lost-update).
Example — API that mandates If-Match for all PUT requests to enforce optimistic concurrency.
RFC 6585
User has sent too many requests in a given amount of time (rate limiting). Often includes Retry-After header.
Example — Rate-limit exceeded; bot detection; quota enforcement.
RFC 6585
Server refuses because the combined header fields are too large.
Example — Cookie bomb attack; over-stuffed Authorization header.
RFC 6585
Resource unavailable due to legal demands (court order, censorship).
Example — GDPR right-to-erasure compliance; geo-blocked content; takedown notice.
RFC 7725
Server failed to fulfill an apparently valid request.
Generic server-side error; no more specific message available. Catch-all for unexpected failures.
Example — Unhandled exception; bug in handler code; database connection lost.
RFC 9110 §15.6.1
Server does not support the functionality required to fulfill the request.
Example — PATCH method requested on a server that does not implement it.
RFC 9110 §15.6.2
Server acting as gateway received an invalid response from the upstream.
Example — Load balancer cannot connect to the backend; upstream returned malformed response.
RFC 9110 §15.6.3
Server temporarily unavailable due to maintenance or overload. May include Retry-After.
Example — Planned downtime; circuit-breaker tripped; capacity protection.
RFC 9110 §15.6.4
Gateway did not receive a timely response from the upstream server.
Example — Slow database query exceeded reverse-proxy timeout; serverless cold start beyond limit.
RFC 9110 §15.6.5
Server does not support the HTTP protocol version used in the request.
Example — Client trying HTTP/0.9 on a modern server.
RFC 9110 §15.6.6
Transparent content negotiation loop — chosen variant itself negotiates.
Example — Misconfigured negotiation rules creating a referential loop.
RFC 2295
Server cannot store the representation needed to complete the request. (WebDAV)
Example — WebDAV PUT to a quota-exhausted directory.
RFC 4918
Server detected an infinite loop while processing a request with Depth: infinity. (WebDAV)
Example — WebDAV PROPFIND on a tree with cyclic bindings.
RFC 5842
Further extensions to the request are required for the server to fulfill it.
Example — HTTP Extension Framework — practically deprecated.
RFC 2774
Client needs to authenticate to gain network access (captive portal).
Example — Public Wi-Fi captive-portal redirect detection.
RFC 6585
Type a code (e.g. "422") or part of a name ("unauthorized", "rate limit") to filter the list in real time as you type — no submit, no reload.
One-click filters for 1xx (Informational), 2xx (Success), 3xx (Redirection), 4xx (Client Error), and 5xx (Server Error). Combine with search for narrow results.
Each entry cites the canonical RFC and section. RFC 9110 is the 2022 consolidated HTTP semantics spec; legacy and extension codes cite their original sources.
The data is bundled with the page — no API calls, nothing leaves your device. Works offline once loaded.
An HTTP status code is a three-digit number a server returns to say what happened to a request — success, redirect, client error, or server error. This reference lists all 61 codes, from 100 Continue to 511 Network Authentication Required, grouped into five classes. Type a number, name, or use case to filter instantly, and read each code's plain-English meaning plus its exact RFC 9110 section. It runs 100% in your browser, free, with no API lookups.
404), a name (Unauthorized), or even a use case word (rate limit) into the search box — the list filters as you type.RFC 9110 §15.5.21) straight into your API design doc or code review.Every HTTP response starts with a status line containing a numeric code and a reason phrase, such as 200 OK or 404 Not Found. The first digit defines the class, which tells a client how to react before it even reads the body. The canonical definitions live in RFC 9110 (HTTP Semantics, 2022), the consolidated spec that replaced the older RFC 7231 family. RFC 9110 puts it plainly:
"The status code of a response is a three-digit integer code that describes the result of the request and the semantics of the response… The first digit of the status code defines the class of response."— RFC 9110, §15
This tool bundles RFC 9110 codes alongside widely-deployed extensions cited to their own RFCs — WebDAV (RFC 4918), rate limiting (RFC 6585, the source of 429), early hints (RFC 8297, 103), permanent method-preserving redirects (RFC 7538, 308), and legal blocks (RFC 7725, 451). A client only needs the first digit to route behavior: follow a 3xx automatically, fix the request on a 4xx, or retry a transient 5xx.
The counts below reflect exactly what this reference bundles — 61 codes in total.
| Class | Meaning | Codes here | How a client reacts |
|---|---|---|---|
| 1xx | Informational | 4 | Provisional — wait for the final response (100, 101, 103). |
| 2xx | Success | 10 | Request received, understood, accepted (200, 201, 204). |
| 3xx | Redirection | 7 | Follow the Location header, often automatically (301, 304, 308). |
| 4xx | Client Error | 29 | Fix the request — bad input or no permission (400, 401, 404, 429). |
| 5xx | Server Error | 11 | Retry a transient failure; the request itself was valid (500, 502, 503). |
Create a resource
POST /users succeeds → return 201 Created with a Location header pointing at the new user, not a generic 200 OK.
Validation failure
JSON parsed fine but the email field is empty → return 422 Unprocessable Content. Reserve 400 Bad Request for body the server could not parse at all.
Rate limit hit
Client exceeded its quota → return 429 Too Many Requests with a Retry-After: 60 header so the client backs off for 60 seconds instead of retrying immediately.
Edge case · 301 vs 302 and SEO
For a permanent URL move, use 301, not 302. Contrary to the common myth, Google's John Mueller has confirmed that 302 redirects do pass PageRank — but a 302 signals temporary, so Google keeps the old URL as canonical until you switch to a 301 (or leave the 302 long enough that Google reinterprets it as permanent). Browsers also cache 301s permanently and 302s not. If the move is permanent and the endpoint accepts POST/PUT, use 308 so the method is preserved per RFC 9110.
| Pair | Why it matters |
|---|---|
| 301 vs 308 | 301 may allow user-agents to change the method to GET (legacy); 308 preserves the original method. Use 308 for modern permanent moves of non-GET endpoints. |
| 302 vs 303 vs 307 | 302 is ambiguous (legacy). 303 forces GET on the redirect. 307 preserves the method. Modern code should pick 303 (POST-redirect-GET) or 307 (preserve everything), never plain 302. |
| 401 vs 403 | 401 = not authenticated (no/bad credentials). 403 = authenticated but not authorized for this specific resource. Get the distinction wrong and your API consumers will spend hours debugging the wrong layer. |
| 404 vs 410 | 404 = "I don't know about this" (may exist later). 410 = "It existed and is gone for good" (de-index in search engines). Use 410 for explicit permanent removals. |
| 422 vs 400 | 400 = malformed syntax (couldn't parse). 422 = parsed fine but semantically invalid (e.g. JSON OK, but email field is empty). 422 is more informative for API consumers. |
| 500 vs 503 | 500 = unexpected internal failure (a bug). 503 = expected, temporary unavailability (overload, maintenance). 503 with Retry-After lets clients back off correctly. |
This reference holds exactly 61 codes — 4 in 1xx, 10 in 2xx, 7 in 3xx, 29 in 4xx, and 11 in 5xx. The 4xx class is by far the largest because client mistakes have the most distinct, recoverable shapes. The search box does not just match the code number and name — it also scans each entry's description and use case text. So typing rate limit surfaces 429, websocket surfaces 101, and retry-after surfaces both 429 and 503, even though none of those words appear in the code name.
One honest limit: this is a static catalogue, not a live HTTP client. It does not fetch a URL or report the status a given server returns — it explains what each code means so you can choose or interpret the right one. Codes the spec reserves but never assigned (e.g. there is no standard 418 outside an April Fools' RFC) are flagged in their descriptions so you do not ship a joke code to production.
Your searches never leave your device. All 61 codes are bundled into the page, so filtering happens locally in JavaScript with no API calls — no uploads, nothing leaves your device, and it works offline once loaded. I tested the search against code numbers (404, 422), partial names (unauth, teapot), and use-case phrases (rate limit, websocket, retry-after), plus every class filter, and the list stays instant on each keystroke.
Yes. The reference is 100% free with no signup and no usage cap. All 61 status codes are bundled into the page, so search and filtering run entirely in your browser with JavaScript — nothing is sent to a server and the tool works offline once the page loads.
401 Unauthorized means the request lacks valid authentication — no credentials, or an expired or invalid token. The fix is to authenticate again (log in, refresh the token, supply the API key). 403 Forbidden means authentication succeeded but the authenticated user lacks permission for this specific resource; the fix is a role or policy change, not a re-login. The name "401 Unauthorized" is misleading — per RFC 9110 it really means "unauthenticated", but the legacy name was kept for compatibility.
Return 404 Not Found when the resource does not exist at this URL — it may never have existed or may exist again later. Return 410 Gone when the resource existed and was permanently removed; search engines treat 410 as a stronger de-indexing signal than 404. Return 200 OK with an empty array for collection endpoints where "no results" is a valid outcome, not an error — a successful query that found nothing is not a 404. The wrong choice breaks pagination, SEO, and client error handling.
Return 422 when the server parsed the request body fine — valid JSON, valid XML — but the content failed semantic validation, such as a missing required field, a malformed email, or two fields that violate a business rule. Return 400 Bad Request when the body itself is malformed and could not be parsed at all. The distinction tells API consumers what to fix: 400 means "fix your encoding"; 422 means "your data is structured correctly but wrong". 422 was formerly named "Unprocessable Entity" in WebDAV and renamed in RFC 9110.
Not as much as the myth claims, but for a permanent move 301 is correct. Google's John Mueller has confirmed 302 redirects do pass PageRank, so the "302 kills link equity" belief is wrong. The real difference: a 301 signals a permanent move and is cached permanently by browsers, while a 302 signals temporary and keeps the original URL as canonical. Leave a 302 in place long enough and Google eventually treats it as a 301. For a genuine permanent move, use 301 (or 308 to preserve the method) so the new URL is indexed immediately.
301 Moved Permanently allows clients to downgrade a POST to GET; 308 Permanent Redirect is the same permanent move but MUST NOT change the method (use it for POST/PUT API endpoints). For temporary redirects: 302 Found is historically ambiguous and best avoided, 303 See Other forces a GET on the target (the POST-redirect-GET pattern after a form submit), and 307 Temporary Redirect preserves the original method and body. Rule of thumb: 308 for permanent method-preserving, 303 for POST-redirect-GET, 307 for temporary method-preserving.
Return 429 when a client exceeds a request quota — a per-second burst, hourly cap, or daily limit. Always include a Retry-After header (in seconds, like Retry-After: 60, or as an HTTP date) so clients back off correctly. Many APIs also send X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset on every response so clients can throttle preemptively. 429 should be transient; if the block is permanent (an account stuck on a free tier), 403 with an explanatory body fits better.
500 Internal Server Error is an unexpected failure — an unhandled exception, a bug, or a lost database connection. 503 Service Unavailable is an expected, temporary condition: planned maintenance, capacity overload, or a tripped circuit breaker. Always attach a Retry-After header to a 503 so clients know when to retry; without it they have no signal to back off and will hammer the server during the incident. Get the choice right and clients retry intelligently instead of amplifying an outage.
Three are common. 100 Continue lets a client check whether a server will accept a large upload before sending the body (send Expect: 100-continue and wait). 101 Switching Protocols is the response to a WebSocket upgrade handshake. 103 Early Hints (RFC 8297) is the modern star — a server sends 103 with Link: preload headers before the final 200 so the browser fetches CSS and JS while the backend composes the page, measurably improving LCP. Cloudflare, Chrome, and major frameworks all support 103.
Inspect and pretty-print API response bodies
JWT DecoderDebug the 401 token behind an auth failure
URL EncoderTrim query strings that trigger 414 URI Too Long
Timestamp ConverterParse a Retry-After HTTP-date value
Hash GeneratorBuild ETags and checksums for 304 caching
HMAC GeneratorSign webhook payloads and verify request authenticity
UUID GeneratorMint trace IDs for 500 error responses
Number Base ConverterDecode hex headers and bit flags
Cron Expression BuilderSchedule the maintenance windows behind a 503
Regex TesterMatch routes and validate inputs before a 400
All Developer ToolsBrowse the full Toolk tool hub
Last updated: June 2, 2026 · Runs 100% in your browser — no uploads, nothing leaves your device.
Browse all 89 free, in-browser tools — or tell us what we should build next.