HTTP Status Codes

All HTTP status codes explained – from 200 OK and 301 redirects to 404, 429 and 503, plus common unofficial codes from nginx and Cloudflare.

Runs locally in your browser
70 codes
  • 100
    Continue

    The client may send the request body.

    RFC 9110
  • 101
    Switching Protocols

    The server switches protocols, e.g. to WebSocket.

    RFC 9110
  • 102
    Processing

    The request is still being processed (WebDAV).

    RFC 2518
  • 103
    Early Hints

    Preliminary headers so the browser can preload resources.

    RFC 8297
  • 200
    OK

    The request succeeded.

    RFC 9110
  • 201
    Created

    A new resource was created.

    RFC 9110
  • 202
    Accepted

    The request was accepted but is processed later.

    RFC 9110
  • 203
    Non-Authoritative Information

    Successful, but the content was modified by a proxy.

    RFC 9110
  • 204
    No Content

    Successful, there is no content to return.

    RFC 9110
  • 205
    Reset Content

    Successful; the client should reset the form or view.

    RFC 9110
  • 206
    Partial Content

    Only part of the resource is returned (range request, e.g. video streaming).

    RFC 9110
  • 207
    Multi-Status

    Several status values for several resources (WebDAV).

    RFC 4918
  • 208
    Already Reported

    Members were already listed earlier in the response (WebDAV).

    RFC 5842
  • 226
    IM Used

    The response is the result of instance manipulations (delta encoding).

    RFC 3229
  • 300
    Multiple Choices

    Several representations are available.

    RFC 9110
  • 301
    Moved Permanently

    The resource has moved permanently; search engines update the URL.

    RFC 9110
  • 302
    Found

    Temporary redirect; the method may change to GET.

    RFC 9110
  • 303
    See Other

    Redirect to another resource with GET, e.g. after a form submission.

    RFC 9110
  • 304
    Not Modified

    The cached version is still valid.

    RFC 9110
  • 305
    Use Proxy

    Deprecated: the resource must be accessed through a proxy.

    RFC 9110
  • 307
    Temporary Redirect

    Temporary redirect; method and body stay the same.

    RFC 9110
  • 308
    Permanent Redirect

    Permanent redirect; method and body stay the same.

    RFC 9110
  • 400
    Bad Request

    The request is malformed or invalid.

    RFC 9110
  • 401
    Unauthorized

    Authentication is required or has failed.

    RFC 9110
  • 402
    Payment Required

    Reserved for future use; sometimes used for paywalls or quotas.

    RFC 9110
  • 403
    Forbidden

    Access is denied – logging in does not help.

    RFC 9110
  • 404
    Not Found

    The resource does not exist.

    RFC 9110
  • 405
    Method Not Allowed

    The method (e.g. POST) is not allowed for this resource.

    RFC 9110
  • 406
    Not Acceptable

    No representation matches the Accept headers.

    RFC 9110
  • 407
    Proxy Authentication Required

    Authentication with the proxy is required.

    RFC 9110
  • 408
    Request Timeout

    The server waited too long for the request.

    RFC 9110
  • 409
    Conflict

    The request conflicts with the current state, e.g. an edit conflict.

    RFC 9110
  • 410
    Gone

    The resource was permanently removed.

    RFC 9110
  • 411
    Length Required

    The Content-Length header is missing.

    RFC 9110
  • 412
    Precondition Failed

    A precondition (e.g. If-Match) is not met.

    RFC 9110
  • 413
    Content Too Large

    The request body is too large.

    RFC 9110
  • 414
    URI Too Long

    The URL is too long.

    RFC 9110
  • 415
    Unsupported Media Type

    The content type is not supported.

    RFC 9110
  • 416
    Range Not Satisfiable

    The requested range lies outside the resource.

    RFC 9110
  • 417
    Expectation Failed

    The Expect header cannot be fulfilled.

    RFC 9110
  • 418
    I'm a teapot

    April fools’ joke: the server is a teapot and refuses to brew coffee.

    RFC 2324
  • 421
    Misdirected Request

    The request reached a server that cannot answer it.

    RFC 9110
  • 422
    Unprocessable Content

    The content is well-formed but semantically invalid (e.g. validation errors).

    RFC 9110
  • 423
    Locked

    The resource is locked (WebDAV).

    RFC 4918
  • 424
    Failed Dependency

    The request failed because a previous one failed (WebDAV).

    RFC 4918
  • 425
    Too Early

    The server does not want to process a possibly replayed request.

    RFC 8470
  • 426
    Upgrade Required

    The client must switch to another protocol, e.g. TLS.

    RFC 9110
  • 428
    Precondition Required

    The request must be conditional (e.g. If-Match) to prevent lost updates.

    RFC 6585
  • 429
    Too Many Requests

    Rate limit exceeded – try again later (see Retry-After).

    RFC 6585
  • 431
    Request Header Fields Too Large

    The request headers (e.g. cookies) are too large.

    RFC 6585
  • 451
    Unavailable For Legal Reasons

    Blocked for legal reasons, e.g. a court order.

    RFC 7725
  • 499
    Client Closed Requestunofficial

    Unofficial (nginx): the client closed the connection before the response.

    nginx
  • 500
    Internal Server Error

    An unexpected error on the server.

    RFC 9110
  • 501
    Not Implemented

    The server does not support the requested function.

    RFC 9110
  • 502
    Bad Gateway

    A gateway or proxy got an invalid response from the upstream server.

    RFC 9110
  • 503
    Service Unavailable

    The server is temporarily unavailable, e.g. overloaded or under maintenance.

    RFC 9110
  • 504
    Gateway Timeout

    A gateway or proxy did not get a timely response from the upstream server.

    RFC 9110
  • 505
    HTTP Version Not Supported

    The HTTP version is not supported.

    RFC 9110
  • 506
    Variant Also Negotiates

    Configuration error in content negotiation.

    RFC 2295
  • 507
    Insufficient Storage

    The server has no space to store the result (WebDAV).

    RFC 4918
  • 508
    Loop Detected

    An infinite loop was detected (WebDAV).

    RFC 5842
  • 510
    Not Extended

    Further extensions are required (obsolete).

    RFC 2774
  • 511
    Network Authentication Required

    Login to the network is required, e.g. a hotel Wi-Fi portal.

    RFC 6585
  • 520
    Web Server Returned an Unknown Errorunofficial

    Unofficial (Cloudflare): the origin server sent an empty or unexpected response.

    Cloudflare
  • 521
    Web Server Is Downunofficial

    Unofficial (Cloudflare): the origin server refused the connection.

    Cloudflare
  • 522
    Connection Timed Outunofficial

    Unofficial (Cloudflare): no connection to the origin server.

    Cloudflare
  • 523
    Origin Is Unreachableunofficial

    Unofficial (Cloudflare): the origin server cannot be reached (e.g. wrong DNS).

    Cloudflare
  • 524
    A Timeout Occurredunofficial

    Unofficial (Cloudflare): the origin server took too long to respond.

    Cloudflare
  • 525
    SSL Handshake Failedunofficial

    Unofficial (Cloudflare): the TLS handshake with the origin failed.

    Cloudflare
  • 526
    Invalid SSL Certificateunofficial

    Unofficial (Cloudflare): the certificate of the origin server is invalid.

    Cloudflare

