HTTP Status Codes
Web Server — 58 error codes
Reference list of 58 HTTP status codes with meanings, common causes, and related context.
About HTTP Status Codes
HTTP status codes are defined by RFC 9110 (June 2022) and organised into five classes by their first digit. 1xx codes are informational interim responses, 2xx codes signal success, 3xx codes redirect the client to a different URL, 4xx codes report client-side errors, and 5xx codes report server-side errors. Each class covers a distinct phase of the HTTP request lifecycle.
Within these classes, individual codes carry specific semantics that matter for debugging, caching, and API design. A 301 permanently redirects, while a 307 does the same but preserves the HTTP method. A 401 asks for authentication, while a 403 denies access even with valid credentials. A 502 means an upstream returned garbage, while a 504 means the upstream never responded at all.
This collection documents 58 HTTP status codes, from the most frequently encountered codes (200, 404, 500) to less common responses like 103 Early Hints, 421 Misdirected Request, and 508 Loop Detected. Each entry explains the protocol meaning, lists common causes, and links to related codes in the same response class.
Showing 58 of 58 error codes
Internal Server Error — the server hit an unexpected condition while handling the request
Not Implemented — the server does not support the HTTP method used in the request
Bad Gateway — the server received an invalid response from an upstream server
Service Unavailable — the server is temporarily unable to handle this request
Gateway Timeout — the gateway did not receive an upstream response in time
Insufficient Storage — the server lacks space to complete the request
Loop Detected — the server found an infinite processing loop while handling the request
Bad Request — the server cannot process the request because it is malformed
Unauthorized — valid authentication credentials are missing for the target resource
Forbidden — the server understood the request but refuses to authorize it
Not Found — the server cannot find the requested resource at this URL
Method Not Allowed — the resource exists but does not accept this HTTP method
Proxy Authentication Required — client must authenticate with a proxy before forwarding the request
Request Timeout — the server did not receive a complete request in time
Conflict — the request clashes with the current state of the target resource
Gone — the requested resource was intentionally removed and is no longer available
Length Required — the server requires a valid Content-Length header
Precondition Failed — a conditional header did not match current resource state
Content Too Large — the request body is larger than the server allows
URI Too Long — the requested URL exceeds the server length limit
Unsupported Media Type — the request body format is not accepted here
Expectation Failed — the server cannot satisfy the request's Expect header requirements
Misdirected Request — the request reached a server that cannot answer for that authority
Unprocessable Content — the server understood the request but cannot apply its instructions
Locked
Failed Dependency — the request depends on another action that did not succeed
Too Early — the server rejects the request before replay-sensitive processing begins
Precondition Required — origin server requires the request to be conditional
Too Many Requests — the client exceeded the allowed request rate
Request Header Fields Too Large — the header section exceeds accepted size limits
Unavailable For Legal Reasons — the server legally cannot serve the resource
Variant Also Negotiates — the selected representation has a circular negotiation configuration
Network Authentication Required — the client needs to authenticate to gain network access
Continue — server received preliminary request headers and client can transmit body
Switching Protocols — the server is switching to the protocol requested by the client
Early Hints — the server is sending preliminary response headers before the final response
OK — the request succeeded and the server returned the expected response
Created — the request was successful and a new resource was created
Accepted — the request has been accepted for processing, but is not yet complete
Non-Authoritative Information — response was modified by an intermediary proxy
No Content — the request was successful but there is no content to return
Reset Content — the server asks the client to reset the document view
HTTP 206 Partial Content — the server is sending a requested range
Multi-Status — the response contains status information for multiple resources
IM Used — the server fulfilled a delta-encoding request for the resource
Multiple Choices — the request has more than one possible response representation
Moved Permanently — the requested resource has been assigned a new permanent URL
Found — target resource resides temporarily under a different URI
See Other — the response is available at a different URL via GET
Not Modified — cached copy on client remains valid and fresh
Temporary Redirect — the resource temporarily resides at a different location
Permanent Redirect — the resource was permanently moved without method changes
Payment Required
Not Acceptable — the server cannot produce a response matching the request headers
Range Not Satisfiable — the server cannot fulfill the byte range specified in the request
I'm a teapot — server refuses to brew coffee because it is permanently a teapot
Upgrade Required — the server demands a different protocol before continuing
HTTP Version Not Supported
Frequently Asked Questions
HTTP status codes are grouped into five classes by their first digit: 1xx informational, 2xx success, 3xx redirection, 4xx client error, and 5xx server error. This collection covers all five classes with individual pages for each code.
The most important codes for API development are 200 (OK), 201 (Created), 204 (No Content), 400 (Bad Request), 401 (Unauthorized), 403 (Forbidden), 404 (Not Found), 409 (Conflict), 422 (Unprocessable Content), 429 (Too Many Requests), 500 (Internal Server Error), 502 (Bad Gateway), 503 (Service Unavailable), and 504 (Gateway Timeout).
A 301 Moved Permanently allows clients to change the HTTP method (most browsers change POST to GET). A 308 Permanent Redirect requires the client to keep the same method and body. The distinction matters where a redirect must preserve the original request method.