HTTP Status Codes List

Every registered HTTP status code from 100 to 511 with its RFC 9110 name and what it means. Search by code, name or keyword.

Search status codes

1xx Informational

The request was received and the process continues.

  • 100Continue

    The server received the request headers and the client should go ahead and send the body. Used with the Expect: 100-continue header.

    RFC 9110 section 15.2.1

  • 101Switching Protocols

    The server agrees to switch to the protocol the client asked for in the Upgrade header, for example WebSocket.

    RFC 9110 section 15.2.2

  • 102Processing

    WebDAV interim response saying the server is still working on a long request. Defined in RFC 2518 and no longer recommended.

    RFC 2518

  • 103Early Hints

    Lets the browser start preloading resources such as CSS and fonts while the server prepares the final response.

    RFC 8297

  • 104Upload Resumption Supported

    Interim response from the resumable uploads draft, telling the client the server can resume an interrupted upload. A temporary registration that expires on 2026-11-13.

    draft-ietf-httpbis-resumable-upload

2xx Success

The request was received, understood and accepted.

  • 200OK

    The request succeeded. What the body holds depends on the method: the resource for a GET, the result of the action for a POST.

    RFC 9110 section 15.3.1

  • 201Created

    The request succeeded and created a new resource. The Location header usually points to it. Typical reply to a POST that creates something.

    RFC 9110 section 15.3.2

  • 202Accepted

    The request was accepted for processing but is not finished yet. Common for background jobs and queues.

    RFC 9110 section 15.3.3

  • 203Non-Authoritative Information

    The request succeeded, but a proxy changed the response, so the content may differ from what the origin server sent.

    RFC 9110 section 15.3.4

  • 204No Content

    The request succeeded and there is no body to return. Typical reply to a DELETE or to a save that needs no data back.

    RFC 9110 section 15.3.5

  • 205Reset Content

    The request succeeded and the client should reset the form or view that sent it.

    RFC 9110 section 15.3.6

  • 206Partial Content

    The server is sending only the byte range the client asked for in a Range header. Used for resumable downloads and video seeking.

    RFC 9110 section 15.3.7

  • 207Multi-Status

    WebDAV response whose body holds separate status codes for several operations in one request.

    RFC 4918

  • 208Already Reported

    WebDAV response saying the members of a binding were already listed earlier, so they are not repeated.

    RFC 5842

  • 226IM Used

    The server fulfilled a GET with the result of one or more instance manipulations such as delta encoding. Rarely seen.

    RFC 3229

3xx Redirection

The client needs to take another step, usually to a different URL.

  • 300Multiple Choices

    The resource has several representations and the client may pick one. Rarely used because there is no standard way to choose.

    RFC 9110 section 15.4.1

  • 301Moved Permanently

    The resource has a new permanent URL. Search engines pass ranking to the new URL, and clients may change a POST to a GET.

    RFC 9110 section 15.4.2

  • 302Found

    Temporary redirect to the URL in the Location header. Keep using the original URL for future requests. Clients may change a POST to a GET.

    RFC 9110 section 15.4.3

  • 303See Other

    Redirects to another URL that should be fetched with GET, usually after a POST (the post/redirect/get pattern).

    RFC 9110 section 15.4.4

  • 304Not Modified

    The cached copy is still valid, so the server sends no body. Answer to a conditional request with If-None-Match or If-Modified-Since.

    RFC 9110 section 15.4.5

  • 305Use Proxy

    Deprecated. It told the client to repeat the request through a proxy and is no longer used.

    RFC 9110 section 15.4.6

  • 306(Unused)

    Reserved. It was used in an old draft (Switch Proxy) and is now unused.

    RFC 9110 section 15.4.7

  • 307Temporary Redirect

    Temporary redirect that keeps the same method and body, so a POST stays a POST.

    RFC 9110 section 15.4.8

  • 308Permanent Redirect

    Permanent redirect that keeps the same method and body. The permanent counterpart of 307.

    RFC 9110 section 15.4.9

4xx Client error

