What HTTP Status Code Lookup does
Every HTTP response starts with a three-digit status code, and the first digit sets the category: 1xx is informational, 2xx is success, 3xx is redirection, 4xx is a problem with the request and 5xx is a failure on the server. Type a number in the box to get that code's name, class, meaning, whether it is cacheable by default and its usual cause. Type a word instead, such as gateway or permanent, to list every code whose name or meaning contains it. The tool covers the 29 codes that appear in day-to-day web and API work, not the full registry, and all of them are in the chart below.
HTTP status codes list: all 29 codes in the lookup
Names and meanings are as the tool returns them. Clear the search box with All classes selected to produce the same list.
| Code | Name | Meaning | Common cause |
|---|---|---|---|
| 100 | Continue | Headers received; the client should send the request body. | A client sent Expect: 100-continue before a large upload. |
| 101 | Switching Protocols | The server is changing protocol, usually to WebSocket. | A WebSocket handshake succeeded. |
| 200 | OK | The request succeeded and the response carries the result. | Normal successful request. |
| 201 | Created | The request succeeded and created a new resource. | A POST that created a record; the Location header points at it. |
| 202 | Accepted | The request was accepted but processing has not finished. | Work was queued for a background job. |
| 204 | No Content | Success, and there is deliberately no response body. | A DELETE succeeded, or a PUT that returns nothing. |
| 206 | Partial Content | Only the requested byte range is being returned. | Video seeking or a resumed download using a Range header. |
| 301 | Moved Permanently | The resource has permanently moved to the Location URL. | A permanent URL change; browsers cache this aggressively. |
| 302 | Found | The resource is temporarily at a different URL. | A temporary redirect, often after a login. |
| 303 | See Other | Fetch the result from another URL using GET. | Post/Redirect/Get, to stop a form resubmitting on refresh. |
| 304 | Not Modified | The cached copy is still current, so no body is sent. | A conditional request matched an ETag or Last-Modified value. |
| 307 | Temporary Redirect | Like 302, but the method and body must be preserved. | A temporary redirect that must not turn a POST into a GET. |
| 308 | Permanent Redirect | Like 301, but the method and body must be preserved. | A permanent move for an endpoint that receives POSTs. |
| 400 | Bad Request | The request is malformed and the server will not process it. | Invalid JSON, a missing required field or a malformed header. |
| 401 | Unauthorized | Authentication is required or the credentials failed. | A missing, expired or invalid token. |
| 403 | Forbidden | The server understood the request but refuses to authorise it. | Authenticated but lacking permission, or blocked by file permissions. |
| 404 | Not Found | No resource matches this URL. | A wrong URL, a deleted page or a broken route. |
| 405 | Method Not Allowed | The URL exists but does not support this HTTP method. | A POST to an endpoint that only accepts GET. |
| 409 | Conflict | The request conflicts with the resource's current state. | A duplicate record, or an edit against a stale version. |
| 410 | Gone | The resource existed but has been permanently removed. | Deliberate, permanent removal of a page. |
| 413 | Payload Too Large | The request body exceeds the server's limit. | An upload above the configured maximum body size. |
| 415 | Unsupported Media Type | The body's Content-Type is not supported. | Sending form data to an endpoint that only accepts JSON. |
| 422 | Unprocessable Content | The syntax is valid but the content fails validation. | Well-formed JSON that breaks a business rule. |
| 429 | Too Many Requests | The client has been rate limited. | Exceeding a rate limit; check the Retry-After header. |
| 500 | Internal Server Error | The server hit an unexpected condition. | An unhandled exception; the generic catch-all server fault. |
| 501 | Not Implemented | The server does not support the functionality required. | An HTTP method the server does not recognise at all. |
| 502 | Bad Gateway | A proxy received an invalid response from an upstream server. | The application behind nginx or a load balancer crashed or is not listening. |
| 503 | Service Unavailable | The server is temporarily unable to handle the request. | Maintenance mode or overload; Retry-After says when to come back. |
| 504 | Gateway Timeout | A proxy timed out waiting for an upstream server. | The upstream application took longer than the proxy's timeout. |
413 is named Content Too Large in the current HTTP specification (RFC 9110); Payload Too Large is the earlier name and still the one most servers print. 422 was formerly Unprocessable Entity.
301 vs 302 vs 303 vs 307 vs 308: which redirect to use
The five redirect codes differ on two points: whether the move is permanent, and whether a POST is allowed to become a GET on the way.
| Code | Permanent? | Request method after redirect | Use it for |
|---|---|---|---|
| 301 Moved Permanently | Yes | Clients may change POST to GET | A page or site that has moved for good |
| 302 Found | No | Clients may change POST to GET | A short-lived detour, such as sending a visitor to a login page |
| 303 See Other | No | Always GET | Showing a result page after a form POST |
| 307 Temporary Redirect | No | Method and body preserved | A temporary move of an endpoint that receives POST or PUT |
| 308 Permanent Redirect | Yes | Method and body preserved | A permanent move of an API endpoint |
What different searches return
Each result is what the lookup returns for the entry shown.
An exact code
301, All classes
301 Moved Permanently. Class: 3xx — Redirection. Cacheable by default: Yes. Common cause: a permanent URL change; browsers cache this aggressively. Related codes: 308 Permanent Redirect.
The first two digits
40
6 matching codes: 400, 401, 403, 404, 405 and 409.
A number matches every code that starts with those digits, so 5 lists all five 5xx codes.
A keyword
gateway
2 matching codes: 502 Bad Gateway and 504 Gateway Timeout.
A keyword that is narrower than it looks
redirect
2 matching codes: 307 Temporary Redirect and 308 Permanent Redirect.
301, 302 and 303 do not contain the word. To see all six 3xx codes, clear the box and set Limit to class to 3xx.
A word found in meanings, not names
permanent
3 matching codes: 301 Moved Permanently, 308 Permanent Redirect and 410 Gone.
A code outside the list
418
Nothing matched "418". Try a number such as 404, or a word such as "redirect".
Who has to fix it: 4xx client errors vs 5xx server errors
| You see | Whose side | First thing to check |
|---|---|---|
| 400 or 422 | The request | The request body: JSON syntax for 400, field values and validation rules for 422 |
| 401 | The request | Whether a token or session is being sent, and whether it has expired |
| 403 | The request, or server access rules | The account's permissions, then file permissions and firewall or IP rules |
| 404 | The request URL | Spelling, trailing slashes and whether the route or file still exists |
| 405 or 415 | The request | The HTTP method for 405; the Content-Type header for 415 |
| 429 | The client's request rate | The Retry-After header, then back off and retry later |
| 500 | The server | The application's error log for an unhandled exception |
| 502 or 504 | The server, behind a proxy | Whether the upstream application is running, and how long it takes to answer |
| 503 | The server | Maintenance mode, exhausted workers or connections, and Retry-After |
Retrying an unchanged request rarely fixes a 4xx. A 502, 503 or 504 is often temporary and worth retrying after a pause.
What Cacheable by default means
A response is cacheable by default when a browser or CDN is allowed to store and reuse it even though the server sent no Cache-Control or Expires header. RFC 9110 gives that status to 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414 and 501. Any other code is cached only when the response carries explicit freshness information.
The field in the tool is a quick guide for the codes it covers. It shows Yes for the codes in that list, and also for 304 and 403. A 304 is not stored on its own; it tells the cache that the copy it already holds is still good. 403 is not on the RFC list, so send a Cache-Control header if you want a 403 response reused. In practice, set Cache-Control explicitly on anything where caching matters, particularly 301 redirects, which browsers can keep for a very long time.
Using HTTP Status Code Lookup
- 1
Type a number such as 404 in Status code or keyword to see the full entry for that code.
- 2
Or type a word such as gateway, timeout or permanent to list every code whose name or meaning contains it.
- 3
Use Limit to class to restrict results to 1xx, 2xx, 3xx, 4xx or 5xx. Clear the box and pick a class to list that whole class.
- 4
Read Class, Meaning, Cacheable by default and Common cause in the detail panel for an exact match.
- 5
Check the table underneath for other matches, for example 308 Permanent Redirect when you look up 301.