HTTP status codes are the replies a server sends for every URL. For SEO, they tell Google if a page exists, has moved, is gone or is broken.

Collage of a hand holding up a traffic light on a yellow background

HTTP status codes are the three-digit replies a server sends back every time a browser or crawler asks for a URL. For SEO, they tell Google whether a page exists, has moved, is gone or is broken, and Google decides what to crawl and index based on that answer.

Most people never see them. Your visitors just see a page or an error. Googlebot sees the code first, and the code shapes everything that happens next: whether the URL gets indexed, whether link signals pass to a new address, and how hard Google is willing to crawl your server.

Get them right and Google spends its time on the pages you care about. Get them wrong and you can lose rankings during a migration, bury pages under soft errors or slow down crawling across the whole site.

The five families of status codes

Every status code starts with a digit from 1 to 5, and that first digit tells you the broad outcome. You only need to know a handful of individual codes, but the families are worth learning.

Family Meaning What Google does
1xx Informational, the request is still in progress Nothing you need to worry about
2xx Success, the server returned the content Passes the content on for indexing
3xx Redirection, the content lives somewhere else Follows the redirect and treats the target as a candidate for indexing
4xx Client error, the URL can’t be served Drops the URL from the index over time
5xx Server error, the server failed Slows crawling and eventually drops URLs that keep failing

200 OK: the page loaded

A 200 means the server found the page and sent it. It’s the code every live page should return. It doesn’t guarantee indexing: Google still judges the content, and a page can be blocked with noindex or ignored as a duplicate. But without a 200, the page has no chance.

Watch out for the soft 404. That’s a page that returns 200 but shows an error message, an empty search result or a “product not found” template. Google spots these, labels them soft 404s in Search Console and keeps them out of the index. Worse, they waste crawl time. If a page doesn’t exist, the server should say so with a real 404 or 410.

301 and 308: permanent redirects

A 301 tells Google a page has moved for good. Google treats the new URL as the one to index and moves ranking signals across to it. A 308 does the same job and Google handles it the same way. Use one of these whenever you change a URL, merge two pages or move to a new domain.

Point each old URL at its closest new equivalent. Redirecting everything to the homepage looks like a soft 404 to Google, so the old URL’s value tends to vanish rather than pass on.

302 and 307: temporary redirects

A 302 or 307 says the move is temporary, so Google is more likely to keep the original URL in the index. That’s right for short-lived cases such as a seasonal page or a test. If a temporary redirect stays in place for months, Google may start treating it as permanent anyway, but there’s no reason to leave that to chance. When a move is permanent, use a 301.

Redirect chains and loops

A chain is one redirect pointing to another redirect, and so on. Google follows up to ten hops in a chain, but every hop slows users down and adds risk. A loop sends the crawler round in a circle and the page never loads. After any migration, update internal links to point straight at the final URL rather than relying on redirects.

404 and 410: the page is gone

A 404 means not found. A 410 means gone on purpose. Google drops both from the index, and in practice the difference is small: a 410 may be processed a little faster, but either is fine for pages you’ve removed.

404s are not a penalty. Every site has them, and Google expects old URLs to disappear. They only become a problem when a page that should exist returns one, when your own internal links point to dead URLs, or when a page with good backlinks is deleted without a redirect. Those are the cases to fix.

403, 401 and 429

A 401 or 403 means access is refused. Google treats these much like a 404 for indexing, so never use them to hide content you want ranked. A 429 means too many requests. Google reads it as a sign the server is overloaded and slows its crawling, the same way it treats a 5xx error.

500 and 503: server errors

A 500 means something broke on the server. A 503 means the server is temporarily unavailable. Both cause Google to back off and crawl less. If the errors carry on, Google drops the affected URLs from the index.

Use a 503 for planned maintenance. It tells Google to come back later rather than treat the page as gone. Keep it short, though: a site that returns 503 for days will start to lose pages. Persistent 5xx errors on robots.txt are worse still, as they can stop Google crawling the site at all.

How to check the status codes on your site

You can check a single URL with your browser’s developer tools (the Network tab shows the status of every request) or with the URL Inspection tool in Search Console. For a whole site, you need a crawler.

  1. Run a full crawl with a tool such as Screaming Frog and export every URL that doesn’t return 200.
  2. Fix internal links that point to 3xx or 4xx URLs so they point to the final 200 page.
  3. Add 301 redirects for removed pages that have backlinks or traffic.
  4. Check the Page indexing report in Search Console for soft 404s, server errors and redirect errors.
  5. Look at your server logs to see which codes Googlebot actually received, not just what a crawler saw.

Our guide on how to do a site crawl walks through the first steps in detail. Status codes also sit at the heart of indexability, because a page that doesn’t return 200 can’t be indexed. And log file analysis is the only way to see the codes Googlebot really gets, including intermittent 5xx errors a one-off crawl can miss.

If you’d like a second pair of eyes on redirects, errors and crawl health, our technical SEO agency team can help. Book a free strategy session and we’ll look at your site with you.

Related reading: our guides to technical SEO and robots.txt.

Common questions

Do 404 errors hurt SEO?

Not on their own. Google expects removed pages to return 404, and they don’t count against the rest of your site. They only cost you when a page that should be live returns one, or when a removed page had links or traffic that a redirect could have kept.

Should I use a 301 or a 302 redirect?

Use a 301 when the move is permanent, which covers most URL changes, page merges and domain moves. Use a 302 only when you plan to bring the original URL back.

What is a soft 404?

A soft 404 is a page that returns a 200 status but shows an error or empty content. Google treats it as missing, keeps it out of the index and reports it in Search Console.

What status code should I use during maintenance?

Use a 503 Service Unavailable. It tells Google the outage is temporary so it comes back later instead of removing your pages. Keep the downtime as short as possible.

Matthew Andrews-MillsFave songDeadmanKarnivool · Sound Awake, 2009

Matt is the Search Lead at Circulate, with over 7 years of experience in SEO strategy, technical fundamentals and content creation. He's led in-house SEO teams and run organic search strategy at some of the UK's leading search agencies, across on-page, international and content-led SEO. He trained as a journalist, with a BA in Journalism and an MA in Creative Writing from the University of Sheffield. That shows in his work: content that answers real questions and earns its place in search.FromBristolBased inSheffieldStudiedJournalism & Creative WritingFave bandKarnivool