HTTP Status Codes for SEO: The Complete Reference

No Comments
TL;DR

Every URL a crawler touches returns an HTTP status code, and Google acts on that code. 2xx means index it, 3xx means follow the redirect, 4xx means the page is gone for the client, and 5xx (plus 429) means slow down and come back later. Permanent redirects (301, 308) pass signals and replace the old URL; temporary ones (302, 307) keep the original in the index. A 404 lingers for weeks while a 410 is dropped faster. Short-lived 503 and 429 responses are crawl-safe, but if they persist beyond a couple of days Google drops the URLs. Never use 403 or 404 to throttle Googlebot. The codes below are the ones that move SEO outcomes.

Status codes are the quiet layer of technical SEO. Visitors rarely see them, but every crawler reads them on every request, and the wrong code in the wrong place can quietly drop a page from the index or stall your crawl budget. This is the complete reference: what each SEO-relevant code means, how search engines treat it, and when it matters.

For the deep dives on the trickiest comparisons, this guide links out to the dedicated references on 301 vs 302 redirects, 404 vs 410 status codes, and 5xx server errors and SEO.

How search engines treat each class of status code

The first digit of the code tells the crawler which family it belongs to, and each family triggers a different behavior in Googlebot.

2xx: Success

A 2xx response means the request succeeded and the server returned content. Google considers 2xx pages for indexing and reads the body to decide whether the content is useful. The catch is the soft 404: a page that returns 200 but shows an error, an empty result, or a thin placeholder. Google's systems may classify these as soft 404s and treat them as missing, because the server says "success" while the page says "nothing here."

3xx: Redirection

A 3xx response tells the crawler the resource lives somewhere else. Google follows redirects and consolidates signals based on whether the redirect is permanent or temporary. Server-side redirects are the cleanest signal; long redirect chains dilute the message and waste crawl budget.

4xx: Client errors

A 4xx response means the request failed on the client side, most often because the page does not exist or is forbidden. Pages returning 4xx are not considered for indexing, and a URL that previously existed will be removed from the index. The one exception is 429, which Google treats like a 5xx.

5xx: Server errors

A 5xx response means the server failed to fulfill a valid request. Google interprets 5xx (and 429) as a temporary problem and slows its crawl rate in case the crawling itself is contributing to the load. Brief 5xx errors cost nothing in rankings; sustained ones lead to dropped URLs.

The SEO-relevant status codes, one by one

200 OK

What it means: The request succeeded and the page returned normally.
SEO impact: This is the state every indexable page should be in. Confirm that your important URLs return a genuine 200 and that error or empty pages do not return 200 by mistake, which creates soft 404s.

301 Moved Permanently

What it means: The page has permanently moved to a new URL.
SEO impact: Google transfers indexing signals to the destination and replaces the old URL in results over time. This is the default choice for permanent moves, site migrations, and consolidating duplicate URLs. See 301 vs 302 redirects for the full comparison.

302 Found

What it means: The page has temporarily moved.
SEO impact: Google keeps the original URL in the index and does not move ranking signals to the destination. Use 302 only when the move is genuinely short-term. A 302 left in place for a permanent move can delay consolidation.

304 Not Modified

What it means: The content has not changed since the crawler last fetched it, so the server returns no body.
SEO impact: This is a caching efficiency response, not a move or an error. It does not affect indexing and helps conserve crawl budget by saving bandwidth, but it is not a substitute for any redirect or removal code.

307 Temporary Redirect

What it means: A strict temporary redirect that preserves the request method.
SEO impact: Treated like a 302 for ranking purposes, with the original URL retained. One important nuance: the 307 a browser shows for HSTS is generated internally by the browser, not sent by the server. Googlebot does not see that internal HSTS 307; it follows the real underlying redirect instead.

308 Permanent Redirect

What it means: A strict permanent redirect that preserves the request method.
SEO impact: Treated like a 301, passing signals to the destination and marking it canonical. Choose 308 over 301 when the request method matters, such as form submissions or API endpoints that rely on POST, PUT, or PATCH.

401 Unauthorized

What it means: The page requires authentication that was not supplied.
SEO impact: Crawlers cannot access the content, so it will not be indexed. This is appropriate for gated areas, but make sure public pages never return 401 by accident.

403 Forbidden

What it means: The server understood the request but refuses to serve it.
SEO impact: The page will not be indexed. Critically, Google warns against using 403 (or 404) to rate-limit Googlebot, because doing so can lead to content being removed from Search. Use 503 or 429 to throttle instead.

404 Not Found

What it means: The page does not exist.
SEO impact: Not indexed, and previously indexed URLs are removed, though a 404 can linger in the index for weeks while Google waits to see if it returns. A genuine 404 for a truly missing page is correct and normal; it does not harm the rest of your site. See 404 vs 410 status codes.

410 Gone

What it means: The page existed but is intentionally and permanently removed.
SEO impact: A clearer signal than 404. Google often drops a 410 URL faster, sometimes within a single crawl cycle, because the removal is explicitly deliberate. Use 410 when you are certain the content will never come back.

429 Too Many Requests

What it means: The client is sending requests too quickly.
SEO impact: Although it is a 4xx code, Google treats 429 like a 5xx: it slows crawling rather than removing content, and it can honor a Retry-After header. This is one of the correct ways to rate-limit Googlebot. Sustained 429 responses beyond a couple of days will still cause URLs to be dropped.

500 Internal Server Error

