Every time a browser or crawler requests a URL, the server answers with a three-digit HTTP status code before it sends anything else. That small number tells Googlebot whether the page exists, has moved, is temporarily unavailable or is gone for good, and Google adjusts crawling and indexing accordingly.
Most of the time you never see these codes. But when they are wrong (a key page returning a 404, a migration built on temporary redirects, or a server throwing intermittent 500 errors) the effect on organic traffic can be immediate and severe.
This guide explains the status codes that matter for SEO, how Google treats each one according to its own documentation, how to check them, and how to prioritise fixes.
Key Takeaways
- Status codes fall into five classes: 1xx informational, 2xx success, 3xx redirection, 4xx client errors and 5xx server errors.
- Only 2xx pages can be indexed; a 200 that shows an error message becomes a "soft 404".
- 301 and 308 are strong signals that the target should be canonical; 302 and 307 are weak signals.
- All 4xx codes except 429 are treated the same by Google and do not slow crawling; 5xx and 429 do.
- Use 503 for short planned downtime, and keep redirect chains to a single hop.
What Are HTTP Status Codes?
HTTP status codes are standardised responses defined by the HTTP specification. MDN's reference groups them into five classes:
| Class | Range | Meaning | SEO relevance |
|---|---|---|---|
| Informational | 100–199 | Request received, continuing | Rarely relevant |
| Success | 200–299 | Request succeeded | Only these can be indexed |
| Redirection | 300–399 | Further action needed, usually a new location | Pass signals to the new URL; affect canonicalization |
| Client error | 400–499 | Problem with the request, such as a missing page | URLs dropped from the index over time |
| Server error | 500–599 | Server failed to fulfil a valid request | Slow crawling; persistent errors cause deindexing |
How Google Handles the Codes That Matter
Google publishes a detailed page on how HTTP status codes affect its crawlers. Here is a practical summary of the codes you will meet most often:
| Code | Name | How Google treats it | When to use it |
|---|---|---|---|
| 200 | OK | Content passed on for indexing (not guaranteed) | Every live page you want in search |
| 204 | No Content | No content received, so nothing to process | APIs, not web pages |
| 301 | Moved Permanently | Strong signal the target should be canonical | Permanent URL changes, migrations, merges |
| 302 | Found | Weak signal the target should be canonical | Genuinely temporary moves |
| 304 | Not Modified | Content unchanged since last crawl | Caching; saves bandwidth |
| 307 | Temporary Redirect | Equivalent to 302 | Temporary moves preserving request method |
| 308 | Permanent Redirect | Equivalent to 301 | Permanent moves preserving request method |
| 404 | Not Found | Content not used; indexed URLs removed over time | Pages that do not exist |
| 410 | Gone | Treated the same as other 4xx errors | Content deliberately and permanently removed |
| 429 | Too Many Requests | Treated as a server error; crawling slows | Rate limiting |
| 500 | Internal Server Error | Crawling slows; persistent errors lead to deindexing | Never deliberately |
| 503 | Service Unavailable | Crawling slows temporarily | Short planned maintenance |
2xx: success and soft 404s
A 200 means the server delivered the page. Google passes the content to indexing, but that does not guarantee it will be indexed; quality and duplication still apply. If a 200 page looks like an error (an empty search result, a "product unavailable" template or a blank page), Search Console may report it as a soft 404. The fix is to return a real 404 or 410, redirect to a genuinely relevant page, or add useful content.
3xx: redirects
Redirects tell crawlers a URL has moved. The permanent/temporary distinction matters because it influences which URL Google treats as canonical. Our detailed comparison of 301 vs 302 redirects covers the decision in depth.
“By default, Google's crawlers follow up to 10 redirect hops.”
— Google Search Central, How HTTP status codes affect Google's crawlers
Ten is a ceiling, not a target. Every extra hop slows users and adds risk, so link directly to final URLs and collapse chains; see our guide to redirect chains and loops.
4xx: client errors
Google does not use content from 4xx URLs, and indexed URLs returning 4xx are removed over time. Importantly, 4xx errors (except 429) do not affect crawl rate, and Google advises against using 401 or 403 to try to limit crawling. Our step-by-step guide to finding and fixing 404 errors explains when to redirect and when to leave a 404 alone.
5xx and 429: server errors
Server errors and 429 responses cause Google to slow crawling temporarily, then gradually speed up again once 2xx responses return. If errors persist, URLs that were indexed are eventually dropped. Recurring 5xx errors are often a hosting capacity problem; reliable SEO hosting is cheaper than lost rankings.
For planned maintenance, Google's guidance on pausing a website recommends returning a 503 with an informational page if you need to disable a site for one or two days, and warns that fully disabling a site should only last a very short period.
How to Check Status Codes
- Browser developer tools: open the Network tab, reload the page and look at the Status column for the document request.
- Command line:
curl -I https://www.example.com/page/returns just the response headers, including the status line. - Site crawlers: Screaming Frog, Sitebulb and Semrush Site Audit report the status of every internal URL and every redirect hop.
- Google Search Console: URL Inspection shows how Googlebot saw a specific URL, the Page indexing report groups 404s, soft 404s, server errors and redirects, and Crawl Stats breaks down responses by status.
- Server logs: the most complete record of what Googlebot actually received. See our log file analysis guide.
A typical response header looks like this:
HTTP/2 301
location: https://www.example.com/new-page/
cache-control: max-age=3600
How to Prioritise Status Code Fixes: Step by Step
- Crawl the whole site and export every non-200 internal URL with its source pages.
- Fix 5xx errors first. They affect crawling site-wide and usually point to server, plugin or database problems.
- Check important pages returning 4xx. Restore them or redirect them to the closest relevant page.
- Redirect removed pages that have backlinks to a genuinely relevant replacement using a 301.
- Update internal links that point to redirects or errors so they go straight to the final 200 URL.
- Flatten redirect chains so every old URL reaches its destination in one hop.
- Review soft 404s in Search Console and return proper status codes for empty or error pages.
- Confirm that your custom 404 page actually returns 404, not 200.
- Monitor Search Console and crawl reports monthly, and always after releases or a site migration.
Common Mistakes
- Custom error pages that return 200. Every broken URL becomes a soft 404 and may be crawled indefinitely.
- Redirecting all 404s to the homepage. The homepage is not a relevant replacement, so users are confused and the redirect rarely preserves the old page's value. Redirect to the closest equivalent page or let the URL return 404.
- Using 302s for permanent moves. It sends a weaker signal about which URL should be canonical.
- Long redirect chains after several redesigns, such as HTTP to HTTPS to www to a new slug.
- Returning 403 or 401 to "slow down" Googlebot. Google says not to; use 503 or 429 temporarily instead.
- Leaving a site on 503 for weeks. Prolonged errors can lead to pages dropping out of the index.
- Ignoring intermittent 500s. They may not show up when you test manually but can appear clearly in logs and Crawl Stats.
Related Guides
- HTTPS and SEO: Why Security Matters
- Log File Analysis for SEO: A Beginner’s Guide
- Website Migration SEO Checklist: Move Without Losing Traffic
Frequently Asked Questions
Which HTTP status code is best for SEO?
For any page you want indexed, 200 OK. For permanently moved pages, a 301 or 308 redirect. For removed pages with no replacement, a 404 or 410. The best code is simply the one that accurately describes what happened to the URL.
Is 404 or 410 better for removed pages?
Google's documentation says all 4xx errors except 429 are treated the same way, so either works. A 410 states explicitly that the page is gone for good, which some teams prefer for intentionally deleted content.
Do 404 errors hurt my rankings?
404s on URLs that should not exist are normal and do not harm the rest of your site. Problems arise when important pages return 404 by mistake, or when valuable pages with backlinks are deleted without a redirect.
How should I take my site offline for maintenance?
Return a 503 Service Unavailable status, ideally with a Retry-After header. Google's guidance says this is suitable for short outages of a day or two; longer outages risk pages being dropped.
What is a soft 404?
A page that returns 200 OK but looks like an error or empty page to Google, such as 'no products found' or a blank template. Fix it by returning a real 404 or 410, or by adding genuine content.
How many redirects will Googlebot follow?
Google's crawlers follow up to 10 redirect hops by default. In practice you should aim for a single hop to keep things fast and reliable.
Conclusion
HTTP status codes are how your server talks to Google. When they accurately describe each URL (200 for live pages, 301 for permanent moves, 404 or 410 for removed content, 503 for brief maintenance) crawling is efficient and your rankings are protected. Check them regularly, fix server errors first and keep redirects short. If pages are being crawled but not indexed, our guide to "Crawled – currently not indexed" covers the next layer of troubleshooting.
Need a full technical health check? Our SEO team audits status codes, redirects and server logs as part of every technical review. Get a free quote today.



