HTTP Status Codes

What every HTTP response code means, when to return it, and exactly how search engines interpret it — including the 301/302 and 404/410 decisions that come up in every migration.

Updated: 2 August 2026Read: 8 minRuns: 100% in your browser

The five classes

The first digit tells you the category, and that alone answers most questions:

ClassMeaningWho should act
1xxInformationalNobody — the request continues
2xxSuccessNobody
3xxRedirectionThe client should follow
4xxClient errorThe requester must change something
5xxServer errorThe server operator must fix it
CodeNameMeaningSEO note
100ContinueClient may proceed with the request body.
101Switching ProtocolsUpgrading, typically to WebSocket.
103Early HintsPreload hints sent before the final response.Performance win
200OKStandard success.Indexable
201CreatedA new resource was created; Location header points to it.
204No ContentSuccess with nothing to return.
206Partial ContentRange request satisfied; used for video seeking.
301Moved PermanentlyResource has a new permanent URL.Passes ranking signals; preferred for migrations
302FoundTemporary redirect; original URL stays canonical.Original URL stays indexed
303See OtherRedirect after POST; forces a GET.
304Not ModifiedCached copy is still valid.Saves bandwidth and crawl budget
307Temporary RedirectLike 302 but the method is preserved.
308Permanent RedirectLike 301 but the method is preserved.Same SEO effect as 301
400Bad RequestMalformed syntax the server refuses to process.
401UnauthorizedAuthentication required or failed.Not indexed
403ForbiddenAuthenticated but not permitted.Repeated 403s can lead to deindexing
404Not FoundNo resource at this URL.Dropped from the index after repeated crawls
405Method Not AllowedThe verb is not supported for this resource.
410GoneDeliberately removed and not coming back.Deindexed faster than 404
418I'm a teapotApril Fools' joke from RFC 2324, never implemented seriously.
422Unprocessable ContentSyntactically valid but semantically wrong.
429Too Many RequestsRate limit exceeded.Crawlers back off; sustained 429s reduce crawl rate
451Unavailable For Legal ReasonsBlocked by legal demand.
500Internal Server ErrorUnhandled server-side failure.Crawl rate is reduced; prolonged errors cause deindexing
502Bad GatewayUpstream server returned an invalid response.
503Service UnavailableTemporary outage or maintenance.The correct code for planned downtime; add Retry-After
504Gateway TimeoutUpstream server did not respond in time.

What each code means for search

200 — the only code that gets indexed

Everything else is a signal about what to do with the URL, not content to rank.

301 versus 302

Both pass ranking signals. The difference is what happens to the old URL: a 301 tells Google to replace it with the target, a 302 tells Google to keep the original indexed. Using 302 for a permanent move leaves the old URL in the index indefinitely. Build the rules with the redirect generator.

404 versus 410

404 means “not found, possibly temporarily”; 410 means “gone deliberately”. Google treats 410 as a stronger signal and removes the URL slightly faster, but both end in deindexing. Neither harms the rest of the site — 404s are a normal part of the web.

Soft 404s are the real problem

A soft 404 is a page that says “not found” while returning 200, or one that redirects every missing URL to the homepage. Google detects and flags these, and they waste crawl budget. Return the correct status code.

503 for maintenance

During planned downtime, return 503 with a Retry-After header. Google will come back rather than interpreting the outage as removal. A maintenance page served as 200 tells Google every page on your site now contains the same “back soon” text.

Diagnosing status codes

# Headers only
curl -I https://example.com/page

# Follow the whole redirect chain
curl -sIL https://example.com/old | grep -E '^(HTTP|location)'

# See the codes without the noise
curl -o /dev/null -s -w '%{http_code} %{url_effective}\n' -L https://example.com

In the browser, the Network panel shows the status of every request; enable “Preserve log” before testing redirects or the chain disappears on navigation. In Google Search Console, the URL Inspection tool reports the status Googlebot last saw, which can differ from what your browser sees if the server treats crawlers differently.

Serving different status codes to Googlebot than to users is cloaking and is a policy violation. If your CDN or WAF blocks crawler user agents with 403 or 429, pages will silently drop out of the index.

Related headers worth knowing

HeaderUsed withPurpose
Location3xx, 201Where the client should go next
Retry-After429, 503Seconds, or a date, before retrying
Cache-ControlAnyHow long the response may be cached
ETag200, 304Version identifier for conditional requests
X-Robots-TagAnyIndexing directives for non-HTML resources
Link: rel=canonicalAnyCanonical URL for PDFs and other non-HTML files
Content-TypeAnyThe MIME type and charset of the body

Frequently Asked Questions

What does a 404 error mean?

The server understood the request but has no resource at that URL. It is a normal part of the web and does not damage the rest of your site; the URL is simply dropped from the index over time.

What is the difference between 301 and 302?

301 is permanent and tells search engines to replace the old URL with the new one. 302 is temporary and keeps the original URL indexed. Use 301 for anything that will not move back.

Do 404 errors hurt SEO?

Not directly. They only matter when pages that should exist return 404, or when large numbers of them waste crawl budget. Fix the ones with inbound links or traffic; ignore the rest.

What status code should I use for maintenance?

503 Service Unavailable with a Retry-After header. It tells crawlers to come back rather than treating the outage as content removal.

What is a soft 404?

A page that displays a not-found message while returning 200, or a mass redirect of missing pages to the homepage. Google detects these and treats them as errors.

When should I use 410 instead of 404?

When you deliberately removed content and it will not return. Google processes 410 slightly faster, though both lead to deindexing.

What does 429 mean?

Too Many Requests — a rate limit was exceeded. If crawlers hit it repeatedly, Google reduces its crawl rate for your site.

Sources & further reading

  1. RFC 9110 §15 — the normative definitions of every status code
  2. Google: HTTP status codes and Search — how Googlebot interprets each class
  3. MDN: HTTP status codes — practical reference with browser behaviour notes
  4. IANA: HTTP status code registry — the complete official list