The server has received the request headers and the client may send the body. Used when a client sends Expect: 100-continue to check that a large upload will be accepted first.
Specification: RFC 9110 §15.2.1
Look up every HTTP status code with its meaning, common causes and fixes. Search by number or keyword in English or Chinese.
Type a number (like 404 or 5xx) or a keyword
63 status codes
The server has received the request headers and the client may send the body. Used when a client sends Expect: 100-continue to check that a large upload will be accepted first.
Specification: RFC 9110 §15.2.1
The server agrees to the client’s Upgrade request and switches protocols, most often from HTTP/1.1 to WebSocket.
Specification: RFC 9110 §15.2.2
An interim WebDAV response saying the server is still working on the request, so the client does not time out. Rarely used today.
Later WebDAV specifications (RFC 4918) no longer define it.
Specification: RFC 2518 §10.1
Sends Link headers before the final response so the browser can start preloading CSS and fonts or preconnecting early, speeding up page loads.
Specification: RFC 8297 §2
The request succeeded. For GET the body holds the resource; for POST it describes the result. The most common status code.
Specification: RFC 9110 §15.3.1
The request succeeded and created a new resource, typically after POST or PUT. The Location header points to the new resource.
Specification: RFC 9110 §15.3.2
The request was accepted but not processed yet (for example, queued as a background job). It may still succeed or fail later.
Specification: RFC 9110 §15.3.3
The request succeeded, but a proxy in between modified the content, so it is not exactly what the origin server sent.
Specification: RFC 9110 §15.3.4
The request succeeded and there is nothing to send back. Common for DELETE, saving settings and CORS preflight (OPTIONS) responses.
Specification: RFC 9110 §15.3.5
The request succeeded; the client should reset its view, such as clearing a submitted form. Rarely used in practice.
Specification: RFC 9110 §15.3.6
The server sends only the part requested with a Range header. Used for resumable downloads and seeking in video.
Specification: RFC 9110 §15.3.7
WebDAV: when one request acts on several resources, an XML body lists the status of each.
Specification: RFC 4918 §11.1
WebDAV: the resource was already listed earlier in a Multi-Status response, so it is not repeated.
Specification: RFC 5842 §7.1
The response is the result of instance manipulations, such as a delta encoding that sends only what changed. Very rarely used.
Specification: RFC 3229 §10.4.1
The resource has several representations (such as languages or formats) and the client should choose one. Rarely used.
Specification: RFC 9110 §15.4.1
The resource has moved for good to the URL in the Location header. Search engines transfer ranking to the new URL and browsers cache the redirect.
Specification: RFC 9110 §15.4.2
The resource is temporarily at the URL in the Location header; keep using the original URL. Often used after sign-in; search engines keep the original URL.
Specification: RFC 9110 §15.4.3
Fetch the result with GET from the URL in the Location header. Used after a form POST to show a result page (Post/Redirect/Get), so reloading does not resubmit.
Specification: RFC 9110 §15.4.4
The resource has not changed since the client’s cached copy (checked with If-None-Match or If-Modified-Since), so the cache can be used. The response has no body.
Specification: RFC 9110 §15.4.5
Told the client to go through a given proxy. Deprecated for security reasons; browsers ignore it.
Specification: RFC 9110 §15.4.6
Was “Switch Proxy” in an early draft. No longer used, but the number stays reserved.
Specification: RFC 9110 §15.4.7
A temporary redirect like 302, but the client must repeat the same method and body (a POST stays a POST). Browsers also show 307 when HSTS upgrades a request to HTTPS internally.
Specification: RFC 9110 §15.4.8
A permanent redirect like 301, but the client must repeat the same method and body. Good for moving API endpoints.
Specification: RFC 9110 §15.4.9
The server cannot process the request because it is malformed, has invalid parameters or a body it cannot parse.
Specification: RFC 9110 §15.5.1
Authentication is required and was missing or invalid. Despite the name, it means “unauthenticated” (the server does not know who you are). The response should include a WWW-Authenticate header.
Specification: RFC 9110 §15.5.2
Reserved for future payment schemes, with no standard use yet. Some services use it for exhausted quotas or expired subscriptions.
Specification: RFC 9110 §15.5.3
The server understood the request but refuses it: you do not have permission. Unlike 401, signing in again usually does not help.
Specification: RFC 9110 §15.5.4
The server cannot find the requested resource. The URL may be wrong or the page deleted, or the server may hide that it exists (instead of 403).
Specification: RFC 9110 §15.5.5
The resource exists but does not support this HTTP method (for example, POST to a read-only resource). The Allow header lists the methods that work.
Specification: RFC 9110 §15.5.6
The server cannot produce content that matches the request’s Accept headers (format, language or encoding).
Specification: RFC 9110 §15.5.7
Like 401, but the proxy in between needs you to authenticate. Common on corporate networks.
Specification: RFC 9110 §15.5.8
The server waited too long for the complete request and closed the connection.
Specification: RFC 9110 §15.5.9
The request conflicts with the current state of the resource, such as an edit conflict between two users or creating something that already exists.
Specification: RFC 9110 §15.5.10
The resource used to exist but has been removed for good, with no forwarding address. Clearer than 404; search engines drop it from their index faster.
Specification: RFC 9110 §15.5.11
The server requires a Content-Length header on the request.
Specification: RFC 9110 §15.5.12
A conditional header such as If-Match or If-Unmodified-Since did not hold. Used to avoid overwriting someone else’s newer changes.
Specification: RFC 9110 §15.5.13
The request body is larger than the server allows, typically a file upload. Formerly called “Payload Too Large”.
Specification: RFC 9110 §15.5.14
The URL is longer than the server will handle, usually from putting lots of data in query parameters or a redirect loop that keeps adding them.
Specification: RFC 9110 §15.5.15
The server does not support the format of the request body (its Content-Type or Content-Encoding).
Specification: RFC 9110 §15.5.16
The range asked for in the Range header is outside the file, for example when resuming a download of a file that has since shrunk.
Specification: RFC 9110 §15.5.17
The server cannot meet the Expect header (usually Expect: 100-continue).
Specification: RFC 9110 §15.5.18
An easter egg from RFC 2324, the 1998 April Fools’ “Hyper Text Coffee Pot Control Protocol”: a teapot asked to brew coffee returns it. Not a real HTTP status, yet widely implemented.
IANA lists it as “(Unused)” and keeps it reserved because so much software already uses it.
Specification: RFC 9110 §15.5.19
The request reached a server that cannot answer for this host, typically when an HTTP/2 connection is reused across domains sharing a certificate.
Specification: RFC 9110 §15.5.20
The request is well-formed but its content is semantically wrong, such as failed field validation (bad email, password too short). Many APIs use it for validation errors.
Specification: RFC 9110 §15.5.21
WebDAV: the resource is locked and cannot be changed right now.
Specification: RFC 4918 §11.3
WebDAV: the action failed because another action it depended on failed.
Specification: RFC 4918 §11.4
The server will not risk processing a request that might be replayed. Used with TLS 1.3 0-RTT early data: resend after the handshake completes.
Specification: RFC 8470 §5.2
The server requires a different protocol, named in the Upgrade header (for example, a newer TLS or HTTP version).
Specification: RFC 9110 §15.5.22
The server requires a conditional header such as If-Match, to prevent lost updates when two clients edit the same thing.
Specification: RFC 6585 §3
Too many requests in a given time; you hit a rate limit. The Retry-After header may say how long to wait.
Specification: RFC 6585 §4
The request headers are too large to process, most often because too many cookies have piled up.
Specification: RFC 6585 §5
The resource is unavailable because of a legal demand, such as a government order, court ruling or copyright takedown. The number nods to the novel Fahrenheit 451.
Specification: RFC 7725 §3
The server hit an unexpected error and could not complete the request. It is a server-side problem, not something you did wrong.
Specification: RFC 9110 §15.6.1
The server does not support the functionality needed, such as an HTTP method it does not recognize.
Specification: RFC 9110 §15.6.2
A gateway or reverse proxy (such as Nginx or a CDN) got an invalid response from the upstream server, or could not reach it at all.
Specification: RFC 9110 §15.6.3
The server cannot handle the request right now, usually because it is overloaded or down for maintenance. Retry-After may say when to come back.
Specification: RFC 9110 §15.6.4
A gateway or reverse proxy did not get a response from the upstream server in time.
Specification: RFC 9110 §15.6.5
The server does not support the major HTTP version used in the request.
Specification: RFC 9110 §15.6.6
A server misconfiguration in content negotiation: the chosen variant is itself set up to negotiate, creating a loop.
Specification: RFC 2295 §8.1
WebDAV: the server does not have enough storage to complete the request.
Specification: RFC 4918 §11.5
WebDAV: the server found an infinite loop while processing the request (for example, bindings that refer to each other).
Specification: RFC 5842 §7.2
The request needs further extensions to be fulfilled. Its HTTP Extension Framework (RFC 2774) is now historic.
IANA marks this code as obsoleted.
Specification: RFC 2774 §7
You need to sign in to the network first, typically the Wi-Fi login page (captive portal) at hotels, airports and cafés.
Specification: RFC 6585 §6
The first digit is the class: 1xx informational (request received, continuing), 2xx success, 3xx redirection (go to another URL), 4xx client errors (the request itself is wrong, such as a bad URL or missing permission) and 5xx server errors (the request was fine, but the server failed to handle it).
401 means “we do not know who you are yet”: you are not signed in or your credentials are invalid, and signing in usually fixes it. 403 means “we know who you are, but you are not allowed”; signing in again will not help, you need permission.
Use 301 or 308 for permanent moves and 302 or 307 for temporary ones. 301 and 302 may let browsers turn a POST into a GET, while 307 and 308 guarantee the same method and body. For web pages 301 is typical; for APIs prefer 308.
It is an easter egg from RFC 2324, a 1998 April Fools’ document. It is not a real HTTP status code, but so much software implements it that IANA marks 418 as “(Unused)” and keeps it reserved so it will never be assigned to anything else.
This list covers codes registered with IANA. 499 (Nginx: client closed the connection), 520–527 (Cloudflare) and the like are specific to one product or service, are not part of the HTTP standard, and their meaning varies, so check that service’s documentation.
The list follows the IANA HTTP Status Code Registry. Names and definitions follow RFC 9110 (HTTP Semantics) and each code’s original RFC, and every code links to the section that defines it.
A new version of the site is available.