The request has a problem on the client side.

  • 400Bad Request

    The server cannot process the request because of a client error, such as malformed syntax or an invalid message.

    RFC 9110 section 15.5.1

  • 401Unauthorized

    Authentication is missing or failed. The response should include a WWW-Authenticate header. Despite the name, it is about who you are.

    RFC 9110 section 15.5.2

  • 402Payment Required

    Reserved for future use. Some APIs return it when a payment is due or a plan or quota limit is reached.

    RFC 9110 section 15.5.3

  • 403Forbidden

    The server understood the request but refuses to fulfil it. Logging in again will not help if you lack permission.

    RFC 9110 section 15.5.4

  • 404Not Found

    The server cannot find the requested resource. It may never have existed, or it may be missing for now.

    RFC 9110 section 15.5.5

  • 405Method Not Allowed

    The method (GET, POST, DELETE and so on) is not supported for this URL. The Allow header lists the methods that are.

    RFC 9110 section 15.5.6

  • 406Not Acceptable

    The server cannot produce a response that matches the Accept headers the client sent.

    RFC 9110 section 15.5.7

  • 407Proxy Authentication Required

    Like 401, but the client must authenticate with the proxy first.

    RFC 9110 section 15.5.8

  • 408Request Timeout

    The server gave up waiting for the client to finish sending the request.

    RFC 9110 section 15.5.9

  • 409Conflict

    The request conflicts with the current state of the resource, for example an edit conflict or a duplicate.

    RFC 9110 section 15.5.10

  • 410Gone

    The resource existed and was removed on purpose, with no forwarding address. A clearer signal than 404 that the removal is permanent.

    RFC 9110 section 15.5.11

  • 411Length Required

    The server needs a Content-Length header and the request did not include one.

    RFC 9110 section 15.5.12

  • 412Precondition Failed

    A condition in the request headers, such as If-Match or If-Unmodified-Since, was false on the server.

    RFC 9110 section 15.5.13

  • 413Content Too Large

    The request body is larger than the server is willing to process. Formerly called Payload Too Large.

    RFC 9110 section 15.5.14

  • 414URI Too Long

    The URL in the request is longer than the server accepts. Often caused by a very long query string.

    RFC 9110 section 15.5.15

  • 415Unsupported Media Type

    The server does not support the format of the request body, as given by the Content-Type header.

    RFC 9110 section 15.5.16

  • 416Range Not Satisfiable

    The byte range in the Range header falls outside the size of the resource.

    RFC 9110 section 15.5.17

  • 417Expectation Failed

    The server cannot meet the requirement in the Expect request header.

    RFC 9110 section 15.5.18

  • 418(Unused)

    Reserved by RFC 9110. Best known as the joke code I'm a teapot from the 1998 April Fools RFC 2324 (Hyper Text Coffee Pot Control Protocol).

    RFC 9110 section 15.5.19

  • 421Misdirected Request

    The request reached a server that cannot answer for that host and scheme, which can happen when an HTTP/2 connection is reused.

    RFC 9110 section 15.5.20

  • 422Unprocessable Content

    The request is well formed but the server cannot process its content, for example because validation failed. Formerly called Unprocessable Entity.

    RFC 9110 section 15.5.21

  • 423Locked

    WebDAV: the resource being accessed is locked.

    RFC 4918

  • 424Failed Dependency

    WebDAV: the request failed because an earlier request it depended on failed.

    RFC 4918

  • 425Too Early

    The server will not risk processing a request that might be replayed, such as one sent as TLS early data.

    RFC 8470

  • 426Upgrade Required

    The client must switch to another protocol, named in the Upgrade header, such as TLS.

    RFC 9110 section 15.5.22

  • 428Precondition Required

    The server requires the request to be conditional, which prevents lost updates when two clients edit the same resource.

    RFC 6585

  • 429Too Many Requests

    The client sent too many requests in a given time. A Retry-After header may say when to try again.

    RFC 6585

  • 431Request Header Fields Too Large

    The headers, or a single header such as a very large cookie, are too big for the server.

    RFC 6585

  • 451Unavailable For Legal Reasons

    The server denies access because of a legal demand, such as a court order or censorship. The number nods to Fahrenheit 451.

    RFC 7725

5xx Server error

The server failed to fulfil a valid request.

  • 500Internal Server Error

    The server hit an unexpected error and could not complete the request. A catch-all for bugs and misconfiguration.

    RFC 9110 section 15.6.1

  • 501Not Implemented

    The server does not support the functionality needed to fulfil the request, such as an unknown request method.

    RFC 9110 section 15.6.2

  • 502Bad Gateway

    A gateway or proxy received an invalid response from the upstream server it called.

    RFC 9110 section 15.6.3

  • 503Service Unavailable

    The server is overloaded or down for maintenance. A Retry-After header can say when it will be back.

    RFC 9110 section 15.6.4

  • 504Gateway Timeout

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

    RFC 9110 section 15.6.5

  • 505HTTP Version Not Supported

    The server does not support the HTTP version used in the request.

    RFC 9110 section 15.6.6

  • 506Variant Also Negotiates

    A server configuration error in content negotiation: the chosen variant is itself set up to negotiate.

    RFC 2295

  • 507Insufficient Storage

    WebDAV: the server cannot store what is needed to finish the request.

    RFC 4918

  • 508Loop Detected

    WebDAV: the server found an infinite loop while processing the request.

    RFC 5842

  • 510Not Extended

    Obsolete. It was meant for HTTP extension frameworks, which were never widely used.

    RFC 2774

  • 511Network Authentication Required

    The client must authenticate to gain network access, as on a captive Wi-Fi portal login page.

    RFC 6585

