August 8, 2026

Understanding 404 Errors in SEO: When They Hurt and When They Don’t

Few status codes in SEO get more misunderstood than the humble 404. Some practitioners treat every 404 like a five-alarm fire, redirecting URLs back to the homepage, rebuilding deleted pages, or flagging them in audit reports as critical issues. Others ignore them entirely and let broken links pile up for years. Both extremes get it wrong.

A 404 is just an HTTP response, it tells a client that the server understood the request but cannot find the resource at that URL. That’s it. Whether a given 404 hurts your SEO depends entirely on context: whether the URL had external links pointing to it, whether it was earning organic traffic, whether users are still trying to reach it, and whether it should ever have existed in the first place. The status code itself is neutral.

This post walks through what 404s actually mean to Google, the difference between a hard 404 and a soft 404, how to find the ones worth caring about, and the right way to fix them, which is sometimes to do nothing at all.

What a 404 actually is

HTTP 404 Not Found is a client-error response. The server is telling the requesting agent, a browser, a crawler, an API client, that the URL it asked for does not correspond to a resource. The response itself is successful in the sense that the server is functioning correctly; it just has nothing to serve at that path.

404s are normal. Every site of meaningful size has them. URLs get renamed, products get discontinued, blog posts get deleted, typos happen in inbound links, scrapers fabricate URLs that never existed. Google has stated repeatedly, most recently in John Mueller’s office-hours hangouts and in Search Central documentation, that 404 errors are a natural part of the web and do not, by themselves, harm a site’s rankings.

Where 404s cause SEO problems is when they’re returned for URLs that should resolve, pages that have backlinks, pages users are actively searching for, pages internally linked from your own navigation. Those represent lost equity and bad user experience. The rest are just noise.

Hard 404 vs soft 404

This distinction trips up a lot of people, including some developers who should know better.

Hard 404

A hard 404 is the correct behavior: the server returns an HTTP status of 404 in the response header, and the body typically renders a “not found” page. Crawlers see the 404 status and treat the URL as missing. Google will eventually drop it from the index after repeated visits confirm it’s gone.

Soft 404

A soft 404 is when a page tells the user it doesn’t exist but returns an HTTP 200 OK status to the crawler. This is what happens when a CMS renders an empty “no results found” template at a 200, when a deleted product page redirects to the homepage with a 200, or when a thin page contains almost no content and Google decides it’s effectively a not-found.

Google flags soft 404s in Search Console’s Pages report (formerly Index Coverage) because they’re misleading, the crawler wastes time fetching and assessing pages that the server claims are valid. Soft 404s are worse than hard 404s because they consume crawl budget and confuse signals. If a page is gone, return a 404 or 410. If it has been replaced, return a 301. Never return a 200 with empty or generic content.

404 vs 410: does the difference matter?

410 Gone is the close cousin of 404. The semantic difference is intent: 404 means “I can’t find this resource,” while 410 means “this resource existed and has been intentionally removed, do not come back.”

In practice, Google treats them almost identically. Mueller has confirmed that 410 may be removed from the index slightly faster than 404, because the 410 is a definitive signal, Google won’t keep retrying for as long. For most sites the difference is negligible. Use 410 when you’ve permanently killed a page and want it deindexed cleanly. Use 404 for everything else, including the typos and fabricated URLs you don’t care about.

One scenario where 410 is genuinely useful: cleaning up after a hack or a content scrape, where you want a large batch of URLs dropped from the index quickly without the ambiguity of a 404.

When 404s are fine and when they aren’t

The triage question is always the same: does this URL have value worth preserving?

404s that don’t matter

  • URLs that never existed, typos, fabricated paths, bot probes for /wp-admin on a non-WordPress site
  • Old URLs with no backlinks, no organic traffic, and no current equivalent on the site
  • Expired event pages, discontinued products with no successor, and time-bound content where a 404 (or 410) is the honest answer
  • URLs blocked by robots.txt that crawlers are still attempting

404s that damage SEO

  • URLs with external backlinks, every broken inbound link is lost link equity
  • URLs that were ranking for valuable queries and earning organic clicks
  • URLs still referenced in your sitemap, internal navigation, or canonical tags
  • URLs that appear in paid campaigns, email footers, or printed materials

The goal isn’t to drive your 404 count to zero. It’s to make sure no valuable URL is returning one.

How to find the 404s that matter

You need three lenses: what Google sees, what your site links to internally, and what the rest of the web links to from outside.

Google Search Console

Open the Pages report under Indexing. Look for the “Not found (404)” and “Soft 404” rows under the “Why pages aren’t indexed” table. GSC shows you URLs Google has attempted to crawl and the dates it last tried. Export the list, then cross-reference each URL against your historical analytics and backlink data to decide whether it deserves a fix.

