Understanding HTTP Status Codes
Every HTTP response carries a three-digit status code that tells you, at a glance, what happened. The first digit sets the category; the rest gives the specifics. Knowing the classes turns a cryptic number into a clear next step.
The five classes
- 1xx — Informational: the request was received, processing continues (rarely seen directly).
- 2xx — Success: the request worked.
- 3xx — Redirection: further action (usually following a new URL) is needed.
- 4xx — Client error: the request was wrong (bad URL, no permission, bad input).
- 5xx — Server error: the request was fine but the server failed to fulfil it.
The ones you'll actually see
- 200 OK — success, the standard healthy response.
- 301 Moved Permanently — the URL has permanently changed; passes SEO value to the new one.
- 302 / 307 Found / Temporary Redirect — a temporary redirect; the original URL stays canonical.
- 304 Not Modified — the cached copy is still valid; nothing re-sent.
- 400 Bad Request — the server couldn't parse the request.
- 401 Unauthorized — authentication required or failed.
- 403 Forbidden — authenticated but not allowed.
- 404 Not Found — the resource doesn't exist.
- 429 Too Many Requests — you're being rate-limited.
- 500 Internal Server Error — a generic server-side failure.
- 502 Bad Gateway — an upstream server returned an invalid response.
- 503 Service Unavailable — the server is overloaded or down for maintenance.
- 504 Gateway Timeout — an upstream server didn't respond in time.
4xx vs 5xx: whose fault is it?
The dividing line is responsibility. A 4xx means the client sent something the server can't or won't handle — fix the request, the URL, or the credentials. A 5xx means the request was valid but the server broke — the fix is on the server or its upstreams, and there's usually nothing the client can do but retry.
What to do with them
- Seeing 200 but the page looks wrong → the status is fine; the problem is in the page content or client rendering.
- 301/302 chains → each hop adds latency; collapse long redirect chains.
- Sudden 5xx spike → check server logs, backend health, and recent deploys.
- Unexpected 403/401 → check auth config, permissions, and any WAF/firewall rules.
Frequently asked questions
Is a 3xx status an error?
No. 3xx codes are redirects — the request succeeded but points you to another URL. They're normal, though long chains of them add latency and should be kept short.
What's the difference between 502 and 503?
A 502 Bad Gateway means a proxy got an invalid response from an upstream server. A 503 Service Unavailable means the server itself is temporarily unable to handle the request, often due to overload or maintenance.