← Free tools

HTTP status code reference

Every HTTP status code from 1xx to 5xx with a plain-English description. Search, or link straight to a code, e.g. /tools/http-status-codes/404.

1xx – Informational

100Continue

The initial part of the request has been received and the client should continue with the rest of it.

101Switching Protocols

The server is switching protocols as requested by the client, e.g. to WebSocket.

102Processing

The server has received and is processing the request, but no response is available yet (WebDAV).

103Early Hints

Used to return some response headers before the final HTTP message, e.g. for preloading resources.

2xx – Success

200OK

The request succeeded. The meaning depends on the method: GET returns a resource, POST returns the result of an action.

201Created

The request succeeded and a new resource was created as a result, usually after a POST or PUT.

202Accepted

The request has been received but not yet acted upon. Processing may not have started.

203Non-Authoritative Information

The returned metadata is not exactly the same as from the origin server, but from a local or third-party copy.

204No Content

The request succeeded but there is no content to send back, and the client should keep its current view.

205Reset Content

Tells the client to reset the document view, e.g. clear a form after a successful submit.

206Partial Content

Used when the client requested a range of a resource with a Range header.

218This Is Fine

A non-standard, informal code some Apache/PHP-FPM setups return to indicate an error occurred but was handled gracefully - a reference to the "this is fine" meme.

3xx – Redirection

300Multiple Choices

The request has more than one possible response, and the client should choose one.

301Moved Permanently

The resource has been permanently moved to a new URL, given in the Location header.

302Found

The resource has been temporarily moved to a different URL. The original URL should still be used for future requests.

303See Other

The response can be found at another URL using a GET request, commonly used after a POST.

304Not Modified

The resource has not changed since the version specified by the request headers, so no body is sent.

307Temporary Redirect

Like 302, but the method and body of the original request must be reused for the new request.

308Permanent Redirect

Like 301, but the method and body of the original request must be reused for the new request.

4xx – Client Error

400Bad Request

The server cannot process the request due to a client error, such as malformed syntax.

401Unauthorized

The client must authenticate itself to get the requested response.

402Payment Required

Reserved for future use, occasionally seen for API usage limits or paywalls.

403Forbidden

The client does not have access rights to the content, even though it may be authenticated.

404Not Found

The server cannot find the requested resource. The URL may be wrong or the resource no longer exists.

405Method Not Allowed

The request method is known by the server but is not supported for this resource.

406Not Acceptable

The server cannot produce a response matching the list of acceptable values in the request headers.

407Proxy Authentication Required

Similar to 401, but authentication is needed with a proxy first.

408Request Timeout

The server timed out waiting for the request from the client.

409Conflict

The request conflicts with the current state of the target resource.

410Gone

The requested resource is permanently gone and will not be available again.

411Length Required

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

412Precondition Failed

One of the conditions in the request headers is not met by the server.

413Content Too Large

The request body is larger than the server is willing or able to process.

414URI Too Long

The URL requested by the client is longer than the server is willing to interpret.

415Unsupported Media Type

The media format of the requested data is not supported by the server.

416Range Not Satisfiable

The range specified by the Range header cannot be fulfilled.

417Expectation Failed

The expectation given in the Expect request header could not be met.

418I'm a teapot

A joke response code from an April Fools RFC, sometimes used by servers that refuse to brew coffee.

422Unprocessable Content

The request was well-formed but contains semantic errors, e.g. failed validation.

425Too Early

The server is unwilling to risk processing a request that might be replayed.

426Upgrade Required

The server refuses to perform the request using the current protocol and wants an upgrade.

428Precondition Required

The origin server requires the request to be conditional, to avoid lost update conflicts.

429Too Many Requests

The client has sent too many requests in a given time window (rate limiting).

430Shopify Security Rejection

(Shopify) A non-standard code Shopify returns when a request is blocked by its security systems, often due to suspicious or automated traffic.

431Request Header Fields Too Large

The server is unwilling to process the request because its header fields are too large.

444No Response

(NGINX) The server closes the connection without sending any response, commonly used to silently drop malformed or malicious requests.

