HTTP status codes explained, from 200 to 503
Every time your browser asks a web server for something, the server answers with a three-digit number before it sends back any HTML, image, or JSON. That number is the HTTP status code, and it is the server's short way of saying what happened: the page is here, it moved, you are not allowed in, or something broke on our side. Most of the time you never see these codes because everything works and the page just loads. But the moment a site misbehaves, the status code is the first clue worth reading.
The numbers are not random. The first digit sorts every response into one of five families, so even an unfamiliar code tells you roughly what went wrong just by its leading number. Learn the five families and you can read almost any response at a glance.

The five classes
1xx informational. The server received your request and is still working on it. These are rare in everyday browsing and usually handled silently between the browser and server. 100 Continue is the classic example, telling a client it is fine to send the rest of a large request body.
2xx success. The request worked. 200 OK is the one you want to see all day long, meaning the resource was found and is on its way back. 201 Created shows up after you submit a form or API call that makes something new, and 204 No Content means the action succeeded but there is nothing to display.
3xx redirection. What you asked for lives somewhere else, and the browser usually follows automatically. Redirects keep old links alive and matter a great deal for search ranking.
4xx client error. Something about the request was wrong on your end: a bad URL, missing login, or a resource that does not exist. The server is healthy; it just cannot accept what you sent.
5xx server error. Your request was fine, but the server stumbled while handling it. These point at the site's infrastructure, not at you.
The specific codes people actually look up
200 OK is plain success. The page or data loaded as expected.
301 Moved Permanently tells browsers and search engines that a page has a new permanent home. This is the SEO-friendly redirect, because it passes ranking signals from the old URL to the new one. Use it when you change a URL for good.
302 Found is a temporary redirect. The original URL is still the real one, so search engines keep indexing it rather than the destination. Reach for 302 only when the move is genuinely short-lived, such as routing users to a seasonal landing page.
304 Not Modified is a quiet hero of fast browsing. It tells the browser that the copy already sitting in its cache is still current, so the server skips resending the file. Less data, faster pages.
400 Bad Request means the server could not even understand the request, often due to malformed syntax or an invalid parameter.
401 Unauthorized roughly translates to "I do not know who you are, please authenticate." You are missing valid credentials.
403 Forbidden is different: the server knows who you are and still refuses. You lack permission, and logging in again will not help.
404 Not Found is the most famous code of all. The server is alive and answered you, but there is nothing at that address. It usually comes from a mistyped link or a page that was deleted or moved without a redirect.
429 Too Many Requests means you have been rate-limited. You sent too many requests in too short a window, and the server is asking you to slow down. APIs use this constantly.
500 Internal Server Error is the generic "something broke" response. The server hit an unexpected condition and gave up, but it does not say what. Check the server logs.
502 Bad Gateway appears when one server, acting as a gateway or proxy, gets an invalid reply from an upstream server behind it. Often a sign that a backend app crashed or is unreachable.
503 Service Unavailable means the server is temporarily overloaded or down for maintenance. Unlike 500, it implies the trouble is short-term and the site should return soon.

What status codes mean for SEO and debugging
For search ranking, the distinction between 301 and 302 is the one that catches people out. A permanent move should always use 301 so that the new page inherits the authority of the old one; a 302 in the wrong place can leave search engines indexing the original URL and splitting your signals. Meanwhile, large numbers of 404s waste crawl budget and frustrate visitors, so it is worth redirecting or fixing broken links rather than leaving them to rot.
For debugging, the family tells you where to look. A 4xx points at the request, so check the URL, headers, and credentials. A 5xx points at the server, so check the application logs, the upstream services, and whether a deploy just went sideways. A wave of 502s and 503s often means a backend is down or overloaded rather than a code bug. You can inspect the exact status a site returns with our developer tools, and when a 5xx looks like a connectivity problem rather than an application fault, a quick DNS lookup can confirm the domain still resolves to the right address.
Frequently asked questions
Is a 404 error bad for my website?
A few 404s are normal and harmless. Problems start when popular pages return 404 or when broken internal links pile up, wasting crawl budget and frustrating visitors. Redirect moved pages and fix bad links.
What is the difference between a 301 and a 302 redirect?
A 301 is permanent and passes ranking signals to the new URL, so use it when a page moves for good. A 302 is temporary and keeps the original URL indexed, so use it only for short-lived moves.
What is the difference between 401 and 403?
A 401 means you have not authenticated, so logging in may fix it. A 403 means the server recognizes you but still denies access because you lack permission, so logging in again will not help.
What does a 500 error mean and how do I fix it?
A 500 Internal Server Error means the server hit an unexpected fault while handling your request. The message is generic on purpose, so the fix usually starts with reading the server logs to find the real cause.
Why am I getting a 429 status code?
A 429 Too Many Requests means you have been rate-limited for sending requests too quickly. Slow down, respect any Retry-After header the server returns, and add backoff to scripts and API clients.
What does 503 Service Unavailable mean?
A 503 means the server is temporarily unable to handle the request, usually due to overload or scheduled maintenance. It signals a short-term issue, so the site should recover on its own shortly.
