Have you ever opened Google Search Console, seen “Server error (5xx)” or “Soft 404” next to dozens of your pages, and wondered whether your site was in trouble?

You’re not alone. HTTP status codes are the three-digit replies your server sends every time a browser or Googlebot asks for a page. Most of the time they’re invisible. But when they go wrong, they decide whether a visitor sees your page, whether Google keeps it in the index, and whether years of SEO work quietly disappear.

I’m writing this from experience. In September 2026, a server move left a single bad line in our own robots.txt file, and our search visibility dropped from about 26% to 4.3% in one day. Fixing it meant reading status codes, cache headers and crawl reports line by line. This guide is everything I wish every business owner knew before that kind of day.

You’ll learn:

  • What HTTP status codes are and how the five classes work
  • A plain-English table of every code you’re likely to see
  • How Google treats each type of response, according to Google’s own documentation
  • Which HTTP error codes actually hurt SEO, and which don’t
  • How to check your status codes and a monthly checklist to stay safe

Quick answer: what are HTTP status codes?

HTTP status codes are three-digit numbers a web server returns with every response to say what happened to the request. The first digit sets the class: 1xx informational, 2xx success, 3xx redirection, 4xx client error and 5xx server error. They’re defined in RFC 9110, the current HTTP standard.


How a status code is created (in 5 seconds)

Every time someone opens a page on your website, a short conversation happens:

  1. The request: a browser or crawler asks your server for a URL, for example GET /services/.
  2. The server decides: it looks for the page, checks permissions, runs WordPress or your app, and talks to the database.
  3. The response: it sends back the page (or an error) with a status line such as HTTP/1.1 200 OK.
  4. The client reacts: a browser shows the page, follows a redirect or displays an error; Googlebot decides whether to index, follow, retry or drop the URL.

The status code is the server’s one-line summary of how that conversation went. Visitors rarely see it. Google always does.

The rules for these codes live in RFC 9110, “HTTP Semantics”, published in June 2022, which replaced the older RFC 7231 (RFC Editor).


The five classes of HTTP response codes

The first digit tells you almost everything.

ClassMeaningWhat it usually means for youExample
1xx InformationalThe request was received; processing continuesNothing to do; browsers and servers handle these103 Early Hints
2xx SuccessThe request workedThe page loaded; Google can consider it for indexing200 OK
3xx RedirectionThe content is somewhere elseA redirect is in place; check it’s the right type301 Moved Permanently
4xx Client errorThe request can’t be fulfilled as sentMissing pages, blocked pages or bad requests404 Not Found
5xx Server errorThe server failed on a valid requestYour hosting or application has a problem503 Service Unavailable

A useful way to remember it: 2xx = here you go, 3xx = go over there, 4xx = you made a mistake, 5xx = we made a mistake.


The master table: HTTP codes you’ll actually see

These are the HTTP codes that show up in browsers, server logs, APIs, Search Console and SEO tools. Codes marked with a link have their own detailed guide in this series.

1xx: Informational

CodeNamePlain-English meaning
100ContinueKeep sending the request; the server is listening
101Switching ProtocolsThe server is switching protocols, for example to WebSockets
103Early HintsThe server tells the browser which files to start loading early, to speed up the page

2xx: Success

CodeNamePlain-English meaning
200OKThe request worked and the content is returned. This is what every live page should send
201CreatedSomething new was created, usually after a form or API POST (a new account, order or record)
202AcceptedThe request was received but will be processed later (for example, a queued export)
204No ContentSuccess, with nothing to send back (common for “save” actions in apps)
206Partial ContentOnly part of a file was sent, for example while streaming a video

3xx: Redirection

CodeNamePlain-English meaning
301Moved PermanentlyThe page has moved for good. See 301 vs 302 redirects
302FoundThe page is temporarily somewhere else
303See OtherGo get the result with a GET request, often used after a form is submitted
304Not ModifiedThe copy you already have is still current, so nothing is resent
307Temporary RedirectLike 302, but the request method must not change
308Permanent RedirectLike 301, but the request method must not change

4xx: Client errors

