Search and jump to any tool. Type to filter; use arrow keys to move and Enter to select.
A searchable reference of 63 HTTP status codes across the 1xx to 5xx classes.
A searchable reference of 63 HTTP status codes across the 1xx to 5xx classes. Each entry gives the official name, what it means, when to return it and the RFC section that defines it. Filter by class, search by number or keyword, and hide the single unofficial code if you want only standardized ones.
Good to know. This is a reference only and sends no requests. The Spec column points to RFC 9110 for core semantics and to the specific document for extensions, such as RFC 6585 for 429.
| Code | Name | Meaning | When to use it | Spec | Copy |
|---|---|---|---|---|---|
| 100 | Continue | The initial part of the request was received and the client should continue sending the body. | Sent automatically by servers in response to an `Expect: 100-continue` header, letting a client avoid uploading a large body that would be rejected. | RFC 9110 §15.2.1 | |
| 101 | Switching Protocols | The server is switching to the protocol the client requested in the Upgrade header. | The WebSocket handshake response. Also used when upgrading from HTTP/1.1 to HTTP/2 over cleartext. | RFC 9110 §15.2.2 | |
| 102 | Processing | The server has accepted the request but has not yet completed it (WebDAV). | Long-running WebDAV operations, to stop the client timing out. Largely superseded by 103. | RFC 2518 §10.1 | |
| 103 | Early Hints | Preliminary response carrying Link headers so the client can start preloading assets. | Send before an expensive render to let the browser preconnect or preload CSS, fonts and scripts. | RFC 8297 | |
| 200 | OK | The request succeeded and the response carries the result. | The default success response for GET, PUT, PATCH and POST requests that return a representation. | RFC 9110 §15.3.1 | |
| 201 | Created | The request succeeded and one or more resources were created. | Successful POST (or PUT) that creates a resource. Include a `Location` header pointing at the new resource. | RFC 9110 §15.3.2 | |
| 202 | Accepted | The request was accepted for processing, but processing has not completed. | Asynchronous work — queued jobs, batch imports. Return a way to poll for the eventual outcome. | RFC 9110 §15.3.3 | |
| 203 | Non-Authoritative Information | The request succeeded but the payload was modified by a transforming proxy. | Rarely set by applications; emitted by intermediaries that rewrite the origin's response. | RFC 9110 §15.3.4 | |
| 204 | No Content | The request succeeded and there is no body to return. | DELETE that succeeded, or a PUT/PATCH where the client already knows the new state. Must not include a body. | RFC 9110 §15.3.5 | |
| 205 | Reset Content | The request succeeded and the client should reset the document view that sent it. | Classic form submissions where the form should be cleared after a successful post. | RFC 9110 §15.3.6 | |
| 206 | Partial Content | The server is returning the byte range the client asked for. | Responses to a `Range` request — resumable downloads and video seeking. | RFC 9110 §15.3.7 | |
| 207 | Multi-Status | The body is an XML document containing separate status codes for multiple sub-operations (WebDAV). | WebDAV batch operations where each member has its own outcome. | RFC 4918 §11.1 | |
| 208 | Already Reported | Members of a WebDAV binding were already enumerated earlier in the response. | Inside a 207 Multi-Status body, to avoid repeating subtrees. | RFC 5842 §7.1 | |
| 226 | IM Used | The server fulfilled the request and the response is the result of instance manipulations. | Delta encoding — very rare in practice. | RFC 3229 §10.4.1 | |
| 300 | Multiple Choices | The request has more than one possible response. | Rare. Offer a list of representations when the server cannot pick one via content negotiation. | RFC 9110 §15.4.1 | |
| 301 | Moved Permanently | The resource has permanently moved to the URL in `Location`. | Permanent URL changes and canonical host/protocol redirects. Cached aggressively — be sure before shipping one. | RFC 9110 §15.4.2 | |
| 302 | Found | The resource is temporarily at a different URL. | Temporary redirects. Note that clients historically rewrite POST to GET — use 307 when the method must be preserved. | RFC 9110 §15.4.3 | |
| 303 | See Other | The result of the request is at another URL and should be fetched with GET. | The POST/redirect/GET pattern — redirect to a confirmation page after a form submission. | RFC 9110 §15.4.4 | |
| 304 | Not Modified | The cached copy is still fresh, so no body is sent. | Response to a conditional GET whose `If-None-Match` / `If-Modified-Since` still matches. | RFC 9110 §15.4.5 | |
| 305 | Use Proxy | The resource must be accessed through the specified proxy. | Deprecated for security reasons — do not use. | RFC 9110 §15.4.6 | |
| 307 | Temporary Redirect | Temporary redirect that preserves the original method and body. | A temporary move where a POST must stay a POST. The safe modern alternative to 302. | RFC 9110 §15.4.8 | |
| 308 | Permanent Redirect | Permanent redirect that preserves the original method and body. | Permanent moves for APIs where method rewriting would break clients. The modern alternative to 301. | RFC 9110 §15.4.9 | |
| 400 | Bad Request | The server cannot process the request because of a client-side error such as malformed syntax. | Unparseable JSON, missing required fields, invalid query parameters. The general-purpose client error. | RFC 9110 §15.5.1 | |
| 401 | Unauthorized | The request lacks valid authentication credentials. Really means 'unauthenticated'. | No token, an expired token, or bad credentials. Include a `WWW-Authenticate` header. | RFC 9110 §15.5.2 | |
| 402 | Payment Required | Reserved for future use; in practice a billing signal. | Some APIs use it for expired subscriptions or exhausted credits. Non-standard semantics — document it. | RFC 9110 §15.5.3 | |
| 403 | Forbidden | The server understood the request but refuses to authorise it. Re-authenticating will not help. | The caller is authenticated but lacks permission. Consider 404 instead when even the existence is secret. | RFC 9110 §15.5.4 | |
| 404 | Not Found | The server has no representation for the target resource. | Unknown routes and missing records. Also a deliberate way to hide the existence of a protected resource. | RFC 9110 §15.5.5 | |
| 405 | Method Not Allowed | The method is known but not supported for this resource. | A DELETE on a read-only collection. Must include an `Allow` header listing supported methods. | RFC 9110 §15.5.6 | |
| 406 | Not Acceptable | No representation matches the client's `Accept` headers. | Content negotiation failed — the client demanded XML and you only serve JSON. | RFC 9110 §15.5.7 | |
| 407 | Proxy Authentication Required | The client must authenticate with the proxy first. | Emitted by proxies, not origin applications. | RFC 9110 §15.5.8 | |
| 408 | Request Timeout | The client did not produce a request in the time the server was willing to wait. | An idle or stalled connection. Servers usually send this before closing the socket. | RFC 9110 §15.5.9 | |
| 409 | Conflict | The request conflicts with the current state of the resource. | Duplicate unique values, edit conflicts, and version mismatches on optimistic concurrency. | RFC 9110 §15.5.10 | |
| 410 | Gone | The resource was deliberately removed and will not come back. | Retired endpoints and purged content, when you want crawlers to drop the URL permanently. | RFC 9110 §15.5.11 | |
| 411 | Length Required | The server refuses the request without a `Content-Length` header. | Uploads where the server must know the size up front. | RFC 9110 §15.5.12 | |
| 412 | Precondition Failed | A conditional header on the request evaluated to false. | Optimistic locking — the client's `If-Match` ETag no longer matches the stored resource. | RFC 9110 §15.5.13 | |
| 413 | Content Too Large | The request body is larger than the server will process. | Upload size limits. Send `Retry-After` if the limit is temporary. Formerly 'Payload Too Large'. | RFC 9110 §15.5.14 | |
| 414 | URI Too Long | The request target is longer than the server will interpret. | Usually a sign a GET with a huge query string should have been a POST. | RFC 9110 §15.5.15 | |
| 415 | Unsupported Media Type | The body's media type is not supported by the resource. | A client sent `text/plain` to an endpoint that only accepts `application/json`. | RFC 9110 §15.5.16 | |
| 416 | Range Not Satisfiable | The requested byte range lies outside the resource. | A `Range` request asking past the end of the file. Include a `Content-Range` header with the real size. | RFC 9110 §15.5.17 | |
| 417 | Expectation Failed | The expectation in the `Expect` header cannot be met. | Rare — a proxy that cannot honour `Expect: 100-continue`. | RFC 9110 §15.5.18 | |
| 418 | I'm a Teapot | The server refuses to brew coffee because it is, permanently, a teapot. | An April Fools' joke code from RFC 2324. Some services use it as a playful bot-rejection response. | RFC 2324 §2.3.2 | |
| 421 | Misdirected Request | The request was routed to a server that cannot produce a response for this authority. | HTTP/2 connection coalescing sent a request to the wrong origin — tells the client to open a new connection. | RFC 9110 §15.5.20 | |
| 422 | Unprocessable Content | The syntax is valid but the content is semantically wrong. | Validation failures — well-formed JSON where an email is invalid or a date is in the past. | RFC 9110 §15.5.21 | |
| 423 | Locked | The resource is locked (WebDAV). | WebDAV locking, or application-level record locks. | RFC 4918 §11.3 | |
| 424 | Failed Dependency | The request failed because a previous request it depended on failed. | WebDAV multi-step operations where an earlier step errored. | RFC 4918 §11.4 | |
| 425 | Too Early | The server will not risk processing a request that may be replayed. | TLS 1.3 early data (0-RTT) on a non-idempotent request. | RFC 8470 §5.2 | |
| 426 | Upgrade Required | The client must switch to a different protocol. | Forcing TLS or a newer protocol version. Include an `Upgrade` header. | RFC 9110 §15.5.22 | |
| 428 | Precondition Required | The server requires the request to be conditional. | Force clients to send `If-Match` so concurrent updates cannot silently overwrite each other. | RFC 6585 §3 | |
| 429 | Too Many Requests | The client sent too many requests in a given time window. | Rate limiting. Always include `Retry-After` so clients know when to try again. | RFC 6585 §4 | |
| 431 | Request Header Fields Too Large | The headers are collectively or individually too large. | Usually oversized cookies. Ask the client to clear them. | RFC 6585 §5 | |
| 451 | Unavailable For Legal Reasons | The resource is blocked as a result of a legal demand. | Geo-blocking for regulatory reasons, court-ordered takedowns, GDPR restrictions. | RFC 7725 | |
| 499 | Client Closed RequestUnofficial | The client disconnected before the server could respond. | An nginx-specific code that shows up in access logs when a user cancels a request. | nginx (non-standard) | |
| 500 | Internal Server Error | The server hit an unexpected condition and cannot be more specific. | Unhandled exceptions. Log the detail server-side; never leak stack traces to the client. | RFC 9110 §15.6.1 | |
| 501 | Not Implemented | The server does not support the functionality required. | An unrecognised request method, or a documented endpoint that is not built yet. | RFC 9110 §15.6.2 | |
| 502 | Bad Gateway | A gateway or proxy received an invalid response from an upstream server. | Emitted by load balancers and reverse proxies when the app server crashes or returns garbage. | RFC 9110 §15.6.3 | |
| 503 | Service Unavailable | The server is temporarily unable to handle the request, usually overload or maintenance. | Planned maintenance windows and shed load. Include `Retry-After`; the condition is temporary by definition. | RFC 9110 §15.6.4 | |
| 504 | Gateway Timeout | A gateway did not receive a timely response from the upstream server. | Upstream request exceeded the proxy's timeout — a slow database or a hung third-party API. | RFC 9110 §15.6.5 | |
| 505 | HTTP Version Not Supported | The HTTP major version used in the request is not supported. | Rare — a client speaking a protocol version you have disabled. | RFC 9110 §15.6.6 | |
| 506 | Variant Also Negotiates | Transparent content negotiation produced a circular reference. | A server misconfiguration in content negotiation. | RFC 2295 §8.1 | |
| 507 | Insufficient Storage | The server cannot store the representation needed to complete the request. | Disk or quota exhaustion on upload endpoints (WebDAV). | RFC 4918 §11.5 | |
| 508 | Loop Detected | The server detected an infinite loop while processing. | WebDAV `Depth: infinity` traversal that cycles. | RFC 5842 §7.2 | |
| 510 | Not Extended | Further extensions to the request are required to fulfil it. | Effectively obsolete — the extension framework saw no adoption. | RFC 2774 §7 | |
| 511 | Network Authentication Required | The client must authenticate to gain network access. | Captive portals on hotel and airport Wi-Fi, intercepting traffic until the user signs in. | RFC 6585 §6 |