HTTP status codes — searchable reference
A complete, searchable list of the HTTP status codes you hit while building and debugging APIs and websites, each grouped by class with a plain-English meaning. It is the fastest way to answer “what does this code mean?” without leaving your editor.
How it works
Every response carries a three-digit status code, and the first digit gives its
class: 1xx informational, 2xx success, 3xx redirection, 4xx client error, 5xx
server error. This reference lists the codes you actually encounter, organised into
those five groups, each with its official name and a short description. Typing in
the search box filters the whole table at once, matching the number, the name, or
words in the meaning — so a search for redirect, 404, or rate all find the
relevant rows.
The codes you meet most often
| Code | Name | What it means in practice |
|---|---|---|
| 200 | OK | Request succeeded; body contains the result |
| 201 | Created | Resource created; Location header points to it |
| 204 | No Content | Success with no body (DELETE, no-echo updates) |
| 301 | Moved Permanently | Permanent redirect; update bookmarks and links |
| 302 | Found | Temporary redirect; keep using the original URL |
| 304 | Not Modified | Conditional GET — use your cached copy |
| 400 | Bad Request | Malformed request the server cannot parse |
| 401 | Unauthorized | Authentication missing or failed |
| 403 | Forbidden | Authenticated but permission denied |
| 404 | Not Found | No resource at this URL |
| 409 | Conflict | State conflict — duplicate, version mismatch |
| 422 | Unprocessable Content | Valid syntax but business-rule validation failed |
| 429 | Too Many Requests | Rate limited; check Retry-After header |
| 500 | Internal Server Error | The server failed unexpectedly |
| 502 | Bad Gateway | Upstream returned an invalid response |
| 503 | Service Unavailable | Temporarily down or overloaded |
| 504 | Gateway Timeout | Upstream did not respond in time |
How the classes map to error handling
1xx — Informational: Rarely handled explicitly by application code. 100 Continue tells a client to proceed with a request body; 101 Switching Protocols confirms a WebSocket handshake.
2xx — Success: Pick the most specific one. 201 over 200 for creation, 204 over 200 when you have nothing to return. Clients branch on these codes; using 200 everywhere discards machine-readable signal.
3xx — Redirects: 301 is permanent (clients update bookmarks, search engines transfer PageRank). 302 and 307 are temporary. 304 is a caching response — the body is empty and the client reuses its stored copy.
4xx — Client errors: The request was wrong. Fix it before retrying. Exceptions: 408 Request Timeout and 429 Too Many Requests may be retried after waiting.
5xx — Server errors: The request may have been valid; the server failed. Clients should retry idempotent requests (GET, PUT, DELETE) after a delay. For POST, use an Idempotency-Key header to avoid duplicate effects on retry.
Finding confusing status codes
- 301 vs 302: Permanent vs temporary. Wrong permanent redirect is hard to undo because clients cache it.
- 401 vs 403: Authentication (
401) vs authorization (403). Re-authenticating fixes a401; it will not fix a403. - 404 vs 410: Not found (
404) vs permanently gone (410). Use410when you intentionally retire a URL. - 502 vs 503: Bad gateway response from upstream (
502) vs your own service down/throttled (503).
Search by number, name, or meaning to find the right code instantly. Everything runs in your browser; nothing is uploaded.