
Every time a browser or app talks to a web server, the server answers with a three-digit HTTP status code. Most people only ever notice the famous 404, but there are dozens of codes, and knowing the handful that matter will save you hours of debugging. Here is the practical version, grouped the way I actually think about them when a page misbehaves.
The five families (the first digit is everything)
Status codes are grouped by their first digit, and once that clicks, the rest is easy. 1xx is informational (rare, mostly protocol chatter). 2xx means success. 3xx means redirection — the resource lives somewhere else now. 4xx means the client (you, the browser, the request) did something wrong. 5xx means the server broke. When triage starts, the first question is simply: is the first digit a 4 or a 5? A 4xx is your problem to fix; a 5xx is the server’s.
The codes you will actually meet
| Code | Meaning | When you see it |
|---|---|---|
| 200 | OK | Normal successful page or API response. |
| 201 | Created | A POST created a resource (e.g. a new record). |
| 301 | Moved Permanently | URL changed for good; search engines pass link equity to the new URL. |
| 302 / 307 | Temporary redirect | Short-term move; keep the old URL indexed. |
| 304 | Not Modified | Cached copy is still fresh; saves bandwidth. |
| 401 | Unauthorized | You are not logged in / no valid credentials. |
| 403 | Forbidden | You are authenticated but not allowed. |
| 404 | Not Found | The URL does not exist on the server. |
| 410 | Gone | Deliberately removed — a stronger signal than 404. |
| 429 | Too Many Requests | Rate limited; slow down or back off. |
| 500 | Internal Server Error | Unhandled exception on the server. |
| 502 / 503 / 504 | Bad Gateway / Unavailable / Timeout | Upstream server down, overloaded, or too slow. |
301 vs 302: the one that hurts SEO
This distinction trips up more site owners than any other. A 301 tells Google “this moved permanently, transfer the ranking”; a 302 says “temporary, keep indexing the old one.” If you permanently retire a URL and use a 302, you leak ranking signals. When we consolidate old pages, we always use 301s. You can verify with a quick command: curl -sI https://example.com/old-page | head -1 should print HTTP/2 301 and a Location: header pointing to the new URL.
Fixing the common ones
A 404 usually means a broken link or a deleted file — fix the link or add a 301 to the correct page. A 403 is nearly always file permissions or a directory-index restriction on the server. A recurring 500 means you need to read the server log, because the code alone tells you nothing about the cause. A 503 during traffic spikes points at capacity, and a 429 means an API is throttling you — add exponential backoff rather than hammering the endpoint.
How to inspect codes yourself
In the browser, open DevTools → Network tab and watch the Status column as pages load. From the terminal, curl -I shows only headers, which is perfect for checking redirects and cache behaviour without downloading the whole page. For monitoring a live site, tools like UptimeRobot or a simple cron job that curls your key URLs and alerts on anything that is not 200/301 will catch problems before your visitors do.
Frequently asked questions
Is a 404 bad for SEO?
A few 404s are normal and harmless. The problem is many internal links pointing to 404s, which wastes crawl budget and hurts user experience. Fix internal links or 301-redirect deleted pages to a relevant one.
What is the difference between 401 and 403?
401 means you are not authenticated (no valid login). 403 means you are authenticated but not permitted to access that resource.
Should I use 301 or 302 when moving a page?
Use 301 for a permanent move so search engines transfer ranking signals. Use 302 only for genuinely temporary redirects.
What does a 429 status mean?
Too Many Requests — a server or API is rate-limiting you. Slow the request rate and add exponential backoff before retrying.