GSC is not exhaustive, Google samples, but it’s the most authoritative view of what Googlebot is actually encountering on your domain.

Screaming Frog

Run a full crawl, then filter the Response Codes tab for “Client Error (4xx).” This surfaces 404s that your own internal links are pointing to, broken navigation, dead links inside blog posts, stale references in footers. These are the easiest 404s to fix because you control both ends: update the link or remove it.

For each 404, click into the Inlinks panel at the bottom of the screen to see exactly which pages are linking to the broken URL. That’s your fix list.

Ahrefs Broken Backlinks report

This is the one most SEOs underuse. In Site Explorer, plug in your domain, open Backlinks > Broken. Ahrefs shows you external sites linking to URLs on your domain that currently return a 4xx. Each row represents inbound link equity sitting on the floor.

Sort by referring domain authority (DR) and unique referring domains. Pick off the highest-value broken inbound links first, typically a 301 redirect from the dead URL to the closest live equivalent reclaims most of the equity. If a high-DR site links to /old-product-page and you have /new-product-page, redirect old to new and you’ve recovered that link in a couple of minutes.

How to fix 404s the right way

There are exactly three correct responses to a 404, and the choice depends on the URL’s history and current value.

  1. 301 redirect to a relevant alternative. Use this when the old URL has equity (backlinks, traffic) and there’s a topically relevant page on the site that satisfies the same intent. The destination must actually be relevant, don’t redirect a deleted blog post about email marketing to your homepage. Google treats irrelevant redirects as soft 404s and won’t pass the equity.
  2. Restore the page. If you deleted something that was earning links or traffic and you can republish it, even a leaner version with updated content at the same URL, that’s almost always better than a redirect. The page recovers its rankings directly instead of bleeding equity through a redirect chain.
  3. Let it 404 (or 410). If the URL has no equity, no traffic, no relevant successor, leave it. A 404 is the correct response. Google will drop it from the index, and your site is no worse off.

What you should not do: blanket-redirect every 404 to your homepage, redirect to a topically unrelated page just to “preserve link juice,” or leave broken inbound links unfixed because the work feels tedious. The first two get flagged as soft 404s; the last one leaves money on the table.

Building a useful custom 404 page

Your 404 template still returns a 404 status, that’s non-negotiable, but the HTML it renders should help the user find what they were looking for. A useful 404 page includes:

  • A clear, human message explaining the page isn’t available (skip the cute 404 robot illustrations if your brand is serious)
  • A working site search box
  • Links to your top categories or most-trafficked pages
  • A link to the homepage
  • Contact information for anyone who’s actively stuck

Verify the page returns 404 in the response header, not 200. You can check this in Chrome DevTools under the Network tab, or with a quick curl: curl -I https://yoursite.com/this-page-does-not-exist. The first line of the response should read HTTP/2 404 or similar.

404s and crawl budget on large sites

For a 50-page brochure site, crawl budget is irrelevant. Google has more than enough capacity to recrawl your whole site daily without breaking a sweat, and a few hundred 404s won’t affect anything.

For an ecommerce catalog with hundreds of thousands of URLs, or a publisher with a decade of archived content, accumulated 404s become a real problem. Googlebot recrawls known URLs on a decaying schedule, even dead ones, and every fetch of a dead URL is a fetch it didn’t spend on a live one. If your sitemap is full of expired product pages, your internal linking still points to dead category URLs, and external sites are linking to a hundred old slugs that all return 404, you’re burning crawl budget on nothing.

The fix is the same as above, applied at scale: 301 the URLs with equity to relevant successors, return 410 for the ones that are gone for good, and clean up your sitemap and internal links so you’re not telling Google to recrawl URLs you’ve already killed. Server log analysis, in Screaming Frog Log File Analyser or a similar tool, will show you exactly how much of Googlebot’s time is being spent on 4xx responses.

Putting it together

404 errors aren’t a problem to eliminate; they’re a signal to triage. The right workflow on most sites is a quarterly pass: pull the broken inbound links from Ahrefs and 301 the high-value ones, run Screaming Frog and fix any internal links pointing to 4xx URLs, check the Pages report in Search Console for new soft 404s your CMS might be generating, and verify the custom 404 template still returns the correct status code.

Do that consistently and you’ll capture the equity that matters while ignoring the noise that doesn’t. The sites that handle 404s well aren’t the ones with zero of them, they’re the ones where every 404 returned is genuinely a page that shouldn’t exist anymore.

Discover more from seobyzack.com

Subscribe now to keep reading and get access to the full archive.

Continue reading