HTTP Status Code Reference
Look up what any HTTP status code means
Continue
The server received the request headers and the client should proceed to send the request body.
Switching Protocols
The server is switching to a different protocol as requested by the client.
Processing
The server accepted the full request but hasn't finished processing it yet.
Early Hints
The server sends some response headers early, before the final response is ready.
OK
The request succeeded.
Created
The request succeeded and a new resource was created.
Accepted
The request was accepted for processing, but that processing isn't complete yet.
Non-Authoritative Information
The returned metadata is from a proxy or cache, not the exact metadata from the origin server.
No Content
The request succeeded but there's no content to return.
Reset Content
The server is telling the client to reset the document view that sent the request.
Partial Content
The server is delivering only part of the resource, matching a range requested by the client.
IM Used
The server fulfilled the request using a delta encoding (a set of instance manipulations) against a base version.
Multiple Choices
There's more than one possible response, and the client should choose one.
Moved Permanently
The resource has permanently moved to a new URL.
Found
The resource temporarily resides at a different URL.
See Other
The client should retrieve the resource with a GET request to a different URL.
Not Modified
The cached version is still valid; no need to re-fetch.
Use Proxy
Deprecated -- the requested resource had to be accessed through the proxy given in the response.
(Unused)
Reserved from an earlier version of the spec ('Switch Proxy'), no longer used.
Temporary Redirect
The resource temporarily resides at a different URL, and the request method must not change.
Permanent Redirect
The resource has permanently moved to a new URL, and the request method must not change.
Bad Request
The server can't process the request due to a client error.
What to do: Check the request syntax and payload for malformed JSON, missing required fields, or invalid parameter types.
Unauthorized
Authentication is required and has failed or not been provided.
What to do: Verify the request includes valid authentication credentials (like a token or API key) and that they haven't expired.
Payment Required
Reserved for future use with digital payment systems -- not commonly implemented.
What to do: Rarely used in practice -- check the specific API's docs, since this usually signals a billing or quota issue on that platform.
Forbidden
The server understood the request but refuses to authorize it.
What to do: The credentials are valid but lack permission -- check the user's role or scope, not whether they're logged in.
Not Found
The requested resource couldn't be found.
What to do: Double-check the URL path for typos, and confirm the resource still exists at that endpoint.
Method Not Allowed
The HTTP method isn't supported for this resource.
What to do: Confirm you're using the HTTP method (GET/POST/PUT/DELETE) the endpoint actually supports.
Not Acceptable
The server can't produce a response matching the content the client said it would accept.
What to do: Check the Accept header you're sending matches a format the server can actually return.
Proxy Authentication Required
The client must authenticate itself with a proxy before the request can proceed.
What to do: Authenticate with the proxy server itself, separately from the destination server's own authentication.
Request Timeout
The server timed out waiting for the request.
What to do: Check for slow network conditions or a client holding the connection open too long -- consider retrying.
Conflict
The request conflicts with the current state of the resource.
What to do: The request conflicts with the resource's current state (like a duplicate entry) -- refetch the current state before retrying.
Gone
The resource is permanently gone and isn't coming back, unlike a plain 404.
What to do: Unlike 404, this resource was intentionally removed -- update any links pointing to it rather than expecting it to return.
Length Required
The server requires a Content-Length header, which the request didn't include.
What to do: Add a Content-Length header to the request.
Precondition Failed
A condition set in the request's headers wasn't met by the server.
What to do: A conditional header you sent (like If-Match) didn't match the resource's current state -- refetch and retry.
Payload Too Large
The request body is larger than the server is willing or able to process.
What to do: Reduce the request body size, or check the server's configured upload limit.
URI Too Long
The requested URL is longer than the server is willing to interpret.
What to do: Shorten the URL, or move parameters from the query string into the request body if the method allows it.
Unsupported Media Type
The server doesn't support the format of the request payload.
What to do: Check the Content-Type header matches a format the server actually accepts.
Range Not Satisfiable
The requested byte range doesn't match the actual size of the resource.
What to do: The requested byte range is outside the resource's actual size -- verify the range values you're sending.
Expectation Failed
The server can't meet the requirement stated in the request's Expect header.
What to do: Remove the Expect header, or check whether the server actually supports it.
I'm a teapot
An April Fools' joke from RFC 2324 -- the server refuses to brew coffee because it's a teapot.
What to do: This is an April Fools' joke from RFC 2324 (Hyper Text Coffee Pot Control Protocol) -- not a real error to handle.
Misdirected Request
The request was sent to a server that isn't able to produce a response for it.
What to do: Reconfirm this connection or server can actually handle requests for the target host.
Unprocessable Entity
The request was well-formed but contains semantic errors.
What to do: The syntax is valid but the semantics aren't (e.g. failed validation) -- check the field-level error the server usually includes.
Locked
The resource being accessed is locked (used in WebDAV).
What to do: The resource is locked (common in WebDAV) -- wait, or request that it be unlocked.
Failed Dependency
The request failed because a previous, related request also failed (used in WebDAV).
What to do: A prior required request in the same operation failed -- check that earlier step, not this one.
Too Early
The server isn't willing to risk processing a request that might be replayed.
What to do: The server is guarding against replay attacks on early data -- retry once the full connection is established.
Upgrade Required
The server refuses to process the request using the current protocol and wants the client to upgrade.
What to do: Switch to the protocol version named in the Upgrade header the server sent back.
Precondition Required
The server requires the request to be conditional, to prevent lost-update race conditions.
What to do: Add the conditional header (like If-Match) the server is requiring before it'll process the request.
Too Many Requests
The client has sent too many requests in a given time.
What to do: You're being rate-limited -- check the Retry-After header and slow down your request rate.
Request Header Fields Too Large
The request's header fields are too large for the server to process.
What to do: Reduce the size or number of headers you're sending.
Unavailable For Legal Reasons
The server is denying access to the resource as a result of a legal demand.
What to do: The resource is blocked for legal or regulatory reasons -- this isn't something to work around technically.
Internal Server Error
The server encountered an unexpected condition.
What to do: Check the server's own logs -- this is a generic catch-all, and the real cause lives server-side, not in the request.
Not Implemented
The server doesn't support the functionality required to fulfill the request.
What to do: The server doesn't support the requested method -- confirm you're calling a real, implemented endpoint.
Bad Gateway
The server, acting as a gateway, got an invalid response upstream.
What to do: An upstream server (behind a proxy or load balancer) sent an invalid response -- check that upstream service's health.
Service Unavailable
The server isn't ready to handle the request (overloaded or down).
What to do: The server is temporarily overloaded or down for maintenance -- check the Retry-After header and back off.
Gateway Timeout
The upstream server failed to respond in time.
What to do: An upstream server took too long to respond -- check that upstream service's performance, not the client's request.
HTTP Version Not Supported
The server doesn't support the HTTP protocol version used in the request.
What to do: Use a version of HTTP the server actually supports.
Variant Also Negotiates
The server has an internal configuration error in its content negotiation setup.
What to do: A server-side content negotiation misconfiguration -- needs a fix on the server, not the client.
Insufficient Storage
The server can't store the representation needed to complete the request (used in WebDAV).
What to do: The server has run out of storage to complete the request -- a server-side capacity issue.
Loop Detected
The server detected an infinite loop while processing the request (used in WebDAV).
What to do: The server detected an infinite loop while processing -- check for a circular reference in the request chain.
Not Extended
Further extensions to the request are required for the server to fulfill it.
What to do: The server requires an extension not specified in the request -- check the server's documentation for what's required.
Network Authentication Required
The client needs to authenticate to gain network access, often seen with captive Wi-Fi portals.
What to do: Authenticate with the network itself first (common with public/hotel Wi-Fi captive portals) before the actual request will succeed.
What is this tool?
A searchable reference for HTTP status codes, explaining what each one means, which category (success, redirect, client error, server error) it falls into, and for error codes specifically, a concrete next step for what to actually check or do about it.
How to use it
Search by status code number or by name, and the matching entries with their explanations (and, for error codes, a suggested next step) are displayed.
The first digit of any status code tells you the general category at a glance — 2xx means success, 4xx means the client made a mistake, and 5xx means the server had a problem, even before you look up the specific code.
More from Security & Developer:
Advertisement