Every HTTP response carries a three-digit status code, and most of the time you never see it -- the page just loads. You run into them when something breaks: a broken link, a failed API call, a deploy that returns the wrong page. Knowing what the number means saves you from guessing.
The first digit is the category
You don't need to memorize all 60+ codes. The first digit tells you the class of response:
- 1xx -- informational, rare to see directly
- 2xx -- success
- 3xx -- redirection, the resource moved
- 4xx -- client error, something about the request was wrong
- 5xx -- server error, the server failed to handle a valid request
That alone tells you where to start looking: a 4xx means check the request (URL, auth, permissions), a 5xx means check the server (logs, crash reports, dependencies).
The codes you'll actually run into
200 OK -- the request succeeded. 201 Created shows up after a successful POST that made something new, like a submitted form.
301 vs 302 trips people up constantly. A 301 means "this moved permanently" -- search engines transfer the old page's ranking to the new URL. A 302 means "this moved temporarily" -- rankings stay put and the old URL is expected to come back. Using 302 for a permanent redirect (or vice versa) is a common, quietly damaging SEO mistake.
400 Bad Request means the server couldn't parse what you sent -- malformed JSON, a missing required field. 401 Unauthorized means you're not authenticated at all; 403 Forbidden means you are authenticated but not allowed to do this specific thing. Mixing those two up in an API's error messages is a common source of confused bug reports.
404 Not Found is the one everyone knows. 410 Gone is its less common cousin -- it tells search engines the page isn't just missing, it was deliberately removed and isn't coming back, which is a stronger signal to drop it from the index than a 404.
429 Too Many Requests means you've been rate-limited. 500 Internal Server Error is a generic "something broke" on the server side, while 503 Service Unavailable usually means the server is up but temporarily can't handle the request -- overloaded, or down for maintenance.
Why this matters beyond debugging
Status codes aren't just for developers reading logs. They affect SEO (redirect types), affect how browsers cache responses, and affect how monitoring tools decide whether your site is "up." A site returning 200 for a page that should be a 404 (a "soft 404") can confuse both crawlers and uptime checks, since everything looks fine on the surface while the actual content is an error page.
When you're checking your own site's headers -- confirming a redirect actually returns 301 instead of 302, or seeing what status an API endpoint returns -- the HTTP Header Checker shows you the full response headers for any URL, and the HTTP Status Codes reference lists every code and what it means when you need to look one up fast.