Unofficial codes

Not in the IANA registry. Their meaning depends on the vendor, so check that vendor's documentation.

  • 499Client Closed Request

    nginx logs this when the client closes the connection before the server replies. It is not sent to the client.

    nginx

  • 520Web server returns an unknown error

    Cloudflare could not make sense of the response from the origin server, which crashed, reset the connection or sent bad headers.

    Cloudflare

  • 521Web server is down

    Cloudflare could not connect to the origin server because it is offline or refusing Cloudflare's connections.

    Cloudflare

  • 522Connection timed out

    Cloudflare could not complete a TCP connection to the origin server in time.

    Cloudflare

  • 523Origin is unreachable

    Cloudflare could not reach the origin server, often because of a DNS or routing problem.

    Cloudflare

  • 524A timeout occurred

    Cloudflare connected to the origin server, but it sent no response within the proxy read timeout (125 seconds by default).

    Cloudflare

  • 525SSL handshake failed

    The TLS handshake between Cloudflare and the origin server failed.

    Cloudflare

  • 526Invalid SSL certificate

    Cloudflare could not validate the TLS certificate on the origin server.

    Cloudflare

  • 530Origin DNS error

    Cloudflare could not resolve the origin hostname. The body of the response contains a 1xxx error code with the details.

    Cloudflare

How to use the HTTP status code list

  1. Type a code, a name or a keyword into Search by code, name or keyword: 404, teapot, rate limit, or 5xx for a whole class.
  2. Press 1xx to 5xx or Unofficial to narrow the list. The line under the buttons tells you how many codes match.
  3. Click a code number to link to that entry, for example /tools/http-status-codes#404.

How status codes are grouped

The first digit is the class: 1xx informational, 2xx success, 3xx redirection, 4xx client error and 5xx server error. The list covers every code in the IANA HTTP Status Code Registry (checked October 2026), using the names from RFC 9110 section 15. That includes the 2022 renames: 413 is now Content Too Large and 422 is now Unprocessable Content. A separate Unofficial group holds nginx 499 and Cloudflare 520 to 530, which are common in logs but not standard.

Worked example

On load the search box is empty and the line under the buttons reads Showing all 73 status codes. Type 404 and it reads Showing 1 of 73 status codes, leaving the entry 404 Not Found: "The server cannot find the requested resource. It may never have existed, or it may be missing for now." Clear the box, type redirect and you get 300 to 308, the whole 3xx class, including 301 Moved Permanently.

Codes people mix up

Limits and edge cases

Related: MIME type lookup for Content-Type headers, port lookup for service ports and DNS record types.

Frequently asked questions

What is the difference between a 301 and a 302 redirect?

A 301 Moved Permanently tells browsers and search engines the page has a new permanent address, so ranking signals move to the new URL. A 302 Found is temporary, so the original URL stays the one to keep using and indexing.

What is the difference between 401 and 403?

401 Unauthorized means authentication is missing or failed, so the client should log in or send valid credentials. 403 Forbidden means the server understood the request and refuses it, and signing in again will not help if you lack permission.

What does a 502 Bad Gateway error mean?

A gateway or proxy, such as nginx, Cloudflare or a load balancer, got an invalid response from the server behind it. Visitors can reload after a minute. Site owners should check that the origin server is running and look at its logs.

Which status code should an API return for validation errors?

Use 400 Bad Request when the request itself is malformed, such as broken JSON. Many REST APIs use 422 Unprocessable Content when the request is well formed but a field fails validation.

Is 418 I'm a teapot a real status code?

It began as a joke in RFC 2324, the 1998 April Fools Hyper Text Coffee Pot Control Protocol. RFC 9110 now reserves 418 as unused, although some servers still return it for fun.

Sources: IANA HTTP Status Code Registry, RFC 9110 section 15 and Cloudflare 5xx error documentation.