A page request resolving to status codes 200, 301, 404, and 500, illustrating the full range of HTTP status codes

HTTP Status Codes: The Complete Guide

By ProURLMonitor Team

Every time a browser or a crawler requests a page, the server sends back a status code along with it. Most of the time nobody notices — the page loads, the code was 200, life goes on. But those codes are also how you find out when something's actually wrong: a page that's disappeared, a server that's struggling, a redirect that's gone somewhere unexpected.

This guide covers what HTTP status codes are, what each range means, how they relate to SEO, and how to check them across more than one page at a time. For status-specific detail, see the dedicated guides linked throughout — this one's meant to give you the full map, not repeat everything that's on each of those pages.

What Are HTTP Status Codes?

An HTTP status code is a three-digit number a server includes in its response to any request. It's grouped by its first digit into five classes, each with a distinct meaning:

  • 1xx — Informational. The request was received and processing continues.
  • 2xx — Success. The request was understood and handled correctly.
  • 3xx — Redirection. The resource has moved, and the client should follow a new location.
  • 4xx — Client error. Something about the request itself was the problem.
  • 5xx — Server error. The request was valid, but the server failed to fulfill it.

These aren't arbitrary — they're defined in the HTTP specification maintained by the IETF, and every browser, crawler, and HTTP client relies on the same meanings. That consistency is what lets a search engine crawler, a monitoring tool, and your own browser all interpret a "404" the same way.

1xx: Informational

