HTTP Status Codes
A free, searchable reference for every HTTP status code you are likely to meet. Search by number, name or description, filter by class, and read what each code actually means and when a server should return it.
Status Code Lookup
Search 44 HTTP status codes by number, name or meaning. Everything runs in your browser.
The five status code classes
Every HTTP response opens with a three-digit status code, and it is the fastest diagnostic signal the protocol gives you. The first digit tells you which side of the conversation went wrong, which is usually enough to know whether to inspect your request or go and look at the server.
Why the code matters
Where you meet them
How to use this reference
- 1. Type a number. Enter 404, 50 or any prefix and the list narrows as you type.
- 2. Or search the meaning. Searching "not found", "redirect" or "gateway" matches names and descriptions too.
- 3. Filter by class. Use the 2xx to 5xx tabs to browse a whole class at once.
- 4. Read the context. Each entry shows the reason phrase, the class and what the code is actually for.
Codes worth knowing by heart
A handful of codes account for most of what you will see in logs and devtools.
Key features
- All 44 status codes you are likely to encounter, from 100 to 511
- Search by number prefix, reason phrase or description
- Filter by 2xx, 3xx, 4xx and 5xx class
- Clear explanation of what each code is for
- Shortcuts to the five most looked-up codes
- Runs entirely in your browser, nothing is sent to a server
Reading a status code correctly
The most common mistake is treating any non-200 as a failure. A 304 Not Modified means caching is working. A 301 is how a well-maintained site handles a move. A 429 means your rate limiting is doing its job. What matters is whether the code matches your intent.
The second most common mistake is returning the wrong code deliberately. Answering a missing resource with 200 and an error page hides the problem from crawlers and monitoring alike. Answering a rate limit with 403 leaves clients no way to back off. Returning 500 for a validation error sends your own team hunting a server bug that does not exist. Pick the code that describes what really happened and everything downstream gets easier.
Frequently asked questions
What do the five HTTP status code classes mean?⌄
The first digit sets the class. 1xx is informational, 2xx means the request succeeded, 3xx means the client must follow a redirect, 4xx means the client sent something wrong, and 5xx means the server failed to handle a request that looked valid. Reading that first digit tells you immediately whether to look at your own request or at the server.
What is the difference between a 301 and a 302?⌄
A 301 is permanent: search engines move ranking signals to the new URL and browsers cache the redirect aggressively, sometimes for a very long time. A 302 is temporary and leaves the original URL indexed. Use 301 for a genuine move and 302 for something short-lived, and be careful with 301 because it is hard to undo in a browser cache.
Should a deleted page return 404 or 410?⌄
Either is valid, but they say different things. A 404 means the resource is not here and may or may not come back; a 410 says it is gone deliberately and is not coming back. Search engines drop a 410 URL faster, so use it when you have intentionally removed content and want it de-indexed quickly.
What should an API return when a client is rate limited?⌄
A 429 Too Many Requests, together with a Retry-After header saying how many seconds to wait. Returning 403 or a generic 500 instead leaves clients with no way to behave correctly, so they retry immediately and make the problem worse. Our rate limit calculator works out a sensible Retry-After for you.
What is the difference between 502, 503 and 504?⌄
All three are server-side but point at different layers. A 502 Bad Gateway means a proxy got an invalid response from upstream. A 503 Service Unavailable means the server itself is overloaded or in maintenance and is usually the right code to return deliberately. A 504 Gateway Timeout means the proxy waited for upstream and gave up.