HTTP Status Codes and SEO
Every page request ends with a three-digit status code, and Google reads it before anything else. This guide explains the codes that matter for Search: what Google does with 2xx, 3xx, 4xx and 5xx, which redirects are strong or weak, how to check a code, and how to fix the common problems.
- Code-by-code table
- Redirect strength
- How to check a code
- Fix guide
200 OK content read 301 Moved strong redirect 404 Not Found content ignored 410 Gone treated like 404 429 Too Many slows crawling 503 Unavailable crawl slows
Google treats status codes in classes. 2xx passes the content on for indexing (not guaranteed). 3xx redirects; 301 and 308 are strong signals, 302 and 307 are weak. 4xx means the content is ignored and already-indexed URLs are dropped over time; 400, 401, 403, 404, 410 and 411 are treated the same. Only 429 in the 4xx range affects crawl rate. 5xx slows crawling, and persistent errors lead to removal.
What an HTTP status code is
When Googlebot or a browser asks your server for a URL, the server replies with a status code before sending anything else. The code says whether the request worked, moved or failed. Google’s documentation explains how Googlebot treats each class of code and what that means for Search.
Google’s page covers the most common codes only. It does not list every code that exists, so uncommon ones are not addressed.
2xx: success
| Code | What Google does | Note |
|---|---|---|
| 200 OK | Passes the content to indexing | Not a guarantee the page is indexed |
| 201 / 202 | 202 may wait briefly for the content | Rare for normal pages |
| 204 No Content | No content to index | Not useful for pages you want found |
A 200 only means the server answered correctly. A page can return 200 and still show an error message or empty page, which Google may treat as a soft 404. Read soft 404 errors.
3xx: redirects
Redirects send users and Googlebot from one URL to another. Google follows up to 10 redirect hops, and its documentation separates permanent from temporary redirects by how strongly they signal the target should be indexed.
| Code | Meaning | Signal strength |
|---|---|---|
| 301 | Moved permanently | Strong |
| 308 | Permanent redirect | Strong |
| 302 | Found (temporary) | Weak |
| 307 | Temporary redirect | Weak |
| 304 | Not modified, use the cached copy | Content unchanged |
4xx: client errors
Google says it ignores content returned with a 4xx status, and URLs already in the index that return a 4xx are removed over time. Most 4xx codes are treated the same way.
| Code | Meaning | Google treats it as |
|---|---|---|
| 400 | Bad request | Same as 404 |
| 401 | Login required | Same as 404 |
| 403 | Forbidden | Same as 404 |
| 404 | Not found | Content ignored, URL dropped over time |
| 410 | Gone permanently | Same as 404 |
| 411 | Length required | Same as 404 |
| 429 | Too many requests | Treated as a server error; affects crawl rate |
Two points follow. A 410 does not remove a page faster than a 404 according to Google’s table (it treats them alike). And a robots.txt Disallow is not a 4xx. For 404 clean-up, read how to fix 404 errors.
5xx: server errors
5xx and 429 responses tell Googlebot your server has a problem. Google slows its crawling. If the errors persist, URLs that were indexed can be removed.
| Code | Meaning | What to do |
|---|---|---|
| 500 | Internal server error | Check server and PHP logs |
| 502 / 504 | Bad gateway / timeout | Check proxy, CDN or origin |
| 503 | Service unavailable | Use for short planned downtime only |
See server error 5xx in Search Console, and speed up slow servers with TTFB improvements.
One-page cheat sheet
This cheat sheet is my own summary of Google’s guidance; it is deliberately simple.
Check a status code step by step
Use the URL Inspection tool
Open the URL Inspection tool and run a live test. It shows if Google could fetch the page and the page fetch result.
Open developer tools
In Chrome press F12, open the Network tab, reload, and click the first request to see its status.
Use curl
Run curl -I https://example.com/page/ to see the headers only, including the status line.
Use a crawler
A crawling tool can list the status of every URL. See site audit tools.
Read the Page indexing report
The Page indexing report groups pages by problem, including 404, server errors and redirects.
Notes for WordPress sites
- Redirect plugins. Redirects from a plugin return 301 or 302 depending on the setting. Confirm which with a header check.
- Deleted posts. A deleted post returns 404 unless you redirect it. Redirect only if a relevant replacement exists. See change URL without losing SEO.
- Maintenance mode. Some plugins return 200 with a maintenance message; better to return 503 (my own advice).
- Hosting limits. Hitting resource limits can produce 5xx errors. See speed up WordPress.
Troubleshooting
| Symptom | Likely cause (my own diagnosis) | Fix |
|---|---|---|
| Page missing from Google | It returns 404 or 5xx | Restore the page or fix the server |
| Error page returns 200 | Soft 404 | Return a real 404 |
| Old URL not replaced by new | Temporary redirect used | Switch to 301 |
| Crawl slowed suddenly | 429 or 5xx responses | Check rate limits and server health |
| Redirect never ends | Loop or too many hops | Point straight to the final URL |
Checklist
Good pages
- Return 200
- No redirect on the final URL
- No soft 404 text
- Indexable
Moved pages
- 301 for permanent moves
- One hop only
- Relevant destination
- Internal links updated
Removed pages
- 404 or 410 when gone
- No redirect to the home page
- Removed from sitemap
- Internal links fixed
Server health
- No recurring 5xx
- 503 for planned downtime
- No excessive 429
- Crawl Stats reviewed
What Google’s page does not say
Google’s page covers only the top 20 or so status codes. It gives no exact time for a 404 URL to drop from the index, no numeric guarantee for how soon a 5xx slows crawling, and no rule that a 410 is faster than a 404. It says content is ignored for 4xx but does not promise any specific outcome for ranking.
Key terms
- Status code
- A three-digit number a server sends to say how a request went.
- Redirect hop
- One step in a chain of redirects.
- Soft 404
- A page that looks like an error but returns 200.
- Crawl rate
- How fast Googlebot requests your pages.
Common mistakes
Redirecting every 404 to the home page
It confuses users and may be treated as a soft 404.
Using 302 for a permanent move
It is a weak signal.
Returning 200 on error pages
Google may flag a soft 404.
Long redirect chains
Google follows up to 10 hops, but each slows users.
Ignoring 5xx spikes
Persistent errors lead to removal.
Blocking Googlebot with 403
Treated like a 404.
Related guides
Status code questions
Does a 200 guarantee indexing?
No. It only means the content is passed on for indexing consideration.
Which redirects are strong signals?
301 and 308 are strong. 302 and 307 are weak.
How many redirects will Google follow?
Google’s status code documentation says up to 10 hops.
Is 410 better than 404?
Google treats 400, 401, 403, 404, 410 and 411 the same way, so no faster removal is promised.
Which 4xx code affects crawl rate?
Only 429, which Google treats like a server error.
What do persistent 5xx errors do?
Google slows crawling, and persistent errors can lead to indexed URLs being removed.
How do I check a status code quickly?
Use the URL Inspection tool, browser developer tools or curl -I.
Should maintenance pages return 503?
For short planned downtime, a 503 tells crawlers the outage is temporary (my own guidance).
- Google Search Central: HTTP status codes, network and DNS errors
- Google Search Central: Redirects and Google Search
How Google treats each class of code, redirect strength, the 10-hop figure and the 429 note come from the status code page. The cheat sheet, check methods, WordPress notes, troubleshooting table and checklists are my own.