HTTP Status Code Lookup — What 404, 502 and 429 Actually Mean

Enter a status code, or paste a response line and a log fragment, and get what the number promises, what the browser does next, and where to look first — for 200 and 204, for 301, 302, 303, 307 and 308, for the whole 4xx family and for 502 versus 504. Includes whether repeating the request is safe. Everything runs locally in your browser.

B · Every code in the table

Click a row to look it up

What the first digit carries

One code carries three facts at once

A status code is one number carrying three different claims: what the server thinks it finished, what the client should do next, and whose problem the failure is. Under time pressure all three get read out of a single digit, which is how 401 ends up described as a permissions bug, 304 as a caching failure and 502 as “the site is down”.

The lookup takes a code — typed in, or lifted out of a status line or a log fragment you pasted — and lays the three claims side by side: the range it belongs to, when the server produces it, what the browser or client does immediately afterwards, and the thing worth checking first. A fourth column answers the question that costs the most money to get wrong: whether repeating the request is safe.

The ranges carry the meaning

Only the first digit is guaranteed to be meaningful. The five ranges are what the protocol actually defines behaviour for:

  • 1xx is not an answer. It is a step inside the request, and a browser never shows it to you.
  • 2xx means the server accepted the request. Not that what you wanted happened: 200 with an error page in the body, and 202 for a job that fails an hour later, are both honest 2xx.
  • 3xx means one more step, and the four flavours differ in two axes only: permanent or temporary, and whether the verb and body must survive the hop. 301 and 308 are remembered by the client, 302 and 307 are not; 303 forces a GET, 307 and 308 forbid it.
  • 4xx means the server is refusing to do anything with this request. It says nothing about whether you could make it succeed.
  • 5xx means the request was acceptable and the server could not carry it out. Note that on a site behind a load balancer, the 5xx you see may have been generated by the box in front rather than by the application.

Reading a pasted line

The text box accepts a status line (HTTP/1.1 302 Found, HTTP/2 204), a log fragment ("GET /api/cart HTTP/1.1" 502 0), or anything else that contains a standalone three-digit number. Order of confidence:

  1. A real status line wins, and the reason phrase after it is compared with the registered name. Phrases are free text — 404 Not Found and 404 MISSING mean the same thing to every client, and only the number is read.
  2. Otherwise the first three-digit number that stands alone is used, and the note says so. Byte counts and ports usually sit inside longer digit runs, so word boundaries keep 1024 and 2026-10-03 from being mistaken for codes; a genuine collision still gets reported in the note rather than hidden.
  3. If the code box is filled as well, it wins, because typing it was a deliberate act. When the two disagree, the note says which was used.

A URL in that box does nothing: it is read as text and never visited.

Whether to send it again

The “Repeat the request?” answer is one of four, and it belongs to the code rather than to your situation:

  • Yes, as it was — 408, 425, 502, 504. The server did not act on the first attempt.
  • Only after waiting — 429 and 503, where Retry-After is the whole point of the response.
  • Check for side effects — 409, 413, 422, 428, 431, 451, 499, 500, 507, 511 and the rest of the ambiguous ones. The request may have been partly carried out before it failed, so a blind retry can apply it twice.
  • — — the question does not arise (successes, redirects, informational lines).

This is a property of the code, not a promise: a 502 that arrives after the application already wrote to the database is exactly the case the “safe” label cannot see.

Questions

Q: Does it send a request to check? No. The lookup walks a table of codes written out in the script running in the browser — nothing is fetched, and a pasted URL is parsed as text and nothing more.

Q: Why is 499 here if it is not a standard code? Because people meet it in nginx logs every day and it is the clearest example that a status code can describe the observer’s situation rather than the client’s. nginx invented it for “the caller hung up”, which no standard code expresses.

Q: Is 502 or 504 the more serious one? Neither, in protocol terms: both are generated by whatever sits in front. 502 means the upstream answered with something unusable, 504 means it did not answer in time. Which matters more depends entirely on whether the upstream is crash-looping or merely slow — a number cannot separate those.

Q: My code is not in the list. Is the lookup broken? No. Codes in 100–599 that the list does not carry still get the range explained, which is most of what an unfamiliar number can honestly support. Extensions and product-specific codes vary by vendor, and guessing at their name would be less useful than saying so.

Support on PayPal