HTTP status codes
Runs entirely in your browser. Your files and data never leave your device.
| 1xxInformational | ||
|---|---|---|
| 100 | Continue | The initial part of a request has been received and the client should continue. |
| 101 | Switching Protocols | The server agrees to switch protocols as requested by the client. |
| 102 | Processing | The server has received and is processing the request, but no response is available yet. |
| 103 | Early Hints | Used to return some response headers before the final HTTP message. |
| 2xxSuccess | ||
| 200 | OK | The request has succeeded. |
| 201 | Created | The request has succeeded and a new resource has been created as a result. |
| 202 | Accepted | The request has been received but not yet acted upon. |
| 203 | Non-Authoritative Information | The returned metadata is not exactly the same as from the origin server. |
| 204 | No Content | The server has fulfilled the request but has no content to send back. |
| 205 | Reset Content | The server asks the client to reset the document that sent this request. |
| 206 | Partial Content | The server is delivering only part of the resource due to a range header sent by the client. |
| 207 | Multi-Status | Conveys information about multiple resources in situations where multiple status codes might be appropriate. |
| 208 | Already Reported | Used inside a DAV response to avoid repeatedly enumerating the members of multiple bindings. |
| 226 | IM Used | The server has fulfilled a request for the resource and the response is a representation of the result of instance manipulations. |
| 3xxRedirection | ||
| 300 | Multiple Choices | The request has more than one possible response and the client should choose one. |
| 301 | Moved Permanently | The resource has been moved permanently to a new URL. |
| 302 | Found | The resource resides temporarily under a different URL. |
| 303 | See Other | The response can be found under a different URL and should be retrieved with GET. |
| 304 | Not Modified | The resource has not been modified since the version specified by the request headers. |
| 305 | Use Proxy | The requested resource must be accessed through the proxy given by the location field. |
| 307 | Temporary Redirect | The resource resides temporarily under a different URL and the method should not change. |
| 308 | Permanent Redirect | The resource has been moved permanently and the method should not change. |
| 4xxClient Error | ||
| 400 | Bad Request | The server cannot process the request due to a client error. |
| 401 | Unauthorized | The client must authenticate itself to get the requested response. |
| 402 | Payment Required | Reserved for future use, originally intended for digital payment systems. |
| 403 | Forbidden | The client does not have access rights to the content. |
| 404 | Not Found | The server cannot find the requested resource. |
| 405 | Method Not Allowed | The request method is known by the server but is not supported by the target resource. |
| 406 | Not Acceptable | The server cannot produce a response matching the list of acceptable values. |
| 407 | Proxy Authentication Required | The client must first authenticate itself with the proxy. |
| 408 | Request Timeout | The server timed out waiting for the request. |
| 409 | Conflict | The request conflicts with the current state of the target resource. |
| 410 | Gone | The requested content has been permanently deleted from the server and will not return. |
| 411 | Length Required | The server refuses to accept the request without a defined Content-Length header. |
| 412 | Precondition Failed | One of the conditions in the request headers was not met. |
| 413 | Payload Too Large | The request entity is larger than limits defined by the server. |
| 414 | URI Too Long | The URI requested by the client is longer than the server is willing to interpret. |
| 415 | Unsupported Media Type | The media format of the requested data is not supported by the server. |
| 416 | Range Not Satisfiable | The range specified by the Range header cannot be fulfilled. |
| 417 | Expectation Failed | The expectation given in the Expect request header could not be met. |
| 418 | I'm a Teapot | The server refuses to brew coffee because it is, permanently, a teapot. |
| 419 | Page ExpiredUnofficial | Non-standard. Laravel returns it when the CSRF token sent with a form doesn't match the session, most often because the session expired while the page was open. |
| 420 | Enhance Your CalmUnofficial | Non-standard. Twitter's old Search and Trends API sent it to clients that were being rate limited; the standard code for that is 429. Spring Framework also defined 420 as Method Failure, now deprecated. |
| 421 | Misdirected Request | The request was directed at a server that is not able to produce a response. |
| 422 | Unprocessable Content | The request was well-formed but was unable to be followed due to semantic errors. |
| 423 | Locked | The resource that is being accessed is locked. |
| 424 | Failed Dependency | The request failed because it depended on another request that failed. |
| 425 | Too Early | The server is unwilling to risk processing a request that might be replayed. |
| 426 | Upgrade Required | The server refuses to perform the request using the current protocol. |
| 428 | Precondition Required | The origin server requires the request to be conditional. |
| 429 | Too Many Requests | The client has sent too many requests in a given amount of time. |
| 431 | Request Header Fields Too Large | The server refuses to process the request because its header fields are too large. |
| 444 | No ResponseUnofficial | Non-standard. An nginx code that closes the connection without sending any response; it appears in the server's logs, never in the browser. |
| 451 | Unavailable For Legal Reasons | The requested resource is unavailable due to a legal demand to deny access. |
| 499 | Client Closed RequestUnofficial | Non-standard. nginx logs it when the client closed the connection before the server finished responding. |
| 5xxServer Error | ||
| 500 | Internal Server Error | The server has encountered a situation it does not know how to handle. |
| 501 | Not Implemented | The request method is not supported by the server and cannot be handled. |
| 502 | Bad Gateway | The server, while acting as a gateway, received an invalid response from the upstream server. |
| 503 | Service Unavailable | The server is not ready to handle the request, often due to maintenance or overload. |
| 504 | Gateway Timeout | The server, while acting as a gateway, did not get a response in time. |
| 505 | HTTP Version Not Supported | The HTTP version used in the request is not supported by the server. |
| 506 | Variant Also Negotiates | The server has an internal configuration error in transparent content negotiation. |
| 507 | Insufficient Storage | The server is unable to store the representation needed to complete the request. |
| 508 | Loop Detected | The server detected an infinite loop while processing the request. |
| 510 | Not Extended | Further extensions to the request are required for the server to fulfill it. |
| 511 | Network Authentication Required | The client needs to authenticate to gain network access. |
| 599 | Network Connect Timeout ErrorUnofficial | A non-standard code used by some proxies to signal a network connect timeout behind the proxy. |
About this tool
This is a reference list of HTTP status codes from 100 through 599, covering the five classes defined in RFC 9110: informational, success, redirection, client error, and server error. Each code shows its name and a short description, and the search box filters the list as you type, matching against the code number, the name, and the description text.
What’s in the list?
All the codes registered under RFC 9110, plus a handful of widely used extras that never made it into the core spec but show up constantly in real APIs: 418 (the “I’m a teapot” joke from RFC 2324), 429 (rate limited), and 451 (unavailable for legal reasons). Type “404” or “not found” or “gateway” and the matching rows stay visible while the rest hide, so you don’t have to scroll through five classes of codes to find the one you’re after. Every row also has its own link, so #419 at the end of the page address jumps straight to that code.
What do unofficial codes like 419 and 420 mean?
Some codes come from one framework or server rather than from an RFC, and the list marks them with an “Unofficial” badge. HTTP 419, Page Expired, comes from Laravel. The framework sends it when the CSRF token submitted with a form doesn’t match your session, usually because the session ran out while the page sat open. HTTP 420, Enhance Your Calm, is what Twitter’s old Search and Trends API returned to clients that sent too many requests. The standard code for that is 429. Spring Framework also used 420 for Method Failure, which is now deprecated. Two nginx codes round it out: 444 closes the connection without any response, and 499 means the client hung up before the server finished. You’ll find both in server logs, not in a browser. The last one is 599, which some proxies use for a network connect timeout.
Does it need an internet connection?
No. The list is static data rendered directly in the page, nothing is fetched from a server when you load it or when you search. That also makes the search instant.
When would I reach for this?
It’s handy when you’re debugging an API response and can’t remember whether 422 means the same thing as 400, or when you’re deciding whether a redirect should send back 301, 302, or 308 and need a reminder of how they differ. It also covers the rarer codes you won’t have memorized, like 409 (conflict), 416 (range not satisfiable), or the distinction between 502 (bad gateway) and 503 (service unavailable). See MDN’s HTTP status code reference for more detail on each one.
The five classes give you a quick first read on any response even before you check the exact number. A code starting with 2 means the request succeeded, 3 means you need to follow a redirect, 4 means something was wrong with the request itself, and 5 means the server is the one that failed. That’s why servers, browsers, and API clients often branch on the first digit alone. You don’t need to be a developer to find this useful either, plenty of ordinary error pages just print a bare number, and this list turns that number into a plain-language sentence.