HTTP Status Codes Directory
Instant, searchable guide to standard HTTP response codes, their RFC definitions, and debugging tips.
What are HTTP Status Codes?
HTTP status codes are standard three-digit integers issued by a web server in response to a client request, standardized under IETF RFC 9110. They are divided into five classes: 1xx (Informational), 2xx (Successful), 3xx (Redirection), 4xx (Client Error), and 5xx (Server Error). These codes communicate request outcomes to browsers, APIs, and search engine crawlers.
Continue
RFC 9110Server received initial request headers; client should proceed to send request body.
Switching Protocols
RFC 9110Server agrees to switch protocols as requested by client (e.g., HTTP to WebSocket).
OK
RFC 9110Standard response for successful HTTP requests.
Created
RFC 9110Request succeeded and led to creation of a new resource (usually POST/PUT).
Accepted
RFC 9110Request accepted for asynchronous processing, but processing is not completed.
No Content
RFC 9110Request succeeded, but response body contains no content (e.g., DELETE).
Moved Permanently
RFC 9110Target resource has been assigned a new permanent URI.
Found (Temporary Redirect)
RFC 9110Target resource resides temporarily under a different URI.
Not Modified
RFC 9110Cached version of resource is still fresh; no need to re-download body.
Temporary Redirect
RFC 9110Redirects while preserving original HTTP method (e.g. POST remains POST).
Permanent Redirect
RFC 9110Permanent redirect while strictly preserving original HTTP method.
Bad Request
RFC 9110Server cannot process request due to client error (malformed syntax, invalid JSON).
Unauthorized
RFC 9110Authentication is required and has failed or not been provided.
Forbidden
RFC 9110Server understands request but refuses to authorize it (insufficient permissions).
Not Found
RFC 9110Origin server cannot find current representation for target resource.
Method Not Allowed
RFC 9110Target resource does not support the HTTP method used (e.g., POST on GET route).
Request Timeout
RFC 9110Server closed connection because client took too long to send request.
Conflict
RFC 9110Request conflicts with current state of the resource (e.g., duplicate unique email).
Gone
RFC 9110Resource existed previously but is permanently removed with no forwarding address.
I'm a teapot
RFC 2324RFC 2324 April Fools joke: The server refuses to brew coffee with a teapot.
Unprocessable Entity
RFC 9110Request syntax is valid, but server was unable to process instructions (validation error).
Too Many Requests
RFC 6585User has sent too many requests in a given amount of time (rate limited).
Internal Server Error
RFC 9110Server encountered an unexpected condition that prevented it from fulfilling request.
Bad Gateway
RFC 9110Server acting as gateway/proxy received invalid response from inbound server.
Service Unavailable
RFC 9110Server is currently unable to handle request due to overload or maintenance.
Gateway Timeout
RFC 9110Gateway/proxy did not receive timely response from upstream server.
HTTP Version Not Supported
RFC 9110Server does not support, or refuses to support, the major HTTP version used.
Frequently Asked Questions
What is the difference between 401 Unauthorized and 403 Forbidden?+
A 401 Unauthorized response indicates authentication is required and has either failed or not yet been provided (missing or invalid Authorization header). A 403 Forbidden response indicates the server authenticates the caller identity, but the authenticated user lacks authorization or permissions to access the requested resource.
What is the difference between 301 Moved Permanently and 302 Found?+
A 301 redirect informs search engines and browsers that a resource has permanently relocated to a new URL, transferring SEO link equity and updating caches. A 302 redirect indicates a temporary relocation; search engine crawlers retain the original URL in indexes and browsers re-request the original URL in subsequent sessions.
How do I diagnose and fix a 502 Bad Gateway error?+
A 502 Bad Gateway occurs when an edge reverse proxy (such as NGINX, Cloudflare, or AWS ALB) receives an invalid or terminated response from an upstream backend application. To fix it, check upstream process status (Node.js/Python crashes), ensure internal listening ports match proxy configurations, and inspect backend error logs.
What does 429 Too Many Requests mean and how should clients handle it?+
HTTP 429 indicates that the client has exceeded rate limits within a given time window. Clients should inspect the 'Retry-After' response header to determine the required backoff duration (in seconds or as an HTTP date) before attempting retry requests, applying exponential backoff with jitter.
When should an API endpoint return 204 No Content instead of 200 OK?+
HTTP 204 No Content should be returned when an action succeeds (typically DELETE or PUT operations) but the response payload intentionally contains no body bytes. Browsers and HTTP clients receiving 204 do not update their active document view or attempt to parse JSON.
Testing API endpoints or translating HTTP requests?
Convert cURL commands to JavaScript Fetch, Axios, Python Requests, and Go with our client-side converter.