HTTP status codes for SEO: 301, 302, 404, 410, 503
When a page fails, the first thing to check is the status code the server returns, because it is what browsers see and what Google sees. Almost everything comes down to choosing correctly between a handful: 301 or 302, 404 or 410, 401 or 403, and what to do when the server fails. What each one means and how Google handles it, according to its own documentation.
The five families in a line
The first digit tells you the type of response: 1xx informational, 2xx success, 3xx redirection, 4xx client error (the request cannot be served) and 5xx server error. In practice, nearly all the work on a website is in the last three families.
One detail that surprises people: a 200 does not guarantee Google will index the page. According to Google, a 2xx status only means the content may be considered for indexing.
Redirects: 301, 302, 307 and 308
All four send the visitor to another address. What differs is the intent and how search engines read it.
- 301 (moved permanently): the page has changed address for good. Google uses it as a strong signal that it should treat the destination as the page that matters.
- 302 (found): a temporary detour. Google also follows the redirect, but takes it as a weak signal.
- 308 is the equivalent of 301, and 307 of 302, with one technical difference: with 307 and 308 the client must repeat the request with the same method (a POST stays a POST). With 301 and 302, a browser may turn that POST into a GET when following the redirect.
For ranking, Google treats 308 like 301 and 307 like 302, but it recommends using the code that matches your intent, because other clients and search engines may benefit. The practical rule: if something moves for good (a domain change, a new URL structure, HTTP to HTTPS), use 301 or 308; if it is temporary (a promotion, partial maintenance), use 302 or 307.
A common trap is chains: A redirects to B, B to C, C to D. Google's crawlers follow up to 10 hops by default, but each hop slows the visitor down and is one more place where something can break. Always point the redirect at the final address.
404 or 410: what really changes
A 404 means “I cannot find this page” without saying whether it will come back; a 410 means “it is gone and is not coming back”. MDN recommends 410 when something has been permanently removed and 404 when you do not know whether it is temporary or permanent.
Does it matter to Google? Its documentation says it treats all 4xx errors (except 429) the same: it does not use the content, if the URL was indexed it removes it from the index, and newly found 404 URLs are not processed. In other words, there is no documented “faster removal” effect from using 410. Pick the one that describes reality and do not agonise over it.
What does matter is not lying to the crawler the other way: a page that no longer exists but returns 200 with a “not found” message is what Google calls a soft 404, and Search Console will flag it as an error. If a page is missing, the server should say so with the code, not just with the text.
401 or 403: not the same
A 401 means valid credentials are missing: it asks you to identify yourself. A 403 means the server understood the request and refuses to serve it: identifying yourself again changes nothing, and repeating it unchanged will fail the same way. Some servers return 404 instead of 403 when they do not even want to confirm that the resource exists.
One Google warning worth remembering: do not use 401 or 403 to limit the crawl rate. 4xx codes, except 429, have no effect on it.
When the server fails: 429, 500, 502, 503 and 504
- 500 is the generic error: something went wrong on the server and it cannot say what.
- 502 and 504 appear when an intermediary (a proxy or gateway) sits in the middle: 502 means it received an invalid response from the server behind it, and 504 that it received none in time.
- 503 is “I cannot serve you right now”. It is the one to use for maintenance or temporary overload, ideally with a
Retry-Afterheader saying when to come back. - 429 is “too many requests”: the rate limit for whoever asks too often. Google treats it as a server error, that is, as a sign the server is overloaded.
What Google does with them: 5xx errors and 429 make its crawlers slow down temporarily; pages already indexed are kept for a while, but if the error persists they eventually drop out of the index. When the server answers with 2xx again, the crawl rate increases gradually. The moral: if you have to take the site down for a while, do it with a 503, which is the code designed for that. A maintenance page that answers 200 tells Google that text is the content of the URL.
How to see the code a page returns
- In the browser: open developer tools (F12), go to the Network tab, reload and look at the Status column: it shows the code for the page and for each resource, redirects included.
- With curl:
curl -I https://example.com/pageshows only the headers, with the code on the first line; add-Lto follow redirects. Note that-Imakes a HEAD request, and some servers respond differently to HEAD than to GET. - In Search Console: the page indexing report groups pages by error: 404, soft 404, server error (5xx), redirects…
A cheat sheet of codes
| Code | Means | Use it when… |
|---|---|---|
| 200 | OK | The page exists and is served properly. |
| 301 / 308 | Moved for good | You change a URL permanently. |
| 302 / 307 | Temporary detour | The redirect is provisional. |
| 401 | Credentials missing | The user has to sign in. |
| 403 | Forbidden | Even identified, they lack permission. |
| 404 | Not found | The page does not exist (or you do not know if it will return). |
| 410 | Gone | You know it has been removed for good. |
| 429 | Too many requests | You want to slow down someone asking too often. |
| 500 | Server error | Something failed and there is no better explanation. |
| 503 | Unavailable | Maintenance or temporary overload. |
If you are looking for the meaning of another code, the HTTP status code lookup lists them all by family. To quickly check whether a list of links is still alive before you publish it, there is the broken link checker; and if what worries you is which pages search engines should crawl, the robots.txt and sitemap.xml generator helps you prepare those two files.
HTTP status codes are half of what Google sees of your site. The other half is in robots.txt and sitemap.xml (what gets crawled) and in how your crawled pages are shown: title and meta description length.
Sources and further reading
- Google Search Central: how HTTP status codes affect Google's crawlers
- MDN: 301 Moved Permanently
- MDN: 307 Temporary Redirect
- MDN: 308 Permanent Redirect
- MDN: 404 Not Found and 410 Gone
- MDN: 401 Unauthorized and 403 Forbidden
- MDN: 503 Service Unavailable and 429 Too Many Requests
Figures checked on 3 October 2026.
Do it now, free, in your browser. Your files are not uploaded.
Every HTTP status code with a clear meaning, searchable.
Frequently asked questions
What is the difference between a 301 and a 302?
Is a 404 or a 410 better for a deleted page?
What is a soft 404?
Which code should I use during maintenance?
What is the difference between 401 and 403?
How many chained redirects does Google follow?
Related guides
Tools used in this guide
They run in your browser, so nothing is uploaded.