What are HTTP status codes?
HTTP status codes are the three-digit numbers a web server sends back with every response. They tell the browser or crawler what happened: 200 means success, 301 means the page moved permanently, 404 means not found, 503 means the server is temporarily unavailable.
Visitors rarely see them, but search engines rely on them. The status code decides whether Google indexes a page, follows a redirect, drops a URL, or slows down crawling. A page that looks fine in a browser can still send the wrong code.
The five classes
| Class | Meaning | Google's general handling |
|---|---|---|
| 1xx | Informational | Not relevant to indexing |
| 2xx | Success | Content can be considered for indexing |
| 3xx | Redirect | Googlebot follows the redirect |
| 4xx | Client error | Content not indexed; indexed URLs are dropped over time |
| 5xx | Server error | Crawling slows; URLs that keep failing are dropped |
Codes that matter for SEO
- 200 OK. The page loaded. Note that a
200on an error or empty page creates a soft 404. - 301 Moved Permanently and 308 Permanent Redirect. Google treats both as strong signals that the target should be canonical. See 301 redirect.
- 302 Found and 307 Temporary Redirect. Temporary. Google follows them but is more likely to keep the original URL indexed. See 302 redirect.
- 304 Not Modified. Tells a crawler the page has not changed since its last visit, which saves bandwidth.
- 404 Not Found. The URL does not exist. Normal and harmless for URLs that should not exist. See 404 error.
- 410 Gone. The URL was removed on purpose. See 410 Gone.
- 429 Too Many Requests. Rate limiting. Google treats it like a server error and slows down.
- 500 Internal Server Error. Something broke on the server.
- 503 Service Unavailable. Temporary unavailability, the right code for maintenance. See 503 Service Unavailable.
How to check a status code
In a terminal, curl -I shows only the response headers:
curl -I https://example.com/old-page/
HTTP/2 301
location: https://example.com/new-page/
In a browser, open developer tools, go to the Network tab, and reload. Search Console's URL Inspection tool reports the code Googlebot received, and the Pages report groups URLs by reasons such as "Not found (404)" and "Server error (5xx)".
Common mistakes
- Error pages returning 200. Custom "not found" templates must still send
404. - Redirecting every dead URL to the homepage. Google usually treats this as a soft 404. Redirect to a relevant page or let it 404; see fixing 404 errors.
- Using 302 for permanent moves, which delays the transfer of signals to the new URL.
- Chaining redirects. Each hop adds delay; see redirect chain.
- Returning 403 or 404 during maintenance instead of 503, which can get pages dropped.
Common questions
Do 404 errors hurt my rankings?
Not by themselves. A 404 for a URL that should not exist is correct. They matter when important pages or pages with backlinks return 404 by mistake.
What status code should a page have to be indexed?
A 200. Google does not index the content of pages that return 4xx or 5xx codes, and for redirects it indexes the target instead.
Does Google treat 308 differently from 301?
No. Google treats 308 the same as 301 and 307 the same as 302 for indexing purposes.