About this tool

Every response from a web server starts with a three-digit status code. It tells the browser whether everything worked (2xx), whether it should look elsewhere (3xx), whether the request was faulty (4xx) or the server has a problem (5xx). Anyone running websites, developing APIs or troubleshooting comes across these codes all the time.

The overview explains all official codes according to RFC 9110 and other standards, plus common unofficial ones such as 499 from nginx or the 52x errors from Cloudflare. Search by code, class or keyword. Which codes an address actually returns is shown by the HTTP Header Checker; which services run on which ports by the Port Lookup.

How it works

  1. Enter a status code, e.g. 429, or a keyword like “timeout”.
  2. Filter by class if needed, e.g. only redirects (3xx).
  3. Read the name, meaning and the underlying standard.
  4. Unofficial codes are marked – they come from individual servers or services.

Frequently asked questions

What is the difference between 301 and 302?

301 is a permanent redirect: search engines adopt the new address and browsers remember it. 302 is temporary – the old URL remains the right one. If method and body must be preserved (e.g. for POST), use 308 or 307.

When 401 and when 403?

401 Unauthorized actually means “not logged in”: with valid credentials it works. 403 Forbidden means access stays forbidden even when logged in, e.g. due to missing permissions or a block.

What to do about 502, 503 or 504?

These codes point to problems behind the web server: 502 means a proxy got a broken response, 503 that the service is overloaded or under maintenance, 504 that the response took too long. As a visitor, waiting is usually all you can do; as an operator, check the logs of the application behind the proxy.

Does the code 418 really exist?

“I’m a teapot” comes from an April fools’ RFC from 1998 about coffee pots. It is not a real standard but is supported by many frameworks and occasionally used for easter eggs or to fend off bots.