Skip to main content

HTTP status codes

Every time a web server responds to a request, it returns an HTTP status code — a three-digit number that communicates the outcome of that request. For SEO, understanding these codes is essential because they tell you and Google what happened when a URL was requested: did the page exist, did it move, was there an error?


Why HTTP status codes matter for SEO

Status codes directly affect:

  • Whether a page can be crawled and indexed.
  • Whether link equity passes through redirects.
  • Whether Googlebot receives errors that reduce crawl efficiency.
  • Whether users see the right content when they visit a URL.

Misdiagnosing or ignoring status codes leads to indexation problems, broken redirects, and wasted crawl capacity.


Learning objectives

After completing this module, you will be able to:

  • Interpret HTTP status codes for SEO diagnostics.
  • Choose the correct fixes for redirects, missing pages, and server errors.
  • Audit status codes at scale using crawler tools.

Status code classes

2xx — Success

The request was successful.

CodeNameSEO meaning
200OKPage returned successfully. This is what important, indexed pages should return.
204No ContentRarely used in HTML pages; typically not an SEO concern.

Key point: All your valuable, indexed pages should return 200.


3xx — Redirects

The resource has moved. The browser (or bot) should follow the redirect to the new location.

CodeNameSEO meaning
301Moved PermanentlySignals the move is permanent. Google passes link equity (PageRank) through 301s. Use for permanent URL changes.
302Found (Temporary)Signals the move is temporary. Google may or may not transfer equity. Use only when a move is genuinely temporary.
307Temporary RedirectHTTP/1.1 version of 302. Temporary redirect.
308Permanent RedirectHTTP/1.1 version of 301. Permanent redirect, preserves request method.

301 vs 302 in practice: Google has stated that it treats 301 and 302 similarly in terms of equity, but using 301 for permanent moves remains best practice. Using 302 for permanent changes was a historical cause of indexation confusion — the original URL might remain indexed instead of the destination.

Redirect chains: Multiple redirects in sequence (A → B → C) create additional HTTP requests, slow page load, and dilute efficiency. Minimize chains to a maximum of one redirect hop.


4xx — Client Errors

Something went wrong with the request — typically the requested resource does not exist or is not accessible.

CodeNameSEO meaning
400Bad RequestMalformed request; rarely seen in normal SEO audits.
401UnauthorizedAuthentication required. Googlebot cannot access this content without credentials.
403ForbiddenServer understood the request but refuses to fulfill it. Effectively blocks crawling.
404Not FoundThe URL does not exist. Googlebot will eventually drop indexed 404 pages.
410GoneThe resource is intentionally and permanently removed. Google drops these pages faster than 404s.

404 vs 410: Use 404 when a page has gone missing temporarily or you are unsure. Use 410 explicitly when you have permanently deleted a page and do not want Google to hold it in the index.

Soft 404s: A page that returns a 200 status code but displays "page not found" or similar empty-result content is a soft 404. These are problematic because Google indexes them as real pages. Fix by returning a genuine 404 or 410 status, or by redirecting to a relevant alternative.


5xx — Server Errors

The server encountered an error processing the request.

CodeNameSEO meaning
500Internal Server ErrorCatchall server error. Investigate immediately.
502Bad GatewayUpstream server issue. Often transient.
503Service UnavailableServer temporarily unable to handle requests. If persistent, crawl will be disrupted.
504Gateway TimeoutUpstream timeout. Similar to 502.

5xx impact on SEO: Repeated 5xx errors on important pages prevent crawling and can cause pages to be dropped from the index. A brief 503 during maintenance is acceptable (use Retry-After header). Persistent 5xx errors require urgent technical investigation.


Crawl audit workflow for status codes

Step 1: Crawl the site

Use Screaming Frog, Sitebulb, or similar to crawl all URLs. Export the status code column.

Step 2: Prioritize by impact

PriorityIssue
Critical5xx errors on any page, 4xx on important pages
HighRedirect chains (3+ hops), 302s used for permanent moves
MediumSoft 404s, 404s on recently-linked URLs
Low4xx on irrelevant or obsolete URLs

If a page moved (301) but internal links still point to the old URL, those links send users and bots through an unnecessary redirect. Update internal links to point directly to the final URL.

Step 4: Decide on 404 pages

For each 404:

  • Does the page have inbound backlinks? → Redirect to relevant replacement.
  • Was the page actively receiving traffic? → Redirect to replacement.
  • Was it an orphan page nobody visited? → Leave as 404 or 410.

Step 5: Monitor server reliability

Configure uptime monitoring so 5xx events trigger alerts. Review GSC's "Page indexing" report for server availability errors.


Checklist

  • All important pages return 200.
  • Redirects use 301 for permanent moves.
  • Redirect chains are minimized to single hops.
  • Broken internal links are fixed to point to final destination URLs.
  • 5xx errors are escalated and fixed urgently.
  • Soft 404 patterns are reviewed in GSC and fixed.

Measurement

MetricWhat it tracks
200 rate for important pagesCore page health
4xx URL countBroken links and missing pages
5xx URL countServer reliability issues
Redirect chain countRedirect efficiency
Soft 404 count (in GSC)Hidden crawl and index waste
Internal broken link countLink health within the site

Common mistakes

Redirecting all 404s to the homepage. This creates a "soft 404" from Google's perspective and offers no value to users. Redirect only to genuinely relevant replacement pages.

Using 302 for permanent changes. A 302 signals a temporary move. Google may continue indexing the original URL instead of the destination. Use 301 for all permanent URL changes.

Not fixing internal links after redirects. Even if a redirect passes equity, the internal link still tells bots and users that the old URL is "correct." Update internal links to point directly to final URLs after any migration or URL change.

Ignoring soft 404s. A page returning 200 with "no results" or "product unavailable" content wastes crawl capacity and confuses users. These need genuine status codes or redirects.

Treating all 5xx errors as temporary. A brief 503 during deployment is normal. But repeated 5xx events on specific pages often signal underlying technical issues (broken scripts, database errors) that need developer investigation.