100 Continue 1xx Informational
The client should continue sending the request body. Sent in response to an Expect: 100-continue header before the client commits to uploading a large payload.
✕ Cacheable by default✕ Safe to retry✕ Has response body
Common causes Client sent Expect: 100-continue and the server accepted the headersTypical fixes No action — proceed to send the request bodySource: RFC 9110 §15.2.1 101 Switching Protocols 1xx Informational
The server agrees to switch protocols as requested in the Upgrade header — most commonly the HTTP→WebSocket handshake.
✕ Cacheable by default✕ Safe to retry✕ Has response body
Common causes Client sent an Upgrade header (e.g. WebSocket handshake)Typical fixes No action — the connection now speaks the new protocolSource: RFC 9110 §15.2.2 102 Processing 1xx Informational
WebDAV interim response telling the client the server has accepted a long-running request and is still working on it. Deprecated in favour of more reliable mechanisms.
✕ Cacheable by default✕ Safe to retry✕ Has response body
Common causes Long-running WebDAV operation in progressTypical fixes Wait for the final response — this is interim onlySource: RFC 2518 §10.1 103 Early Hints 1xx Informational
An interim response that lets the server send Link headers early so the browser can preconnect or preload resources before the final response is ready.
✕ Cacheable by default✕ Safe to retry✕ Has response body
Common causes Server sends preload/preconnect Link hints ahead of the final responseTypical fixes No action — used to speed up resource loadingSource: RFC 8297 §2 200 OK 2xx Success
The request succeeded. The meaning of the body depends on the method: the representation of the target resource for GET, the result of the action for POST, and so on.
✓ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A normal, successful requestTypical fixes No action — this is the success caseSource: RFC 9110 §15.3.1 201 Created 2xx Success
The request succeeded and one or more new resources were created. The Location header should point at the new resource; the body usually describes it.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A POST or PUT that created a new resourceTypical fixes Return a Location header pointing at the new resourceSource: RFC 9110 §15.3.2 202 Accepted 2xx Success
The request was accepted for processing, but the processing has not completed and may not succeed. Used for asynchronous / queued work.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Work was queued for background processing (e.g. a job, an email send)Typical fixes Give the client a way to poll status (e.g. a status URL in the body)Source: RFC 9110 §15.3.3 203 Non-Authoritative Information 2xx Success
The request succeeded but the enclosed body was modified by a transforming proxy from the origin's 200 response. Status of the original is 200.
✓ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A proxy altered the response (e.g. stripped or rewrote headers/content)Typical fixes Verify which proxy transformed the response if accuracy mattersSource: RFC 9110 §15.3.4 204 No Content 2xx Success
The request succeeded and there is no additional content to send in the body. Commonly returned by a successful PUT or DELETE.
✓ Cacheable by default✕ Safe to retry✕ Has response body
Common causes A successful update or delete with nothing to returnTypical fixes No action — do not send a body with a 204Source: RFC 9110 §15.3.5 205 Reset Content 2xx Success
The request succeeded and the user agent should reset the document that sent the request (e.g. clear a form). A 205 must not include a body.
✕ Cacheable by default✕ Safe to retry✕ Has response body
Common causes A form submission that should clear the form after successTypical fixes No action — instruct the client to reset its viewSource: RFC 9110 §15.3.6 206 Partial Content 2xx Success
The server is delivering only part of the resource in response to a Range request. Used for resumable downloads and media streaming.
✓ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Client sent a Range header (resume download, video seek)Typical fixes No action — ensure Content-Range is set correctlySource: RFC 9110 §15.3.7 207 Multi-Status 2xx Success
WebDAV: the body is an XML document carrying multiple independent status codes for a request that affected several resources.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A WebDAV request that operated on multiple resources at onceTypical fixes Parse the multistatus XML to read each resource's individual statusSource: RFC 4918 §11.1 208 Already Reported 2xx Success
WebDAV: used inside a Multi-Status (207) body to avoid repeatedly enumerating the members of a binding already reported earlier.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A WebDAV collection member already listed in the same 207 responseTypical fixes No action — an optimisation inside multistatus bodiesSource: RFC 5842 §7.1 226 IM Used 2xx Success
The server fulfilled a GET and the response is one or more instance-manipulations (delta encoding) applied to the current instance.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Client requested delta encoding via the A-IM headerTypical fixes No action — rarely used in practiceSource: RFC 3229 §10.4.1 300 Multiple Choices 3xx Redirection
The target has more than one representation and the server cannot pick one for the client. The body may list the alternatives.
✓ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Several content formats/languages exist and no preference was clearTypical fixes Provide a Location for the preferred choice, or list the optionsSource: RFC 9110 §15.4.1 301 Moved Permanently 3xx Redirection
The resource has a new permanent URL given in Location. Clients and search engines should update their links. A client MAY change the method to GET on the redirect.
✓ Cacheable by default✕ Safe to retry✕ Preserves method✓ Has response body
Common causes A page or endpoint was permanently moved or its URL canonicalisedTypical fixes Set Location to the new URL; use 308 instead if POST must be preservedSource: RFC 9110 §15.4.2 302 Found 3xx Redirection
The resource is temporarily at a different URL given in Location. The original URL should keep being used for future requests. A client MAY change the method to GET.
✕ Cacheable by default✕ Safe to retry✕ Preserves method✓ Has response body
Common causes A temporary redirect (A/B test, maintenance page, post-login bounce)Typical fixes Use 307 to preserve the method, or 303 to force a GET after a POSTSource: RFC 9110 §15.4.3 303 See Other 3xx Redirection
Tells the client to GET a different URL (in Location) to see the result of the request. The classic Post/Redirect/Get pattern that stops form resubmission.
✕ Cacheable by default✕ Safe to retry✕ Preserves method✓ Has response body
Common causes After a successful POST you want to send the user to a result pageTypical fixes Set Location to the GET-able result URL (Post/Redirect/Get)Source: RFC 9110 §15.4.4 304 Not Modified 3xx Redirection
Used for conditional GETs: the cached copy is still fresh, so no body is sent. Triggered by If-None-Match / If-Modified-Since.
✕ Cacheable by default✕ Safe to retry✕ Has response body
Common causes The client's cached ETag/Last-Modified still matches the serverTypical fixes No action — the client reuses its cached copySource: RFC 9110 §15.4.5 305 Use Proxy 3xx Redirection
Deprecated. Originally meant the resource must be accessed through a proxy. No longer used because of security concerns.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Legacy proxy configuration (should not appear in modern systems)Typical fixes Do not use — deprecated by RFC 9110Source: RFC 9110 §15.4.6 307 Temporary Redirect 3xx Redirection
The resource is temporarily at the Location URL, and the client MUST repeat the request with the same method and body. The method-preserving version of 302.
✕ Cacheable by default✕ Safe to retry✓ Preserves method✓ Has response body
Common causes A temporary redirect where a POST/PUT must be re-sent unchangedTypical fixes No action — method and body are preserved automaticallySource: RFC 9110 §15.4.8 308 Permanent Redirect 3xx Redirection
The resource has permanently moved to the Location URL, and the client MUST reuse the same method and body. The method-preserving version of 301.
✓ Cacheable by default✕ Safe to retry✓ Preserves method✓ Has response body
Common causes A permanent move of an endpoint that must keep its POST/PUT methodTypical fixes No action — method and body are preserved; update links to LocationSource: RFC 9110 §15.4.9 400 Bad Request 4xx Client Error
The server cannot or will not process the request because of a client error — malformed syntax, invalid framing, or deceptive routing.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Malformed JSON/body Invalid query parameters Bad request framingTypical fixes Validate and fix the request payload before resendingSource: RFC 9110 §15.5.1 401 Unauthorized 4xx Client Error
The request lacks valid authentication. The response must include a WWW-Authenticate header; the client can retry with credentials. ('Unauthenticated' would be the accurate name.)
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Missing/expired token Wrong credentials No Authorization headerTypical fixes Authenticate, then resend with a valid token; send WWW-Authenticate server-sideSource: RFC 9110 §15.5.2 402 Payment Required 4xx Client Error
Reserved for future use. Used by some APIs to signal that payment or a higher plan is required before the request can proceed.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Quota exhausted on a paid API Billing requiredTypical fixes Upgrade the plan or settle the outstanding balanceSource: RFC 9110 §15.5.3 403 Forbidden 4xx Client Error
The server understood the request but refuses to authorise it. Unlike 401, authenticating will not help — the identity is known but not permitted.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Insufficient permissions/role IP or geo block Disabled accountTypical fixes Grant the right permission, or use 404 to hide a resource's existenceSource: RFC 9110 §15.5.4 404 Not Found 4xx Client Error
The origin server did not find a current representation for the target resource, or does not wish to disclose that one exists. Does not say whether the absence is temporary or permanent.
✓ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Wrong URL or route Deleted resource Missing route handlerTypical fixes Check the path and routing; use 410 if the resource is permanently goneSource: RFC 9110 §15.5.5 405 Method Not Allowed 4xx Client Error
The method is known by the server but not supported by the target resource. The response must list supported methods in an Allow header.
✓ Cacheable by default✕ Safe to retry✓ Has response body
Common causes POST to a read-only endpoint DELETE not implemented for the routeTypical fixes Use a method listed in the Allow header; add the handler if it should existSource: RFC 9110 §15.5.6 406 Not Acceptable 4xx Client Error
The server cannot produce a response matching the Accept headers sent in the request (content type, language, or encoding).
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Accept header asks for a format the server cannot produceTypical fixes Relax or correct the Accept / Accept-Language headerSource: RFC 9110 §15.5.7 407 Proxy Authentication Required 4xx Client Error
Like 401, but authentication is needed by a proxy between the client and the server. The proxy sends a Proxy-Authenticate header.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A corporate or upstream proxy requires credentialsTypical fixes Send Proxy-Authorization credentials for the proxySource: RFC 9110 §15.5.8 408 Request Timeout 4xx Client Error
The server timed out waiting for the full request. The client may repeat the request; servers often close idle keep-alive connections this way.
✕ Cacheable by default✓ Safe to retry✓ Has response body
Common causes Slow or stalled client upload Idle keep-alive connection reapedTypical fixes Resend the request; check client network speed and timeoutsSource: RFC 9110 §15.5.9 409 Conflict 4xx Client Error
The request conflicts with the current state of the target resource — e.g. an edit against a stale version, or a duplicate that breaks a uniqueness rule.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Concurrent edit / version mismatch Duplicate unique keyTypical fixes Re-fetch the latest state, resolve the conflict, then resubmitSource: RFC 9110 §15.5.10 410 Gone 4xx Client Error
The resource is permanently gone and no forwarding address is known. Stronger than 404 — tells clients and search engines to stop requesting it.
✓ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A resource was intentionally and permanently removedTypical fixes No action — remove inbound links; use 404 if removal might be temporarySource: RFC 9110 §15.5.11 411 Length Required 4xx Client Error
The server refuses the request because it has no Content-Length header. The client must add one and resend.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Body sent without a Content-Length headerTypical fixes Add a Content-Length header (or use chunked transfer correctly)Source: RFC 9110 §15.5.12 412 Precondition Failed 4xx Client Error
A conditional header (If-Match, If-Unmodified-Since, etc.) evaluated to false, so the server did not perform the request. Guards against lost updates.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes The resource changed since the client's If-Match ETagTypical fixes Re-fetch the current ETag and retry the conditional requestSource: RFC 9110 §15.5.13 413 Content Too Large 4xx Client Error
The request body is larger than the server is willing or able to process. Formerly called 'Payload Too Large'.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Upload exceeds the server/proxy body-size limitTypical fixes Shrink or chunk the payload, or raise the server's size limitSource: RFC 9110 §15.5.14 414 URI Too Long 4xx Client Error
The request URI is longer than the server is willing to interpret — often a GET with too many query parameters that should be a POST.
✓ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Excessively long query string Redirect loop accumulating paramsTypical fixes Move parameters into a POST body; shorten the URLSource: RFC 9110 §15.5.15 415 Unsupported Media Type 4xx Client Error
The request body is in a format the target resource does not support (wrong Content-Type or Content-Encoding).
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Sending XML to a JSON-only endpoint Missing/incorrect Content-TypeTypical fixes Set the correct Content-Type and encode the body accordinglySource: RFC 9110 §15.5.16 416 Range Not Satisfiable 4xx Client Error
None of the ranges in the request's Range header overlap the current extent of the resource — e.g. a byte range beyond the file size.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Requested byte range exceeds the resource lengthTypical fixes Request a valid range, or omit Range to get the full resourceSource: RFC 9110 §15.5.17 417 Expectation Failed 4xx Client Error
The expectation in the request's Expect header could not be met by the server.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Expect: 100-continue rejected by an intermediaryTypical fixes Remove the Expect header or resend without itSource: RFC 9110 §15.5.18 418 I'm a Teapot 4xx Client Error
An April Fools' joke code (RFC 2324, Hyper Text Coffee Pot Control Protocol). RFC 9110 lists 418 as reserved/unused so it can never be reassigned. Not for real use.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A server playing the teapot joke; never a real protocol conditionTypical fixes Do not rely on 418 in production APIsSource: RFC 2324 §2.3.2 421 Misdirected Request 4xx Client Error
The request was directed at a server that is unable or unwilling to produce an authoritative response for the target URI's authority (common with HTTP/2 connection reuse).
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes HTTP/2 connection coalescing sent the request to the wrong originTypical fixes Retry on a fresh connection to the correct authoritySource: RFC 9110 §15.5.20 422 Unprocessable Content 4xx Client Error
The request was well-formed (correct syntax and content type) but the server could not process the contained instructions — typically semantic validation errors.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Valid JSON that fails business-rule validation Semantic field errorsTypical fixes Fix the field-level validation errors described in the response bodySource: RFC 9110 §15.5.21 423 Locked 4xx Client Error
WebDAV: the target resource is locked and cannot be modified.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A WebDAV resource is locked by another clientTypical fixes Wait for or remove the lock, then retrySource: RFC 4918 §11.3 424 Failed Dependency 4xx Client Error
WebDAV: the request failed because it depended on another request that failed.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A dependent WebDAV operation in the same request failedTypical fixes Fix the failed prerequisite operation and retrySource: RFC 4918 §11.4 425 Too Early 4xx Client Error
The server is unwilling to risk processing a request that might be replayed — sent over TLS 1.3 early data (0-RTT).
✕ Cacheable by default✓ Safe to retry✓ Has response body
Common causes Request sent in TLS 1.3 early data and the server refuses replay riskTypical fixes Resend after the TLS handshake completes (not as early data)Source: RFC 8470 §5.2 426 Upgrade Required 4xx Client Error
The server refuses the request on the current protocol but will accept it after the client upgrades. The Upgrade header lists the required protocol(s).
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Server requires a newer protocol (e.g. TLS, HTTP/2)Typical fixes Upgrade to the protocol named in the Upgrade header and retrySource: RFC 9110 §15.5.22 428 Precondition Required 4xx Client Error
The origin server requires the request to be conditional, to prevent the 'lost update' problem from blind overwrites. The client should add an If-Match.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Server requires an If-Match/If-Unmodified-Since for unsafe updatesTypical fixes Re-fetch the ETag and resend with an If-Match preconditionSource: RFC 6585 §3 429 Too Many Requests 4xx Client Error
The client has sent too many requests in a given time (rate limiting). The response should include a Retry-After header telling the client when to try again.
✕ Cacheable by default✓ Safe to retry✓ Has response body
Common causes Rate limit or quota exceeded Burst of requests from one clientTypical fixes Back off and retry after the Retry-After delay; add client-side throttlingSource: RFC 6585 §4 431 Request Header Fields Too Large 4xx Client Error
The server refuses the request because its header fields are too large, either individually or in total. Often an oversized Cookie.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Oversized Cookie or Authorization header Too many custom headersTypical fixes Reduce header size (clear large cookies) and resendSource: RFC 6585 §5 451 Unavailable For Legal Reasons 4xx Client Error
The resource is unavailable for legal reasons, such as a court order or government censorship. The number nods to Fahrenheit 451.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Legal takedown Geo-blocking required by lawTypical fixes No action by the client; the block is legally mandatedSource: RFC 7725 §3 500 Internal Server Error 5xx Server Error
A generic catch-all: the server hit an unexpected condition that stopped it fulfilling the request. The most common server-side error.
✕ Cacheable by default✓ Safe to retry✓ Has response body
Common causes Unhandled exception Misconfiguration Database/dependency failureTypical fixes Check server logs for the stack trace; fix the underlying bugSource: RFC 9110 §15.6.1 501 Not Implemented 5xx Server Error
The server does not support the functionality required to fulfil the request — e.g. an unrecognised method. The only 5xx that is cacheable by default.
✓ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Method or feature not implemented by the serverTypical fixes Use a supported method/feature, or implement the missing capabilitySource: RFC 9110 §15.6.2 502 Bad Gateway 5xx Server Error
The server, acting as a gateway or proxy, got an invalid response from the upstream server it relied on.
✕ Cacheable by default✓ Safe to retry✓ Has response body
Common causes Upstream/origin server returned garbage or crashed Proxy misconfigTypical fixes Check upstream health and the proxy configuration; retrySource: RFC 9110 §15.6.3 503 Service Unavailable 5xx Server Error
The server is temporarily unable to handle the request — overloaded or down for maintenance. A Retry-After header may say when to come back.
✕ Cacheable by default✓ Safe to retry✓ Has response body
Common causes Overload / traffic spike Planned maintenance Failing health checkTypical fixes Retry after the Retry-After delay; scale capacity or finish maintenanceSource: RFC 9110 §15.6.4 504 Gateway Timeout 5xx Server Error
The server, acting as a gateway or proxy, did not get a timely response from the upstream server.
✕ Cacheable by default✓ Safe to retry✓ Has response body
Common causes Upstream server too slow Network latency to the origin DeadlockTypical fixes Raise upstream timeouts or speed up the origin; retrySource: RFC 9110 §15.6.5 505 HTTP Version Not Supported 5xx Server Error
The server does not support, or refuses to support, the major HTTP version used in the request.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Client used an HTTP version the server cannot speakTypical fixes Use a supported HTTP version (e.g. HTTP/1.1 or HTTP/2)Source: RFC 9110 §15.6.6 506 Variant Also Negotiates 5xx Server Error
A transparent content-negotiation configuration error: the chosen variant is itself configured to negotiate, causing a loop.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Misconfigured transparent content negotiationTypical fixes Fix the server's variant negotiation configurationSource: RFC 2295 §8.1 507 Insufficient Storage 5xx Server Error
WebDAV: the server cannot store the representation needed to complete the request — out of disk or quota.
✕ Cacheable by default✓ Safe to retry✓ Has response body
Common causes Server disk or storage quota exhaustedTypical fixes Free up storage or raise the quota, then retrySource: RFC 4918 §11.5 508 Loop Detected 5xx Server Error
WebDAV: the server detected an infinite loop while processing the request (e.g. cyclic bindings).
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes A cyclic WebDAV binding caused an infinite traversalTypical fixes Break the cyclic resource structure on the serverSource: RFC 5842 §7.2 510 Not Extended 5xx Server Error
An extension to the request is required for the server to fulfil it. Defined by the experimental (now obsolete) HTTP Extension Framework; rarely seen.
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Server requires a mandatory protocol extension that was not presentTypical fixes Include the required extension declaration (legacy; rarely applicable)Source: RFC 2774 §7 511 Network Authentication Required 5xx Server Error
The client needs to authenticate to gain network access — sent by captive portals (e.g. public Wi-Fi login pages).
✕ Cacheable by default✕ Safe to retry✓ Has response body
Common causes Captive portal (hotel / airport / café Wi-Fi) requires sign-inTypical fixes Complete the network login page, then retry the original requestSource: RFC 6585 §6