HTTP Status Codes Reference

Runs in browser

Complete HTTP status codes reference. Search 1xx–5xx codes with descriptions.

Complete HTTP status codes reference: 1xx informational, 2xx success, 3xx redirects, 4xx client errors, 5xx server errors. Descriptions, use cases, and MDN links. Search all codes instantly.

HTTP Status Codes Reference tool

Click any row to expand · Hover to copy code + phrase

1xxInformational4
100Continue

The server has received the request headers and the client should proceed to send the request body.Useful for large payloads — client checks the server will accept before sending body.

MDN docs →
101Switching Protocols

The server agrees to switch protocols as requested by the client.Used when upgrading to WebSocket or HTTP/2.

MDN docs →
102Processing

The server has received and is processing the request, but no response is available yet.Used by WebDAV to prevent request timeout.

MDN docs →
103Early Hints

Used to return response headers before the final HTTP message.Enables preloading of resources while the server prepares a response.

MDN docs →
2xxSuccess10
200OK

Standard success response. The request has succeeded.GET → return resource. POST → describe result. PUT/PATCH → return updated resource.

MDN docs →
201Created

The request succeeded and a new resource was created.Should include a Location header pointing to the new resource.

MDN docs →
202Accepted

The request has been accepted for processing, but processing is not complete.Used for async operations. Response may include a way to track processing.

MDN docs →
203Non-Authoritative Information

The request succeeded but the response is from a transforming proxy.The enclosed content is from a third party source, not the origin server.

MDN docs →
204No Content

The request succeeded but there is no content to return.Common response for DELETE and PUT when no body should be returned.

MDN docs →
205Reset Content

Tells the client to reset the document view that sent this request.Used for clearing a form after submission.

MDN docs →
206Partial Content

The server is delivering only part of the resource due to a range header.Used for resumable downloads and streaming media.

MDN docs →
207Multi-Status

Conveys information about multiple resources in a single response.WebDAV extension. Body contains XML with individual status for each resource.

MDN docs →
208Already Reported

The members of a DAV binding have already been enumerated.WebDAV extension to prevent duplicate enumeration in a 207 response.

MDN docs →
226IM Used

The server has fulfilled a GET request, and the response represents the result of one or more instance manipulations.Used for HTTP delta encoding.

MDN docs →
3xxRedirection7
300Multiple Choices

The request has more than one possible response. The client should choose one.Rarely used in practice.

MDN docs →
301Moved Permanently

The resource has been permanently moved to a new URL.Browsers cache this redirect. Update your links. Use 308 to preserve the HTTP method.

MDN docs →
302Found

The resource is temporarily at a different URI.Browsers often change POST to GET on redirect. Use 307 to preserve method.

MDN docs →
303See Other

The server redirects the client to a different resource with GET.Used after POST to redirect to a confirmation page (PRG pattern).

MDN docs →
304Not Modified

The resource has not changed since the version specified by the request headers.Client uses If-None-Match or If-Modified-Since. No body is returned — use cached copy.

MDN docs →
307Temporary Redirect

The resource is temporarily at a different URI. Method and body must not change.Like 302 but guarantees the same HTTP method is used after redirect.

MDN docs →
308Permanent Redirect

The resource has been permanently moved. Method and body must not change.Like 301 but guarantees the same HTTP method is used after redirect.

MDN docs →
4xxClient Errors29
400Bad Request

The server cannot process the request due to client error (invalid syntax, invalid framing, etc.).Include error details in the response body so the client knows what to fix.

MDN docs →
401Unauthorized

The client must authenticate itself to get the requested response.Despite the name, this means unauthenticated. Use 403 for authenticated but forbidden.

MDN docs →
402Payment Required

Reserved for future use. Originally intended for digital payment systems.Some APIs use this for rate limiting or paywall scenarios.

MDN docs →
403Forbidden

The client is authenticated but does not have access rights to the content.Unlike 401, the client's identity is known. Revealing the resource exists is intentional.

MDN docs →
404Not Found

The server cannot find the requested resource.Can also be used instead of 403 to hide resource existence from unauthorized users.

MDN docs →
405Method Not Allowed

The request method is known but not supported for the target resource.Response must include an Allow header listing supported methods.

MDN docs →
406Not Acceptable

The server cannot produce a response matching the Accept headers.Server-driven content negotiation failed. Client should use different Accept headers.

MDN docs →
407Proxy Authentication Required

The client must authenticate with a proxy.Similar to 401 but for proxy access.

MDN docs →
408Request Timeout

The server timed out waiting for the request.Server wants to shut down this unused connection. Client may repeat the request.

MDN docs →
409Conflict

The request conflicts with the current state of the resource.Common for edit conflicts, duplicate creation, or state machine violations.

MDN docs →
410Gone

The resource is permanently deleted with no forwarding address.More specific than 404. Tells clients to remove links to the resource.

MDN docs →
411Length Required

The server refuses to accept the request without a defined Content-Length.Add a Content-Length header to the request.

MDN docs →
412Precondition Failed

The server does not meet one of the preconditions set by the client.Conditional request failed — If-Match or If-Unmodified-Since header mismatch.

MDN docs →
413Content Too Large

The request body is larger than the server is willing or able to process.Previously called 'Payload Too Large'. Server may close connection or return Retry-After.

