HTTP status codes group into five families by their first digit — 1xx (informational, rarely seen in SEO work), 2xx (success), 3xx (redirection), 4xx (client error), and 5xx (server error). A crawler reads the code before it reads anything else on the page: a 404 and a soft-404 page that renders "not found" text under a 200 are treated completely differently, even if a human visitor sees near-identical pages.
The seven that matter most
301 vs. 302 — the distinction crawlers actually act on
A 301 tells a search engine the move is permanent: consolidate ranking signals onto the new URL and drop the old one from the index. A 302 tells it the move is temporary: keep the original URL indexed, because it expects the content to come back. Using a 302 for a permanent move (a common default in web frameworks) leaves the old URL competing for rankings instead of transferring its equity — see redirects for the full comparison and how chains of these compound.
404 vs. 410, and why 503 beats a blank page during maintenance
A 404 and a 410 both mean "not here," but a 410 is a deliberate, permanent removal — search engines tend to drop 410 URLs from the index faster because there's no ambiguity to resolve. During planned maintenance, returning 503 (not a 200 "we'll be back soon" page, and not a silent timeout) is the correct move: it tells crawlers to come back later rather than treating the maintenance page as the site's new permanent content.
Because these codes only matter in aggregate — one stray 404 is a non-issue, a few thousand across a site is a crawl-budget problem (see crawl budget) — the practical work is seeing the whole distribution at once. RacingRoach surfaces every non-2xx response with the internal pages linking to it, so broken links and redirect chains show up as a worklist instead of something you find one broken link at a time.