451Unavailable For Legal Reasons

The resource is unavailable due to a legal demand, such as government-mandated censorship.

460Client Closed Connection

(AWS ELB) The client closed the connection to the load balancer before the idle timeout elapsed, so no response header was received.

463Malformed X-Forwarded-For Header

(AWS ELB) The load balancer received an X-Forwarded-For header containing more IP addresses than it allows.

464Incompatible Protocol Versions

(AWS ELB) The client and the registered target are using incompatible protocol versions, so the request cannot be forwarded.

494Request Header Too Large

(NGINX) The request header sent by the client is larger than the buffer the server is configured to accept.

495SSL Certificate Error

(NGINX) The client presented an invalid SSL certificate during mutual TLS authentication.

496SSL Certificate Required

(NGINX) The client did not present the SSL certificate required by the server during mutual TLS authentication.

497HTTP Request Sent To HTTPS Port

(NGINX) A plain HTTP request was sent to a port that only accepts HTTPS (TLS) connections.

499Client Closed Request

(NGINX) The client closed the connection before the server could finish sending a response.

5xx – Server Error

500Internal Server Error

A generic error indicating the server encountered an unexpected condition it could not handle.

501Not Implemented

The request method is not supported by the server and cannot be handled.

502Bad Gateway

The server, acting as a gateway or proxy, received an invalid response from the upstream server.

503Service Unavailable

The server is not ready to handle the request, often due to maintenance or overload.

504Gateway Timeout

The server, acting as a gateway or proxy, did not get a response in time from the upstream server.

505HTTP Version Not Supported

The HTTP version used in the request is not supported by the server.

507Insufficient Storage

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

508Loop Detected

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

511Network Authentication Required

The client needs to authenticate to gain network access, e.g. a captive portal.

520Web Server Returned An Unknown Error

(Cloudflare) The origin server returned an empty, unexpected, or otherwise unrecognised response that doesn't match any other 5xx code.

521Web Server Is Down

(Cloudflare) The origin server refused the connection from Cloudflare, usually because it is offline.

522Connection Timed Out

(Cloudflare) Cloudflare could not negotiate a TCP handshake with the origin server in time.

523Origin Is Unreachable

(Cloudflare) Cloudflare could not reach the origin server, often due to DNS or routing problems.

524A Timeout Occurred

(Cloudflare) Cloudflare connected to the origin server but the connection timed out before a response was returned.

525SSL Handshake Failed

(Cloudflare) The SSL/TLS handshake between Cloudflare and the origin server failed.

526Invalid SSL Certificate

(Cloudflare) The origin server's SSL certificate is invalid, expired, or does not match, and strict SSL validation is enabled.

527Railgun Error

(Cloudflare) The connection between Cloudflare and the origin's Railgun server was interrupted (a now-legacy Cloudflare feature).

530Origin DNS Error

(Cloudflare) Cloudflare could not resolve the DNS record for the origin server, usually paired with Cloudflare error 1016.

540Temporarily Disabled

(Shopify) A non-standard code some Shopify endpoints return when a feature or storefront is temporarily unavailable.

561Unauthorized

(AWS ELB) The load balancer's built-in authentication (e.g. for OIDC or Cognito) rejected the request.

598Network Read Timeout Error

(Informal convention) Used by some proxies to indicate the connection to the upstream server timed out while reading a response.

599Network Connect Timeout Error

(Informal convention) Used by some HTTP clients and proxies to indicate the connection to the upstream server timed out before it could even be established.

Other – Non-Standard / Vendor-Specific

0No Response

(AWS ELB) Recorded in load balancer access logs when no status code could be determined, e.g. the client closed the connection before a response, or a health check failed.

783Unavailable

(Shopify) A non-standard status code used internally by some Shopify infrastructure; not part of any official HTTP specification.

HTTP status codes are grouped by their first digit: 1xx codes are informational, 2xx mean success, 3xx mean redirection, 4xx mean the client made a mistake, and 5xx mean the server made a mistake. Every code has its own page, e.g. /tools/http-status-codes/404, so you can share a link straight to the one you need.