What it means: A generic server-side failure.
SEO impact: Google slows crawling and returns later to retry. Occasional 500s are tolerated, but persistent ones reduce crawl frequency and eventually risk de-indexing. Fix the root cause rather than masking it.

502 Bad Gateway

What it means: A server acting as a gateway or proxy received an invalid response from upstream.
SEO impact: Treated as a temporary server error like other 5xx codes. Frequent 502s often point to overloaded backends or misconfigured proxies and should be resolved quickly to protect crawl rate.

503 Service Unavailable

What it means: The server is temporarily unavailable, often for maintenance or overload.
SEO impact: The crawl-safe way to signal a planned outage. A short-lived 503 with a Retry-After header tells Google to come back later and does not cost rankings. Persistent 503s lasting days or weeks cause Google to reduce crawl frequency and then drop the affected URLs. See 5xx server errors and SEO.

504 Gateway Timeout

What it means: A gateway or proxy did not get a timely response from upstream.
SEO impact: Another temporary 5xx that slows crawling. Repeated 504s signal slow or unresponsive backends; persistent timeouts erode crawl budget and can lead to de-indexing if left unfixed.

Quick reference table

CodeMeaningHow Google treats itSEO takeaway
200OKConsidered for indexingTarget state for every indexable page
301Moved PermanentlyPasses signals, replaces old URLDefault for permanent moves
302Found (temporary)Keeps original in indexShort-term moves only
304Not ModifiedNo indexing effectCaching efficiency, saves crawl budget
307Temporary RedirectLike 302; HSTS 307 not seen by GooglebotMethod-preserving temporary move
308Permanent RedirectLike 301Permanent move that preserves method
401UnauthorizedNot indexedKeep public pages off this code
403ForbiddenNot indexed; risky for rate limitingNever use to throttle Googlebot
404Not FoundRemoved, but lingers for weeksCorrect for genuinely missing pages
410GoneDropped faster than 404Use for deliberate permanent removal
429Too Many RequestsTreated like 5xx; slows crawlingA correct way to rate-limit crawlers
500Internal Server ErrorSlows crawling, retries laterFix promptly; persistence risks indexing
502Bad GatewayTemporary server errorCheck proxies and backends
503Service UnavailableCrawl-safe if brief; drops if sustainedUse with Retry-After for maintenance
504Gateway TimeoutTemporary server errorFix slow backends to protect crawl budget

When each code actually matters

During a migration: 301 and 308 do the heavy lifting. Map old URLs to their closest new equivalents, avoid chains, and verify the redirects resolve in a single hop.

During maintenance or load spikes: 503 with a Retry-After header is the safe choice, and 429 is the right answer when a specific client is hitting you too hard. Both tell Google to slow down without threatening your index, as long as they are temporary.

When retiring content: 404 is fine for ordinary missing pages, while 410 is the stronger signal when you want removal handled quickly and permanently. If a removed page has a clear replacement, a 301 to that replacement preserves more value than either.

For gated or private content: 401 and 403 keep pages out of the index by design, but they must never touch URLs you actually want ranked.

Common status code mistakes

  • Soft 404s. Error pages, empty search results, and out-of-stock pages that return 200 confuse Google. Return a real 404 or 410, or show genuine content.
  • Using 302 for permanent moves. This keeps the old URL in the index and delays signal consolidation. Switch to 301 once a move is permanent.
  • Rate-limiting with 403 or 404. Google explicitly warns this can remove content from Search. Use 503 or 429 instead.
  • Long redirect chains. Each extra hop dilutes signals and burns crawl budget. Redirect straight to the final destination.
  • Leaving 5xx errors unfixed. A brief blip is harmless, but days of 5xx or 503 responses lead to dropped URLs. Treat sustained server errors as urgent.
  • Returning 200 for redirected pages via JavaScript. Client-side redirects are weaker than server-side codes. Prefer real 3xx responses whenever possible.
Not sure which status codes your site is actually returning?

A technical audit surfaces soft 404s, redirect chains, accidental 403s, and server errors that quietly drain your crawl budget and rankings.

Request an advanced SEO audit

Frequently asked questions

Do 404 errors hurt my SEO?

A 404 for a page that genuinely no longer exists is normal and does not harm the rest of your site. Problems arise only when important pages return 404 by accident, or when you use 404 to rate-limit crawlers.

Should I use 404 or 410 for removed pages?

Both keep the page out of the index. Use 410 when the removal is deliberate and permanent, since Google often drops 410 URLs faster. Use 404 for ordinary missing pages. If a replacement exists, a 301 is usually better than either.

What status code should I return during maintenance?

Return 503 Service Unavailable with a Retry-After header. This tells Google the outage is temporary and to come back later, protecting your rankings. Avoid leaving it in place for more than a couple of days.

Is a 302 redirect bad for SEO?

Not when used correctly for genuinely temporary moves. The problem is using 302 for a permanent move, which keeps the old URL indexed and delays signal consolidation. For permanent changes, use 301 or 308.

Can I use 429 to slow down Googlebot?

Yes. Even though 429 is a 4xx code, Google treats it like a 5xx and slows crawling rather than removing content. It is one of the few safe ways to throttle crawlers, but sustained 429 responses for more than a couple of days can still drop URLs.

Does a 304 Not Modified affect my rankings?

No. A 304 is a caching response that tells the crawler the content is unchanged, saving bandwidth and crawl budget. It does not move, remove, or de-index anything.

Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.

    About SEO ProCheck

    Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.

    Work With Me

    Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.

    Subscribe to our newsletter!

    More from our blog