MDN docs →
414URI Too Long

The URI requested is longer than the server is willing to interpret.Usually caused by converting a POST to GET with long query parameters.

MDN docs →
415Unsupported Media Type

The media format of the request data is not supported by the server.Check Content-Type and Content-Encoding headers.

MDN docs →
416Range Not Satisfiable

The range specified in the Range header cannot be fulfilled.The range is outside the size of the resource.

MDN docs →
417Expectation Failed

The expectation given in the Expect request header could not be met.The server cannot meet the requirements of the Expect: 100-continue header.

MDN docs →
418I'm a teapot 🫖

The server refuses to brew coffee because it is a teapot.An April Fools' joke from RFC 2324 (1998). Some APIs use it for easter eggs.

MDN docs →
421Misdirected Request

The request was directed at a server that is not able to produce a response.Server is not configured to handle the combination of scheme and authority in the request.

MDN docs →
422Unprocessable Content

The request was well-formed but the server is unable to process the contained instructions.Semantic errors — the body is valid JSON/XML but fails validation rules.

MDN docs →
423Locked

The resource that is being accessed is locked.WebDAV extension.

MDN docs →
424Failed Dependency

The request failed because it depended on another request that failed.WebDAV extension.

MDN docs →
425Too Early

The server is unwilling to risk processing a request that might be replayed.Prevents replay attacks in early data (0-RTT) TLS connections.

MDN docs →
426Upgrade Required

The client should switch to a different protocol.The server refuses to perform the request using the current protocol.

MDN docs →
428Precondition Required

The origin server requires the request to be conditional.Prevents the 'lost update' problem — clients must use If-Match for updates.

MDN docs →
429Too Many Requests

The user has sent too many requests in a given amount of time.Include Retry-After header to tell the client when to try again.

MDN docs →
431Request Header Fields Too Large

The server is unwilling to process the request because its header fields are too large.Reduce the size of request headers (e.g. large cookies).

MDN docs →
451Unavailable For Legal Reasons

The server is denying access due to a legal demand to do so.Named after Fahrenheit 451. Include Link header pointing to the demand.

MDN docs →
5xxServer Errors11
500Internal Server Error

The server encountered an unexpected condition that prevented it from fulfilling the request.Catch-all for server-side errors. Don't leak stack traces to clients.

MDN docs →
501Not Implemented

The server does not support the functionality required to fulfill the request.The request method is not recognized or the server lacks the capability.

MDN docs →
502Bad Gateway

The server received an invalid response from an upstream server.Common when a reverse proxy (nginx/load balancer) cannot reach the backend.

MDN docs →
503Service Unavailable

The server is temporarily unable to handle the request.Include Retry-After header. Used for maintenance, overload, or cold starts.

MDN docs →
504Gateway Timeout

The gateway or proxy did not receive a timely response from an upstream server.The backend took too long to respond. Check for slow queries or network issues.

MDN docs →
505HTTP Version Not Supported

The server does not support the HTTP protocol version used in the request.Rare in modern deployments.

MDN docs →
506Variant Also Negotiates

Transparent content negotiation for the request results in a circular reference.Server configuration error in content negotiation.

MDN docs →
507Insufficient Storage

The server is unable to store the representation needed to complete the request.WebDAV extension.

MDN docs →
508Loop Detected

The server detected an infinite loop while processing the request.WebDAV extension.

MDN docs →
510Not Extended

Further extensions to the request are required for the server to fulfill it.The server requires the request to use an extension not supported.

MDN docs →
511Network Authentication Required

The client needs to authenticate to gain network access.Used by captive portals (hotel WiFi, etc.).

MDN docs →

🔒 Runs in your browser · No uploads · Your data never leaves your device

How to use

  1. Filter by category

    Click 1xx, 2xx, 3xx, 4xx, or 5xx to filter to that range. Click All to see every status code.

  2. Search for a code

    Type a code number or keyword (e.g. '429', 'rate limit', 'not found') to filter instantly.

  3. Expand for details

    Click any row to expand and see the full description, usage notes, and a link to MDN documentation.

Common use cases

  • Choosing the right error code for an APILook up 4xx codes to decide whether a validation error should return 400, 422, or 409 based on its semantics.
  • Understanding a third-party API responseSearch by code number to quickly understand what a 429, 502, or 418 response means from an external service.

Examples

  • API error codes

    Search '4xx' or click the 4xx filter to see all client errors.

    Output
    400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests…

Frequently asked questions

What is the difference between 401 and 403?
401 Unauthorized means the client is not authenticated — it needs to log in. 403 Forbidden means the client is authenticated but doesn't have permission. The naming is confusing by historical accident.
When should I use 422 vs 400?
Use 400 for malformed requests (invalid JSON, missing required headers). Use 422 for semantically invalid requests (valid JSON but field values fail validation rules).
Is 418 I'm a Teapot a real status code?
Yes, it was defined in RFC 2324 as an April Fools' joke in 1998. It was kept in the HTTP standard as a historical artifact. Some APIs use it for easter eggs.

Key concepts

4xx error
HTTP status codes in the 400–499 range indicating a client error — the request was malformed, unauthorized, or contained invalid data.
5xx error
HTTP status codes in the 500–599 range indicating a server error — the server failed to fulfill a valid request.

You might find these useful too.

More network tools