HTTP Status Codes

What HTTP status codes are, how they work (1xx–5xx), which ones matter most for SEO, and how Google interprets them — the hub for redirects, errors, and crawl behavior.

First published: Jun 27, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #6 in HTTP Status Codes#21 in Technical SEO#30 on the site
1 evidence signal on this page

An HTTP status code is the three-digit number a server returns with every response, and for SEO the code matters as much as the content on the page. Five families: 1xx informational, 2xx success (eligible for indexing, but 200 doesn't guarantee it), 3xx redirects (301/308 pass a canonicalization signal, 302/307 don't), 4xx client errors (404/410 drop pages from the index over time; 404s generally don't hurt rankings), and 5xx server errors (which — with 429 — make crawlers slow down, not instantly deindex). The sneaky exception is the soft 404: a 200 status with 'this doesn't exist' content, which Google treats like a 404 and flags in Search Console. This hub maps the families, corrects the common myths, and links down to the deep dives on individual error codes.

TL;DR — The status code is a first-class SEO signal, independent of the page’s content. 2xx is necessary but not sufficient for indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.. 301/308 pass a canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. signal; 302/307 don’t. 4xx pages get dropped from the index over time, and 404 generally doesn’t hurt rankings. 5xx and 429 make crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. slow down, not deindexDeindexing means getting a URL to stop appearing in Google's search results. There's no single delete button — the right method depends on whether you own the page, whether removal is temporary or permanent, and whether the content should still exist. — recovery is gradual once 2xx returns. The trap is the soft 404A soft 404 is a URL that returns a success status code (usually 200 OK) even though the page is empty, missing, or shows a 'not found' message. It isn't a status code a server sends — it's a label search engines apply after comparing the response code against the rendered content, and they treat the page like a 404 for indexing.: a 200 status wrapped around “this doesn’t exist” content, which Google detects at the content layer and treats like a real 404. Match the code to reality, use permanent redirectsA 301 redirect is the HTTP status code for a permanent move: it tells browsers and search engines a URL has moved for good, and it's the strongest signal for consolidating a page's ranking signals onto the new URL. Google says permanent redirects don't cause a loss in PageRank. for permanent moves, and return 503 — not a broken 200 — during downtime.

What a status code actually is

The five response classes come from RFC 9110, the HTTP specification — they’re protocol semantics, not direct SEO scores. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: RFC 9110: Status codes Google’s documentation, layered on top of that spec, describes likely processing outcomes without guaranteeing exact crawl or index timing. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: HTTP and network errors

Google’s own documentation is the cleanest definition: HTTP status codesAn HTTP status code is the three-digit number a server returns with every response to tell a browser or crawler what happened to its request — success, redirect, client error, or server error. For SEO the code matters as much as the content: it tells Google and Bing whether to index a page, follow a redirect, retry later, or drop the URL from the index. are generated by the server that’s hosting the site when it responds to a request made by a client, for example a browser or a crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index..” The key idea for SEO is that the code is a signal in its own right, separate from whatever HTML comes after it. A page can look perfect to a human and still be invisible to search because of the number the server sent first.

The five families, through an SEO lens

1xx — Informational. Provisional “still working” responses (100 Continue, 101 Switching Protocols). Almost never SEO-relevant, with one modern exception: 103 Early Hints, which lets the server tell the browser to start preloading critical resources before the full response is ready — a small Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data. win, not an indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. lever.

2xx — Success. 200 OK is what an indexable page returns. But a 200 is necessary, not sufficient: Google can still decline to index a 200 page for quality, duplication, or other reasons. Edge case worth knowing — a 204 No Content (a successful response with an empty body) can get treated like a soft 404, because there’s nothing to index.

3xx — Redirection. This is where the canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. distinction lives, and it’s the single most misunderstood part of the topic. Per Google’s redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. documentation:

  • 301 (permanent) and 308 — Google follows the redirect and “the indexing pipeline uses the redirect as a signal that the redirect target should be canonical.” Ranking signals consolidate onto the target.
  • 302 (temporary) and 307 — Google follows the redirect, “but the indexing pipeline doesn’t use the redirect as a signal that the redirect target should be canonical.” A 302 left in place for a genuinely permanent move is a classic misconfiguration — Google may eventually treat a long-lived 302 like a 301 in practice, but you shouldn’t rely on that.

Google recommends you “use a permanent server-side redirect whenever possible” for permanent moves, and notes a hard ceiling: “By default, Google’s crawlers follow up to 10 redirect hops.” Redirect chainsA → B → C instead of A → C. Each hop loses link equity and adds latency. that run longer than that get abandoned. (For the full tour of the eleven redirect typesA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. and their SEO impact, I’ve written that up separately at Ahrefs, linked in Resources — this hub is deliberately the map, not the deep dive.) Also in the 3xx family: 304 Not Modified, a caching signal that tells a crawler its cached copy is still current — no direct ranking effect, but it supports efficient crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. on large sites.

4xx — Client error. The page can’t be served because of something on the request side — it’s missing, forbidden, or blocked to this client. Google is explicit: “Google doesn’t use the content from URLs that return 4xx status codes,” and “if a URL was previously used but is now returning 4xx status code, Google systems will stop using the URL over time.” For 404 specifically, “the indexing pipeline removes the URL from the index if it was previously indexed. Newly encountered 404 pages aren’t processed.”

Two important nuances here:

  • 404 doesn’t hurt rankings. Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. Help states it directly: “In general, 404 errors won’t impact your site’s search performance.” The risk from a 404 is losing the traffic and links the page carried, or — at scale — wasting crawl budget.
  • Don’t weaponize 401/403 against GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer.. Google warns: “Don’t use 401 and 403 status codes for limiting the crawl rateCrawl rate is how fast a search engine crawler fetches pages from your site — the number of simultaneous requests it makes and the delay between them. Google sets it automatically based on your server's health; it's the supply side of crawl budget, not a ranking factor.. The 4xx status codes, except 429, have no effect on crawl rate.” Blocking Googlebot with a 401/403 doesn’t “slow it down” — it just makes the content invisible.

The individual client-error codes each have their own story — the access-and-auth codes (401, 403), the “gone” codes (404, 410, and the question of which to use), rate-limiting (429), and the legal-block code (451) — and each gets a full treatment in its own article. See “Where to go next” below.

5xx — Server error. The request was fine; the server failed to fulfill it (500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout). The crucial SEO fact: these don’t instantly deindex. Google’s doc: 5xx and 429 server errors “prompt Google’s crawlers to temporarily slow down with crawling,” and “once the server starts responding with a 2xx status code, Google gradually increases the crawl rate.” The slowdown is measured: “the decrease in crawl rate is proportionate to the number of individual URLs that are returning a server error.” Previously indexed URLs are preserved through a blip; only sustained server errors eventually lead to removal.

Crawl vs. index: the mental model that ties it together

Two different questions live behind these codes:

  1. Should I crawl this? 5xx/429 say “slow down, try later.” 301/302 say “go here instead.” 429 and the 5xx family are the only codes that actually throttle crawl rate.
  2. Should I index this, and under which URL? 2xx = eligible. 4xx = drop it. 301/308 = consolidate onto the target.

The connective thread — and the thing that breaks this model — is the soft 404, where the code and the content disagree.

Soft 404s — the sneaky exception

A soft 404 is a page that returns a success code (200) but whose content says the item doesn’t exist — an empty page, a “sorry, not found” message, or a thin/blank result. Google detects the problem at the content layer, regardless of the HTTP code: “if the content suggests an error for Google Search, an empty page or an error message, Search Console will show a soft 404 error.”

Why care, if the page “loads fine”? Because it wastes crawl budgetThe number of URLs an engine will crawl in a timeframe.. Google’s large-site guide is blunt: “soft 404 pages will continue to be crawled, and waste your budget.” They usually come from misconfigured CMSes or JavaScript frameworksJavaScript frameworks — React, Vue, Angular, Next.js, Nuxt, Svelte, Astro — are libraries or meta-frameworks for building web UIs. Their SEO impact depends on rendering mode: SSR and SSG deliver pre-rendered HTML; CSR-only apps require Googlebot to execute JavaScript before it can index content. that return 200 for routes that don’t exist. The fix is to make the code match reality — return a real 404 (or 410) so Google can drop the URL cleanly. There’s a dedicated soft-404 article in this cluster.

404 vs. 410 — does it actually matter?

Barely, for SEO. John Mueller settled this in a 2024 clarification: “The difference in processing of 404 vs 410 is so minimal that I can’t think of any time I’d prefer one over the other for SEO purposes,” adding that “Google does not penalize for 404’s (those pages drop out of the index though).” A 410 (Gone) can signal permanence marginally faster and documents intent more clearly for humans and other tooling — the historical Matt Cutts framing was that 410 removal ran “a little faster,” a few days at most. Use 410 when you’re certain the removal is permanent; 404 when the page might return or you’re unsure. Google’s crawl-budget guide is happy with either: “a 404 status code is a strong signal not to crawl that URL again.” The dedicated 404-vs-410 article resolves the nuance in full.

Using status codes for downtime and migrations

For planned downtime, maintenance, or a migration window, return 503 Service Unavailable — not a broken 200. John Mueller’s guidance is direct: “if something goes drastically wrong with your hoster, and you can’t host your website anymore, please return a ‘503 Service unavailable503 Service Unavailable is the HTTP status code a server returns when it's temporarily unable to handle a request — usually because of overload or planned maintenance. It tells crawlers 'come back later' instead of 'this page is gone,' which is why Google recommends it (paired with a Retry-After header) for short, planned downtime.’ HTTP result code.” His reasoning covers the two anti-patterns to avoid: “returning an error page with ‘200 OKHTTP 200 OK is the standard 2xx success status code, meaning the server received, understood, and fulfilled the request and is returning the resource. It's the code every page you want indexed should return — but a 200 alone doesn't guarantee Google will index the page.’ will result in us indexing the change of content like that (and if all of your pages return the same error page, then we may assume that these URLs are duplicates). Redirecting to a temporary page will result in that redirect being used for indexing.” The implementation trick when the origin is fully down: point DNS at a temporary server that serves 503s.

Keep it short, though. Gary Illyes: “Serving a 503 status code for an extended period of time will cause a decrease in crawl rate,” but “10-15 minutes every now and then is not ‘extended’ by any means, so you should be fine.” Rule of thumb: 503 is for hours, not weeks — leave it up for weeks and Google starts treating the pages as actually gone. The 503 article covers the migration pattern in depth.

How to check a page’s status code

  • Browser DevTools — open the Network tab, reload, click the document request, read the Status column.
  • Command linecurl -I https://example.com/page for the headers of a single request, or curl -IL https://example.com/page to follow the whole redirect chainA → B → C instead of A → C. Each hop loses link equity and adds latency..
  • Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. — the URL Inspection toolA Google Search Console feature that reports how Google sees one specific URL on a property you own. By default it shows the last-indexed snapshot; a separate \"Test live URL\" mode fetches the current version. reports the crawled status.
  • Bing Webmaster ToolsMicrosoft's free portal for monitoring and improving how a site appears in Bing search — the peer to Google Search Console, plus IndexNow instant indexing, richer backlink data, and keyword volumes. Because Bing's index also feeds Microsoft Copilot, it doubles as a window into AI-search visibility. — its URL Inspection tool does the same for BingbotBingbot is Microsoft Bing's primary web crawler — the bot that discovers, fetches, and renders pages to build the Bing index. That index also powers Yahoo, DuckDuckGo, Ecosia, and Microsoft Copilot, so Bingbot's reach is far wider than Bing's own search-market share..
  • Crawlers — Screaming Frog SEO Spider and Ahrefs Site Audit crawl the whole site and surface status codes, redirect chains, and 4xx/5xx URLs in bulk; the free Ahrefs SEO Toolbar shows the code for the page you’re on.

One genuine gotcha the competitor guides skip: a single check only tells you about that one request. Status can vary by request method, user agentA user agent is the HTTP request header a client (browser, crawler, or bot) sends to identify itself. For crawlers, a short user-agent token — a substring of that string — is what robots.txt rules actually target., authentication, region, and time, plus whatever cache or CDN sits in between — so a clean result from your desk doesn’t guarantee what Googlebot saw. A compact diagnostic workflow:

  • Method — a HEAD request should carry the same headers as GET, but servers are allowed to omit fields that require generating content, so a HEAD check isn’t proof of what a real GET returns. Re-test with GET if the two disagree.
  • User agent — bot-detection, geoGenerative Engine Optimization — visibility inside AI answer engines.-blocks, or cloaking can serve Googlebot a 200 while a browser gets a 403 (or vice versa).
  • Region — if you suspect geo-blocking or a region-specific CDN rule, retest from more than one location or IP.
  • Cache — rule out a stale cached response (browser cache, CDN edge cache) before concluding the origin itself is misbehaving.
  • Chain — record the full redirect chain, not just the final code; a mid-chain hop can be the actual problem.
  • Logs — when a code doesn’t match what you expect, check what Googlebot actually saw. Your server logs are the ground truth a single browser or checker result can’t give you.
TIP Read the response code, not the page design

A friendly-looking page can still send any status. This sample returns 503, which tells crawlers the server is temporarily unavailable.

Check the actual response with my free HTTP Status Checker Free

  1. Test the URL rather than inferring status from what renders in a browser.
  2. Read the exact code, final URL, and status family before choosing a remedy.
  3. Rerun after the change and confirm the intended code is stable.
The response metadata, not the visible maintenance copy, is what search engines receive as the status signal.

The result shows one tested URL returning HTTP 503 and labels it a 5xx server error. The filter counts show one 5xx response and no 2xx, 3xx, or 4xx responses.

A note on Bing

Bing’s public guidance on status codes is thinner than Google’s — there’s no single canonical “how status codes affect crawling” doc as detailed as Google’s, and no Bing rep quote on the topic surfaced when I looked. Directionally it’s the same advice: return accurate codes, fix persistent 4xx/5xx, and use permanent redirects for permanent moves. I’d rather say that plainly than manufacture a Bing quote that doesn’t exist.

Where to go next: the HTTP error codes cluster

This hub is the overview. The HTTP Error CodesThe 4xx (client error) and 5xx (server error) HTTP status codes a server returns instead of a successful 2xx — and how Google treats each class very differently. sub-hub goes deep on the codes you actually end up troubleshooting, each in its own article:

  • 401 Unauthorized and 403 Forbidden — the access-and-auth codes, and why you shouldn’t use them to throttle crawling.
  • 404 Not Found, 410 Gone, and 404 vs 410 — the “this page is gone” family and which code to reach for.
  • 429 Too Many Requests — rate-limiting, and how it (unlike other 4xx codes) affects crawl rate.
  • 451 Unavailable For Legal Reasons — the legal/regulatory block, distinct from a 403.
  • 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, and 504 Gateway Timeout — the server-error family, crawl slowdown, and the 503-for-maintenance pattern.
  • Soft 404s — the 200-that’s-really-an-error, and how to fix it.

Each of those is nested under this hub and listed in the sidebar. For how redirects consolidate ranking signals, see CanonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it.; for how crawlers throttle on 5xx/429, see CrawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor..

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.