CodeNamePlain-English meaning
400Bad RequestThe request is malformed. See 400 vs 422 errors
401UnauthorizedYou need to log in (it really means “unauthenticated”)
402Payment RequiredReserved for payments; rarely used and has no standard convention
403ForbiddenThe server knows who you are, but you don’t have access
404Not FoundThe page doesn’t exist at this URL. See 404 error guide
405Method Not AllowedThe page exists, but not for this kind of request
408Request TimeoutThe server gave up waiting for the request
409ConflictThe request clashes with the current state of the data. See 409 Conflict guide
410GoneThe page was deleted on purpose and isn’t coming back
413Content Too LargeThe upload or request body is bigger than the server allows
414URI Too LongThe URL is longer than the server accepts
415Unsupported Media TypeThe server doesn’t accept that file or data format
418I’m a TeapotA joke code from an April Fools’ RFC; not used in practice
422Unprocessable ContentThe request is well-formed, but the data fails validation. See 400 vs 422
429Too Many RequestsThe client hit a rate limit
431Request Header Fields Too LargeHeaders (often cookies) are too big
451Unavailable For Legal ReasonsThe content can’t be shown for legal reasons

5xx: Server errors

CodeNamePlain-English meaning
500Internal Server ErrorA generic failure on the server (often a plugin, theme or code error)
501Not ImplementedThe server doesn’t support this request method
502Bad GatewayA server in the middle got a bad response from the server behind it
503Service UnavailableThe server is overloaded or in maintenance. See 503 Service Unavailable
504Gateway TimeoutA server in the middle didn’t get a response in time

Sources: MDN HTTP status reference and RFC 9110.


How Google treats each class of status code

This is the part most guides skip, and the part that matters most for your rankings. Here’s what Google’s own documentation says about how its crawlers react (Google Search Central).

2xx: eligible, not guaranteed

  • A 200 or 201 passes the content on for indexing, but a 2xx doesn’t guarantee indexing. Quality and duplication still decide.
  • A 202 makes Google wait a limited time before using whatever it received.
  • A 204 gives Google nothing to index.
  • If a 2xx page looks like an error page (empty, or saying “not found”), Search Console reports it as a soft 404.

3xx: follows up to 10 hops

  • Google’s crawlers follow up to 10 redirect hops, then stop.
  • 301 and 308 are a strong signal that the new URL should be the one shown in search.
  • 302, 303 and 307 are a weak signal; Google often keeps showing the original URL.
  • 304 tells Google the content hasn’t changed since it last crawled.

4xx: treated as “doesn’t exist”

  • 400, 401, 403, 404, 410 and 411 are all treated the same: the content doesn’t exist. Indexed URLs that return them are removed over time, and Google crawls them less often.
  • Google specifically says not to use 401 or 403 to slow Googlebot down.
  • 429 is the exception: Google treats it as a sign of server overload, like a 5xx.

5xx: slows crawling, then drops pages

  • 500, 502 and 503 make Google slow down crawling.
  • Pages that keep returning server errors are eventually dropped from the index.
  • Google says returning 500, 503 or 429 to slow crawling is fine for a couple of hours or one to two days, but if it sees these on the same URL for multiple days, the URL may be dropped (Google).

One rule worth memorizing: never let robots.txt return a 503. Google says it blocks all crawling of your site (Google). Google’s robots.txt specification spells out the timeline: for the first 12 hours it stops crawling entirely, then falls back on the last good copy of the file for up to 30 days. A 4xx on robots.txt does the opposite: Google treats it as if no robots.txt exists at all (Google).


Which HTTP error codes hurt SEO (and which don’t)

Not every red line in a crawl report is an emergency. Here’s how we prioritize errors when auditing a site, from most to least urgent.

PriorityStatus<Why it mattersWhat to do
🔴 Critical5xx on many pagesGoogle slows crawling and eventually drops pagesFix hosting, plugins or code immediately
🔴 Critical5xx on robots.txtGoogle stops crawling the whole siteMake robots.txt return 200
🟠 High4xx on robots.txtGoogle acts as if you have no rules, so anything you meant to block becomes crawlableMake robots.txt return 200
🟠 High404 on pages you link to or list in your sitemapWasted crawl, broken user journeys, lost link valueRedirect or fix the links
🟠 HighRedirect chains and loopsGoogle stops after 10 hops; users wait longerPoint every redirect straight to the final URL
🟠 HighSoft 404sThin or empty pages that look like errorsReturn a real 404/410, or improve the content
🟡 Medium302s left in place for monthsThe old URL may stay in search instead of the new oneSwitch to 301 if the move is permanent
🟡 Medium403 on public pagesGoogle can’t index themAllow access for unauthenticated visitors
🟢 Low404 on URLs nobody links toNormal; Google says this isn’t necessarily a problemUsually leave alone
🟢 Low410 on content you deliberately removedExactly what 410 is forNothing

