HTTP Status Codes Reference and Lookup
Look up what any HTTP status code means.
62 status codes
100Continue
The server has received the request headers and the client should go ahead and send the body. Sent in reply to Expect: 100-continue.
Informational · RFC 9110
101Switching Protocols
The server agrees to switch to the protocol named in the client's Upgrade header, for example to WebSocket.
Informational · RFC 9110
102Processing
The server has accepted a WebDAV request and is still working on it, so the client should not time out.
Removed from later WebDAV specs and rarely used.
Informational · RFC 2518 (WebDAV)
103Early Hints
Sent before the final response with Link headers so the browser can start preloading resources such as stylesheets while the server prepares the page.
Informational · RFC 8297
200OK
The request succeeded. The body contains the requested resource or the result of the action.
Success · RFC 9110
201Created
The request succeeded and created a new resource, usually identified by the Location header. Typical reply to a successful POST.
Success · RFC 9110
202Accepted
The request has been accepted for processing, but processing has not finished and may still fail. Common for queued or asynchronous jobs.
Success · RFC 9110
203Non-Authoritative Information
The request succeeded, but a transforming proxy has modified the response from the origin server.
Success · RFC 9110
204No Content
The request succeeded and there is no body to return. Common for DELETE or for PUT updates.
Success · RFC 9110
205Reset Content
The request succeeded and the client should reset the document view, for example clear a form. It has no body.
Success · RFC 9110
206Partial Content
The server is returning only the byte range(s) asked for in the Range header, used for resumable downloads and video seeking.
Success · RFC 9110
207Multi-Status
The body (usually XML) holds separate status codes for several resources affected by one WebDAV request.
Success · RFC 4918 (WebDAV)
208Already Reported
Used inside a WebDAV multi-status response to avoid listing the same bound resource repeatedly.
Success · RFC 5842 (WebDAV)
226IM Used
The server has applied delta encoding (instance manipulations) and the response is a delta, not the full resource.
Success · RFC 3229
300Multiple Choices
The resource has several representations and the client or user should pick one. Rarely used in practice.
Redirection · RFC 9110
301Moved Permanently
The resource has a new permanent URL, given in the Location header. Search engines transfer ranking to the new URL.
Clients may change POST to GET when following it; use 308 to keep the method.
Redirection · RFC 9110
302Found
The resource is temporarily at a different URL, given in the Location header. Keep using the original URL in future.
Clients may change POST to GET when following it; use 307 to keep the method.
Redirection · RFC 9110
303See Other
The client should fetch another URL with GET, typically after a form POST, so refreshing the result page does not resubmit the form.
Redirection · RFC 9110
304Not Modified
A conditional GET found that the cached copy (checked with If-None-Match or If-Modified-Since) is still current, so no body is sent.
Redirection · RFC 9110
305Use Proxy
Originally told the client to access the resource through a proxy.
Deprecated for security reasons and ignored by browsers.
Redirection · RFC 9110
307Temporary Redirect
The resource is temporarily at another URL and the client must repeat the request there with the same method and body.
Redirection · RFC 9110
308Permanent Redirect
The resource has moved permanently and the client must repeat the request at the new URL with the same method and body.
Redirection · RFC 9110
400Bad Request
The server can't process the request because it is malformed, for example invalid syntax, bad framing or invalid JSON.
Client error · RFC 9110
401Unauthorized
Authentication is required and has failed or not been provided. The response includes a WWW-Authenticate header describing how to authenticate.
Despite the name, it means unauthenticated; use 403 when the user is known but not allowed.
Client error · RFC 9110
402Payment Required
Reserved for future use. Some APIs use it when a payment or subscription is needed, but there is no standard behaviour.
Client error · RFC 9110
403Forbidden
The server understood the request but refuses to fulfil it. Authenticating again will not help.
Client error · RFC 9110
404Not Found
The server has no resource at this URL, or prefers not to reveal that one exists.
Client error · RFC 9110
405Method Not Allowed
The URL exists but does not support this HTTP method. The Allow header lists the methods it does support.
Client error · RFC 9110
406Not Acceptable
The server can't produce a response matching the client's Accept headers (content type, language or encoding).
Client error · RFC 9110
407Proxy Authentication Required
Like 401, but the client must first authenticate with the proxy, as described by the Proxy-Authenticate header.
Client error · RFC 9110
408Request Timeout
The server gave up waiting for the client to finish sending the request. The client may retry on a new connection.
Client error · RFC 9110
409Conflict
The request conflicts with the current state of the resource, for example an edit conflict or a duplicate unique value.
Client error · RFC 9110
410Gone
The resource has been permanently removed and will not come back. Unlike 404, this is known to be permanent.
Client error · RFC 9110
411Length Required
The server requires a Content-Length header and the request did not include one.
Client error · RFC 9110
412Precondition Failed
A condition in the request headers, such as If-Match or If-Unmodified-Since, was false. Used to prevent lost updates.
Client error · RFC 9110
413Content Too Large
The request body is larger than the server is willing to process.
Previously called Payload Too Large or Request Entity Too Large.
Client error · RFC 9110
414URI Too Long
The request URL is longer than the server is willing to interpret, often because too much data was put in the query string.
Client error · RFC 9110
415Unsupported Media Type
The server does not support the request body's format, given by Content-Type or Content-Encoding.
Client error · RFC 9110
416Range Not Satisfiable
None of the byte ranges in the Range header overlap the resource, for example a range past the end of the file.
Client error · RFC 9110
417Expectation Failed
The server can't meet the requirement in the request's Expect header.
Client error · RFC 9110
418I'm a teapot
A joke from the Hyper Text Coffee Pot Control Protocol: the teapot refuses to brew coffee. Some sites use it for requests they choose not to handle.
RFC 9110 marks 418 as reserved (unused) so it is never assigned a real meaning.
Client error · RFC 2324 (April Fools')
421Misdirected Request
The request reached a server that can't produce a response for this host, for example over a reused HTTP/2 connection.
Client error · RFC 9110
422Unprocessable Content
The request is well-formed but its content is semantically invalid, for example failing validation rules. Widely used by APIs.
Originally Unprocessable Entity in WebDAV (RFC 4918).
Client error · RFC 9110
423Locked
The WebDAV resource is locked and the request lacks the lock token needed to change it.
Client error · RFC 4918 (WebDAV)
424Failed Dependency
The WebDAV request failed because an action it depended on failed.
Client error · RFC 4918 (WebDAV)
425Too Early
The server won't process a request sent in TLS early data (0-RTT) because it could be replayed.
Client error · RFC 8470
426Upgrade Required
The server refuses the request over the current protocol; the client must switch to the one named in the Upgrade header.
Client error · RFC 9110
428Precondition Required
The server requires the request to be conditional (for example include If-Match) to prevent lost updates.
Client error · RFC 6585
429Too Many Requests
The client has sent too many requests in a given time (rate limiting). A Retry-After header may say how long to wait.
Client error · RFC 6585
431Request Header Fields Too Large
The request headers are too large, either one header or all of them together, often because of oversized cookies.
Client error · RFC 6585
451Unavailable For Legal Reasons
The resource can't be provided for legal reasons, such as a court order or government censorship.
Client error · RFC 7725
500Internal Server Error
The server hit an unexpected condition, such as an unhandled exception, and couldn't complete the request.
Server error · RFC 9110
501Not Implemented
The server does not support the functionality needed, for example an HTTP method it does not recognise.
Server error · RFC 9110
502Bad Gateway
A gateway or proxy got an invalid response from the upstream server it contacted, for example because the app crashed.
Server error · RFC 9110
503Service Unavailable
The server is temporarily unable to handle the request because of overload or maintenance. Retry-After may say when to try again.
Server error · RFC 9110
504Gateway Timeout
A gateway or proxy did not get a response from the upstream server in time.
Server error · RFC 9110
505HTTP Version Not Supported
The server does not support the major HTTP version used in the request.
Server error · RFC 9110
506Variant Also Negotiates
A server configuration error in transparent content negotiation: the chosen variant is itself set up to negotiate.
Server error · RFC 2295
507Insufficient Storage
The server can't store the representation needed to complete the request, for example because the disk is full.
Server error · RFC 4918 (WebDAV)
508Loop Detected
The server found an infinite loop while processing a WebDAV request with Depth: infinity.
Server error · RFC 5842 (WebDAV)
510Not Extended
The request needs further extensions before the server will fulfil it.
RFC 2774 is now historic and this code is effectively obsolete.
Server error · RFC 2774
511Network Authentication Required
The client must authenticate to gain network access, typically a Wi-Fi captive portal intercepting the request.
Server error · RFC 6585
Use via API
Look up HTTP status codes: the reason phrase, what it means, the defining specification and usage notes. Search by code (404), code prefix (40), class (4xx) or words (rate limit). Send JSON, get JSON back.
POST https://pithlab.com/api/v1/tools/http-status-codes
curl https://pithlab.com/api/v1/tools/http-status-codes \
-H "Authorization: Bearer $PITHLAB_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"429"}'About the HTTP Status Codes
Searchable list of HTTP status codes from 100 to 511 with plain-English explanations, based on RFC 9110 plus WebDAV, 418 and 429. Search by number or keyword.
How to use the HTTP Status Codes
- Type a code such as 404, the start of one such as 40, or a class such as 5xx.
- Or search by keyword, for example redirect, cache or rate limit.
- Filter by class with the buttons to browse informational, success, redirect, client error or server error codes.
- Read the explanation and the specification each code comes from.
Examples
Input
404
Output
404 Not Found
Input
rate limit
Output
429 Too Many Requests
Frequently asked questions
What is the difference between 401 and 403?
401 Unauthorized means the request is not authenticated: log in or send valid credentials and try again. 403 Forbidden means the server knows who you are, or doesn't care, and still refuses; logging in again will not help.
Should I use 301, 302, 307 or 308 for a redirect?
Use 301 or 308 for permanent moves and 302 or 307 for temporary ones. 307 and 308 guarantee the method and body are kept, while with 301 and 302 clients may turn a POST into a GET.
What do the first digits mean?
1xx are informational, 2xx mean success, 3xx are redirects, 4xx mean the client made an error, and 5xx mean the server failed. Clients that don't recognise a code treat it like the x00 code of its class.
Is 418 I'm a teapot a real status code?
It started as an April Fools' joke in RFC 2324. It was never part of HTTP proper, but because so many servers implement it, RFC 9110 reserves 418 so it won't be given another meaning.