Technical

HTTP Status Code

An HTTP status code is the three-digit number a server returns with every page request, telling the browser and search crawlers what happened. It is the difference between a page that loads fine, redirects, is gone, or has crashed, and crawlers read it on every single request.

Every time a browser or a crawler asks your server for a page, the server answers with a number before it sends a single byte of content. That number is the HTTP status code, and it is the most honest signal your site gives off. It cannot be faked by good copy or pretty design. Either the server says the page is fine, or it says something is wrong, and search engines treat that answer as gospel.

Most people never think about status codes until something breaks. That is a mistake. A site quietly leaking 404s, serving soft errors, or chaining redirects is bleeding crawl efficiency and ranking signals, and the only way to see it is to read the codes.

The five families

Status codes are grouped by their first digit, and once you know the families you can read any code on sight.

RangeMeaningExample
1xxInformational, request received100 Continue
2xxSuccess, the page loaded200 OK
3xxRedirection, the page moved301 Moved Permanently
4xxClient error, the request failed404 Not Found
5xxServer error, the server failed500 Internal Server Error

The codes that matter for SEO

  • 200 OK: the page loaded normally. This is what you want for every page you want indexed.
  • 301 Moved Permanently: a permanent redirect that passes ranking signals to the new URL.
  • 302 Found: a temporary redirect. Tells engines the move is not permanent, so use it only when it truly is.
  • 404 Not Found: the page does not exist. Fine in moderation, a problem at scale.
  • 410 Gone: the page is permanently deleted. A stronger, more deliberate signal than 404.
  • 500 Internal Server Error: the server crashed handling the request. Pure red flag.
  • 503 Service Unavailable: temporary downtime, the correct code to serve during maintenance.
bolt

Crawlers read the status code on every request. A page that looks fine to a human can be silently returning the wrong code, and the engine believes the code, not the pixels.

The soft 404 trap

Here is a problem that hides in plain sight. A page shows a friendly 'sorry, nothing here' message but the server returns a 200 instead of a 404. To a human it looks like a missing page. To a crawler it looks like a real, successful page worth indexing. Google calls this a soft 404, and it wastes crawl budget on empty pages while confusing your index. The fix is to make the server return the correct code that matches what the page actually is.

warningWATCH OUT

Never serve a 200 for a page that has no real content. If the page is missing, return 404 or 410. If it moved, return 301. The code must tell the truth about the page.

targetHow to read your own codes

You do not need fancy tools to check a code. Open your browser's developer tools, go to the Network tab, reload the page, and click the main document request. The status code sits right there. For a site-wide view, a crawler like Screaming Frog will list the code for every URL it finds, which is how you catch problems at scale.

The code is the truth

Search engines act on the status code, not on what the page appears to say. Make every page return the code that honestly describes its state, and audit your codes regularly to catch silent breakage.

For how status codes tie into crawl budget and overall site health, read my guide on technical SEO fundamentals.

Want this handled by someone who has measured search for 20 years?

Work with me