Google’s own Search Console help is clear: “404 responses are not necessarily a problem, if the page has been removed without any replacement” (Search Console Help). The 404s to fix are the ones you created: pages you still link to, list in your sitemap or that have backlinks.

And broken links are more common than most people think. Pew Research Center found that 38% of webpages that existed in 2013 were no longer accessible a decade later (Pew Research Center). Every site accumulates dead URLs over time; the job is to manage them.


Where you’ll see status codes in Google Search Console

The Page indexing report in Google Search Console groups pages by the reason they aren’t indexed. These are the status-code-related ones (Search Console Help):

Search Console labelWhat it meansRelated code
Not found (404)Google got a 404 for this URL404
Soft 404The page returns 200 but looks like a “not found” page200 that should be 404/410
Server error (5xx)The server failed, timed out or was busy500, 502, 503, 504
Redirect errorA redirect chain was too long, looped, or pointed to a bad URL3xx problems
Page with redirectA URL that redirects elsewhere; the target may be indexed instead301, 302, 307, 308
Blocked due to access forbidden (403)Google got a 403; Googlebot never logs in403
Blocked due to other 4xx issueAny other 4xx400, 405, 409, 422, 429 and others

[IMAGE: Search Console Page indexing report, sensitive data blurred]

Learn how to connect your site in our guide to setting up Google Search Console for your Canadian business.


How to check the HTTP status code of any page

You don’t need to be a developer. Pick whichever method suits you:

  1. Browser developer tools: open the page in Chrome, press F12, click the Network tab, reload, and look at the Status column for the first row.
  2. Google Search Console URL Inspection: paste any URL from your site to see whether Google could fetch it and what it found.
  3. Command line: curl -I https://yourdomain.ca/page/ shows just the status line and headers. Add -L to follow redirects and see every hop.
  4. SEO crawlers: tools like Ahrefs Site Audit or Screaming Frog crawl your whole site and list every status code. On shared hosting, slow them down (we use about 5 requests per second) so the audit doesn’t overload your server and create the 5xx errors you’re looking for.
  5. WordPress plugins: Rank Math’s 404 Monitor logs missing URLs that real visitors and bots hit.

What our own site taught us about status codes

Status codes stop being theory the moment they cost you traffic. Three lessons from our own site in 2026: [CONFIRM 1 and 2]

1. One line can hide your whole site. After a server move, a robots.txt file on the new server contained Disallow: */wp-content/. That blocked Google from loading our theme files, scripts and every uploaded image, so pages couldn’t be rendered properly. Our Semrush visibility fell from about 26% to 4.3% in a single day. The status codes were all “200 OK”; the damage came from what we told Google not to fetch.

2. Caches can show Google an old version of the truth. Even after we fixed robots.txt, Google’s first refetch still pulled the blocking version. Our page cache was serving the old file to anonymous visitors (including Googlebot) while logged-in admins saw the fixed one. Only after purging every cache layer did Google see the clean file. Now /robots.txt is excluded from caching.

3. Your own tools can create 5xx errors. A full-speed site audit crawl on shared hosting made the server time out, and one cache script started returning a 504. The “errors” we were auditing for were being caused by the audit itself. Throttling crawlers to about 5 requests per second fixed it.

The common thread: always check what Google actually receives, not what you see when you’re logged in.


Your monthly status code checklist

Run this once a month, or after any migration, redesign or hosting change.

  • Search Console Page indexing: any jump in “Server error (5xx)”, “Not found (404)” or “Soft 404”?
  • Search Console Crawl stats: rising server errors or a sudden drop in crawl requests?
  • robots.txt returns 200 and doesn’t block CSS, JS or images
  • Your XML sitemap lists only URLs that return 200 (no redirects, no 404s)
  • No redirect chains (A → B → C) or loops
  • Temporary 302s that have become permanent are switched to 301
  • Internal links point to final URLs, not redirects or 404s
  • Rank Math (or your plugin) 404 log reviewed for URLs with real traffic
  • Maintenance pages return 503 with a Retry-After header, never 200
  • Hosting resource usage checked after traffic spikes or audits

For a broader review, use our technical SEO audit checklist, and before any redesign, our website redesign SEO checklist.


Go deeper: the HTTP status code series

Each guide covers causes, fixes and the SEO impact of one problem in detail:

Table of Contents