How to use the HTTP status code list
- Type a code (404), part of a name (gateway) or a word from the meaning (cache) into the filter box.
- Use Client error, Server error or one of the other class buttons to show a single group of codes.
- Click a code to copy it.
The five classes
The first digit tells you what kind of answer the server gave. A client that meets a code it doesn’t know treats it like the x00 code of its class, so an unknown 4xx is handled like 400.
| Class | Meaning |
|---|---|
| 1xx Informational | An interim reply. The request is still going. |
| 2xx Success | The request worked. |
| 3xx Redirection | The client has to go somewhere else, or use its cached copy. |
| 4xx Client error | Something is wrong with the request: the URL, the login or the data sent. |
| 5xx Server error | The request looked fine, but the server failed to answer it. |
The codes you’ll meet most
- 200 OK: the normal answer. A “page not found” message served with a 200 is called a soft 404, and search engines may index it as a real page. Missing pages should return a real 404.
- 301, 302, 307 and 308: 301 and 308 mean moved for good, 302 and 307 mean moved for now. The difference between the pairs is that 307 and 308 make the browser repeat the request exactly, while with 301 and 302 a POST may turn into a GET. For an ordinary page, 301 or 308 for a permanent move is all you need.
- 304 Not Modified: the browser asked whether its cached copy was still current and the server said yes. Nothing is wrong. This saves bandwidth.
- 400 Bad Request: the request itself is broken, often a malformed URL, an oversized cookie or invalid JSON in an API call. If a URL has unusual characters, check how they’re encoded with the URL encoder.
- 401 vs 403: log in to fix a 401. A 403 means the account, IP address or file permissions don’t allow access.
- 404 vs 410: both mean the page isn’t there. 410 says it was removed on purpose and won’t come back, which is a clearer signal when you delete content for good.
- 429 Too Many Requests: you hit a rate limit. Wait and retry, and respect the Retry-After header if there is one.
- 500 Internal Server Error: a crash or misconfiguration on the server. Check the error log.
- 502, 503 and 504: these usually come from a proxy, load balancer or CDN in front of your app. 502 means the app behind it sent back nonsense or crashed, 504 means it took too long, and 503 means the service is down or overloaded. For planned maintenance, send a 503 with Retry-After so crawlers come back later instead of treating pages as gone.
Renamed codes
RFC 9110, the current HTTP standard from 2022, renamed two codes. 413 was Payload Too Large and is now Content Too Large. 422 was Unprocessable Entity and is now Unprocessable Content. The table uses the new names, but older docs and libraries still show the old ones. The numbers and their meaning didn’t change.