HTTP status codes: the complete list for SEO
Every response a server sends starts with a three-digit status code. Search engines read it before anything else on the page, and it decides whether a URL gets crawled, indexed, moved or dropped.
The five classes
The first digit tells you the kind of answer:
- 1xx, informational: the request is in progress. You rarely see these directly.
- 2xx, success: here is the page.
- 3xx, redirection: the page is somewhere else.
- 4xx, client error: the request can't be served, usually because the page doesn't exist or access is refused.
- 5xx, server error: the server failed to answer.
2xx: success
| Code | Meaning | Effect on SEO |
|---|---|---|
200 OK | The page was served normally. | The only code that makes a page eligible for indexing. Google still decides whether to index it based on its content. |
201 Created | A new resource was created, usually by an API. | Treated like 200, but you won't normally see it on web pages. |
204 No Content | Success, with no body. | Nothing to index. Google may report it as a soft 404. |
206 Partial Content | Part of a file, sent in response to a range request. | Normal for video and large downloads. |
3xx: redirects
| Code | Meaning | Effect on SEO |
|---|---|---|
301 Moved Permanently | The page has moved for good. | A strong signal that the new URL should be indexed instead. The standard choice when a page moves. |
302 Found | The page is temporarily elsewhere. | A weak signal. Google usually keeps the original URL indexed, though it may treat a long-lasting 302 as permanent. |
303 See Other | Fetch a different URL with GET, typically after a form. | Treated as temporary. |
304 Not Modified | The page hasn't changed since the crawler's last visit. | Good: it saves crawl resources. Google reuses its stored copy. |
307 Temporary Redirect | Like 302, but the request method must not change. | Treated as temporary. Browsers also show a 307 for HSTS upgrades, which never reach the server. |
308 Permanent Redirect | Like 301, but the request method must not change. | Treated the same as a 301. |
Google follows up to 10 redirects in a row. Each hop costs time, so point old URLs straight at the final destination. The guide to redirect chains explains how.
4xx: client errors
| Code | Meaning | Effect on SEO |
|---|---|---|
400 Bad Request | The request was malformed. | Not indexed. Usually a bug in a link or URL format. |
401 Unauthorized | A login is required. | Not indexed. Fine for private areas. |
403 Forbidden | Access is refused. | Not indexed. Check that a firewall or bot protection isn't refusing Googlebot by mistake. |
404 Not Found | Nothing exists at this URL. | Removed from the index over time. Normal for deleted pages, and doesn't hurt the rest of the site. |
405 Method Not Allowed | The server doesn't accept that request method. | Not indexed. |
410 Gone | The page was removed on purpose and won't return. | Like 404. Google may drop it a little sooner. |
429 Too Many Requests | The client is being rate limited. | Google treats it like a server error and slows its crawling. Prolonged 429s can lead to pages being dropped. |
451 Unavailable For Legal Reasons | Blocked for legal reasons. | Not indexed. |
5xx: server errors
| Code | Meaning | Effect on SEO |
|---|---|---|
500 Internal Server Error | Something failed on the server. | Google slows down crawling. If the error persists, pages are dropped from the index. |
502 Bad Gateway | A proxy got a bad answer from the server behind it. | Same as 500. |
503 Service Unavailable | The server is temporarily unavailable. | The right code for planned maintenance, ideally with a Retry-After header. Short outages do no lasting harm. |
504 Gateway Timeout | A proxy timed out waiting for the server. | Same as 500. |
A server error on robots.txt itself is worse: Google stops crawling the whole site until robots.txt can be read again. You can check yours with the Robots.txt Tester.
Cloudflare's 52x codes
Sites behind Cloudflare can return codes that aren't in the HTTP standard. They mean Cloudflare couldn't get a proper answer from the site's own server:
520: the server returned an empty or unexpected response.521: the server refused the connection.522: the connection to the server timed out.523: the server couldn't be reached.524: the server took too long to respond.525and526: the SSL handshake failed, or the server's certificate is invalid.
Search engines treat all of them like a 5xx error.
Soft 404s
A soft 404 is a page that returns 200 OK but has nothing on it, such as a "no results" page or an empty category. Google detects these and treats them like a 404, and Search Console reports them separately. Return a real 404 or 410 for missing pages, so the status code and the content agree.
How to check status codes in bulk
Your browser hides most status codes and follows redirects silently. To see the real code for each URL, including every redirect hop, use a status code checker:
A good habit is to check every URL in your sitemap. A sitemap should list only URLs that return 200. Extract them with the Sitemap URL Extractor, then send the list straight to the checker.
Questions
Which HTTP status code is best for SEO?
For a page you want indexed, 200 OK. For a page that has moved, 301 or 308. For a page that is gone, 404 or 410. For planned downtime, 503 with a Retry-After header.
Do 404 errors hurt my rankings?
Not by themselves. Google expects pages to disappear, and a 404 on a deleted page doesn't affect other pages. What does matter is linking to missing pages from your own site, and losing pages that had backlinks without redirecting them.
Is a 302 redirect bad for SEO?
Only when the move is actually permanent. A 302 tells Google the original URL may come back, so it tends to keep that URL in results. Change it to a 301 if the page has moved for good.