You'll rarely see these directly — they're used mid-request (for example, 100 Continue, telling a client it's fine to send the rest of a large request body) and aren't something you need to check for or troubleshoot on a typical website.

2xx: Success

The response your site should be returning for essentially everything visitors and crawlers actually reach. 200 OK is the overwhelming majority case. Others exist for more specific situations — 201 Created after a resource is created, 204 No Content when a request succeeded but there's nothing to send back, 206 Partial Content for range requests (like resuming a large file download). All of these are genuinely successful responses, not just 200.

3xx: Redirection

A redirect tells the client the resource has moved. 301 Moved Permanently is the standard choice for a lasting change and signals to search engines that the new URL should be treated as canonical going forward. 302 Found is temporary — the original URL is expected to return, and its canonical status generally doesn't transfer to the new location the way a 301's does. 307 and 308 behave like 302 and 301 respectively, but additionally guarantee the request method and body are preserved across the redirect.

Multiple redirects chained together (A → B → C) add latency and are worth cleaning up, but a single redirect to a working destination is completely normal and not something to "fix." If you need to inspect a redirect's exact hops, our Redirect Checker traces the full chain; a bulk status check typically just shows you the final resolved status instead.

4xx: Client Error

The most common one by far is 404 Not Found — the requested page doesn't exist at that URL. We cover this in depth, including soft 404s and the 404-vs-410 distinction, in our dedicated 404 error guide.

Two others worth knowing: 401 Unauthorized (the request needs authentication) and 403 Forbidden (the server understood the request but refuses it, regardless of credentials) are frequently confused with each other and with a dead link — they usually mean the resource is intentionally protected, not gone. See our 401 vs 403 guide for the exact distinction and how to tell them apart. 429 Too Many Requests means the server is rate-limiting — often temporary, not a permanent failure.

5xx: Server Error

A 500 Internal Server Error is a generic catch-all meaning something failed on the server side while handling an otherwise valid request — covered in our HTTP 500 error guide. 503 Service Unavailable specifically means the server is temporarily unable to handle requests (overloaded or under maintenance) and may include a Retry-After header suggesting when to try again — see our 503 status code guide for the details, including how it differs from a 500.

Quick Reference: Common Status Code Meanings

CodeMeaning
200OK — the request succeeded
201Created — a new resource was created successfully
204No Content — succeeded, nothing to return
206Partial Content — a range request (e.g. resuming a download) succeeded
301Moved Permanently — treat the new URL as canonical going forward
302Found — a temporary redirect; the original URL is expected to return
307Temporary Redirect — like 302, but preserves the request method
308Permanent Redirect — like 301, but preserves the request method
401Unauthorized — authentication is missing or invalid
403Forbidden — understood, but access is refused regardless of credentials
404Not Found — nothing exists at this URL
410Gone — deliberately, permanently removed
429Too Many Requests — temporarily rate-limited
500Internal Server Error — a generic server-side failure
503Service Unavailable — temporarily overloaded or under maintenance

HTTP Status Codes and SEO

The honest, nuanced version: status codes matter for SEO, but not uniformly, and not as absolutely as "every error hurts rankings" implies.

Google's own crawling documentation treats a clean 404 as a useful signal — it tells crawlers to stop revisiting a URL that's genuinely gone, which is efficient, not wasteful. What actually costs you crawl attention and user trust is a large, ongoing volume of unintentional broken links (typos, un-redirected page moves) that visitors and crawlers keep running into, and — worse — soft 404s, where a page claims success but shows error content, confusing crawlers in a way a real 404 doesn't.

Persistent 5xx errors are more clearly a problem: if Google's crawlers repeatedly can't retrieve a page due to server errors, that page's crawling and indexing can be delayed or dropped. A single transient 503 during a deploy is normal; a site that's frequently down is a different situation entirely.

How to Check HTTP Status Codes

For one URL: open your browser's developer tools, go to the Network tab, and reload the page — the status code for the main document (and every resource on it) is right there. Fine for a one-off check, tedious for anything more.

For many URLs at once: paste a list into the HTTP Status Checker — up to 500 URLs per scan — or use its built-in website crawler to pull URLs directly from your XML sitemap (including nested sitemap indexes) instead of collecting them by hand. Each result shows the final status after any redirects are followed, the final destination URL, and whether it needs a closer look (a protected 401/403, a temporary 429, a possibly-transient 5xx) rather than a flat "broken."

When to Use Which Tool

These tools overlap in subject matter but answer different questions:

  • HTTP Status Checker — "what's the current status of this list of URLs?" Best for a manually curated list or a full sitemap sweep.
  • Broken Links Checker — "what links, on this page or discovered from this sitemap, actually work?" Discovers the links for you rather than requiring a pre-built list.
  • Redirect Checker — "exactly how does this one URL redirect, hop by hop?" The right tool when you need chain-level detail, not just a final status.

A Simple Troubleshooting Workflow

  1. Run a bulk check across your important pages (or your whole sitemap) at least monthly, and immediately after any migration or redesign.
  2. Separate confirmed failures from ones that need review. A 404/410 is a real fix candidate; a 401/403/429/5xx deserves a second look before you assume it's broken.
  3. Fix by cause, not by reflex. Restore accidentally deleted content, redirect intentionally moved pages to a genuinely relevant destination, and leave a real, permanent removal as a 404 or 410 rather than redirecting it somewhere unrelated.
  4. Re-check after fixing. Confirm the URL now resolves the way you intended before moving on.

Frequently Asked Questions

What is an HTTP status code?

It's a three-digit code a server sends back with every response to a page request, telling the browser (or crawler, or any other client) what happened — whether the request succeeded, got redirected, or failed, and roughly why. You don't normally see it, but your browser and every search engine crawler read it on every single request.

What do the different HTTP status code ranges mean?

1xx means the request is still being processed. 2xx means it succeeded. 3xx means the resource has moved and the client should follow a new location. 4xx means the client's request was the problem (a missing page, a permissions issue). 5xx means the server itself failed to fulfill an otherwise valid request.

Do HTTP status codes affect SEO?

Indirectly, and unevenly across the ranges. A single 404 for a page that's genuinely gone is a normal, expected signal, not a ranking penalty. Persistent server errors (5xx) or a large, uncorrected volume of broken links are a different story — those can genuinely affect how much of your site gets crawled and indexed promptly.

What's the difference between a 404 and a 410?

Both mean the page isn't there. A 404 (Not Found) is the general case and doesn't claim to know whether the page might come back. A 410 (Gone) is a deliberate statement that the removal is permanent, which can help a search engine drop the URL from its index a bit faster. See our full 404 error guide for more on when to use each.

What is a soft 404?

A soft 404 is when a page returns a success-range status code (typically 200) but the actual content says something like "page not found." Search engines try to detect these and treat them as errors anyway, but it's a confusing, avoidable signal — the safer approach is to have a genuinely missing page return a real 404 or 410.

How do I check HTTP status codes on my website?

For a single URL, your browser's developer tools (Network tab) show the status code for any request. For checking many URLs at once, a dedicated tool is faster — our HTTP Status Checker checks up to 500 URLs per scan, either pasted directly or discovered from your XML sitemap.

Does a redirect (3xx) ever show up as its own status in a bulk check?

Not usually. Most status-checking tools, including ours, follow a redirect automatically and report the final destination's status — so a URL that permanently redirects to a working page typically shows as a 200, not a 301. If you need to see the redirect itself (the hop, the exact code, any chain), that's what a dedicated redirect checker is for.

Try Our Free SEO Tools

Put what you learned into action with our free SEO analysis tools.