Web 5 min read · 25 August 2026

The HTTP status codes that actually matter for a website

There are around sixty. About ten decide whether your site works and whether it stays in the index — including one that is technically fine and quietly the worst outcome of all.

Every HTTP response begins with a three-digit number saying what happened. The first digit gives the category — 2xx worked, 3xx go elsewhere, 4xx you asked wrongly, 5xx we broke — and the specific code carries the detail that matters.

200 OK

The page exists and here it is. What you want on every real page.

The trap is that 200 is about the HTTP transaction, not about the content. A page saying "Sorry, no results found" or "This product is no longer available" typically returns 200, because the server successfully returned a page. Search engines call this a soft 404: content that reads like an error but reports success. It is treated as low quality, it wastes crawl budget, and no status checker will flag it because nothing is technically wrong. If a page has no content, it should say 404 in the header, not just in the body.

301 and 302

301 is permanent — signals move to the new URL, browsers cache it hard. 302 is temporary — the original stays indexed.

The common error is a 302 on a permanent move, which leaves the old URL in the index competing with the new one. If it will still be true in six months, use 301. Chains of either are their own problem, covered in the guide on redirect chains.

304 Not Modified

Rarely thought about and worth understanding. The browser says "I have a copy from Tuesday, has it changed?", the server says 304, and no body is transferred at all. It is one of the largest performance wins available and it is entirely a matter of sending correct ETag and Last-Modified headers.

Seeing 304s in your logs is a sign caching is working. Seeing 200s for unchanged static assets means it is not, and every visitor is re-downloading files they already have.

403 Forbidden

The server understood and is refusing. Correct for genuinely restricted areas — and a serious problem when it happens to a crawler by accident.

Aggressive bot protection, a WAF rule or a firewall can serve 403 to Googlebot while serving 200 to you. From your browser the site is perfectly fine. From the index it is disappearing. Anything that behaves differently by user-agent or IP is worth testing from outside your own network — our status code checker and header checker both fetch from a server rather than from your browser, which is often enough to reveal the difference.

404 Not Found

The page does not exist. Normal, expected, and not a penalty — the web has always had dead links and search engines handle them without drama.

404s matter when they are your links. A crawler following internal navigation into a 404 is a wasted fetch and a bad visit; an external link pointing at a 404 is authority arriving at nothing, which is worth a redirect to the nearest equivalent page. Our broken link checker walks a page's links and reports what each one returns.

Make sure your 404 page really returns 404. A "friendly" error page returning 200 is the soft 404 problem above, and it means every mistyped URL on your site becomes an indexable page.

410 Gone

Underused. 404 means "not here" — possibly a mistake, possibly temporary. 410 means "deliberately removed, permanently, stop asking".

Google treats 410 as a stronger signal and typically drops the URL faster. For content you have removed on purpose — an expired listing, a discontinued product with no replacement, a page taken down for legal reasons — 410 is the accurate answer and it works better.

429 Too Many Requests

Rate limiting. Fine when it is aimed at abuse, expensive when it catches a legitimate crawler. Overly aggressive limits can throttle Googlebot into crawling a fraction of a large site, and the symptom — new pages taking weeks to appear — looks nothing like a rate-limiting problem.

When you do return 429, include a Retry-After header. Well-behaved clients honour it.

500 Internal Server Error

The application broke. Nothing else on this list is as urgent.

Sustained 500s cause search engines to reduce crawl rate — the reasonable assumption being that the site is struggling and hammering it will not help. Recovery afterwards is slower than the outage was. If you monitor one thing, monitor this.

503 Service Unavailable

Temporarily down, come back later. This is the correct code for planned maintenance, and using it properly is one of the few genuinely underrated pieces of technical SEO.

Serve 503 with a Retry-After header during a deployment and crawlers understand it as temporary, retain the pages, and return later. Serve 200 with a "we'll be back soon" page instead and you have told the world that every URL on your site now contains that sentence — which, if the window is long enough, is what gets indexed.

The ones you can ignore

Most of the rest. 418 is a joke from 1998 and is still in the spec. 451 (unavailable for legal reasons) is real but rare. 100-series codes are protocol plumbing you will never set by hand.

Checking them properly

Two things to know when testing.

Test the final URL and every hop. A checker that only reports the destination hides three redirects in front of it.

Test as a bot, not just as yourself. Your browser has cookies, a session and possibly an editor login. A crawler has none of those. Sites that behave differently for logged-out visitors — paywalls, geo-redirects, bot protection — routinely return one code to you and another to a crawler, and that gap is where the difficult bugs live.

More guides

Stay Updated

Get the latest tools, AI features, and product updates. No spam.