Skip to content
August 29, 2026

Soft 404 vs Hard 404: How to Audit & Fix Redirect Chains

Soft 404 vs. Hard 404 How to Audit and Fix Broken Redirect Chains in Bulk expert guide

Google Search Console flags “Soft 404” and “Not found (404)” as separate issues — because they are. One wastes your crawl budget silently. The other loses your link equity visibly. And redirect chains compound both. Here’s how to diagnose and fix all three.

If you’ve ever opened Google Search Console, navigated to Pages → Why pages aren’t indexed, and seen “Soft 404” alongside “Not found (404)” — you’ve seen two problems that look similar but require very different fixes.

A hard 404 is a page that’s gone and says so honestly. A soft 404 is a page that’s gone but lies about it — returning a 200 OK status code while showing empty or irrelevant content. And a redirect chain is what happens when the fix for either of these errors creates a new problem: a series of bouncing redirects that drains crawl budget and dilutes link equity before anyone reaches the actual page.

This guide explains the difference between all three, shows you exactly how to find them, and walks through the fix for each — including how to audit hundreds of URLs at once without paying for Screaming Frog or Ahrefs.

1. What Is a Soft 404? What Is a Hard 404?

Hard 404: the honest answer

A hard 404 is what happens when your server correctly tells the browser (and Googlebot) that a page doesn’t exist. The server returns an HTTP 404 Not Found status code, and typically displays a “page not found” message to the user. For a full explanation of what this error code means, see our guide to what a 404 error is.

From Google’s perspective, a hard 404 is completely normal and healthy. When Googlebot encounters one, it knows the page is gone, stops wasting crawl budget on it, and eventually removes it from the index. Google’s 2025 guidance confirms that 404s are a strong signal for Googlebot to not crawl that URL again.

Soft 404: the misleading answer

A soft 404 is trickier. The page looks dead to a human — it might show “no results found,” an empty template, or a generic error message — but the server returns a 200 OK status code, as if everything is fine. Google detects the mismatch between the “everything’s fine” signal and the empty content, and flags it as a “Soft 404” in Search Console.

The problem: because the server said 200 OK, Googlebot may continue to crawl this URL repeatedly, wasting crawl budget on a page that has no useful content. Unlike a hard 404 which gets dropped from the index cleanly, a soft 404 creates ongoing crawl waste.

The key insight: A soft 404 isn’t a 404 error. It’s the opposite — your server says “success” on a page that’s hollow. The problem isn’t a missing page. It’s a page that lies about being present.

Common causes of soft 404s

Soft 404s typically emerge from five situations: empty search results pages that return 200 OK instead of handling the “no results” state properly; category pages with zero products that still render the page template; CMS pages that show a “page not found” message in the body but don’t set the HTTP status code to 404; redirects from deleted pages to the homepage or an irrelevant page (Google can flag this as a soft 404 because the redirect destination doesn’t match what the original URL was about); and thin or stub pages that have a template but virtually no unique content.

2. Side-by-Side Comparison: Soft 404 vs. Hard 404 vs. 410 Gone

Factor Hard 404 Soft 404 410 Gone
HTTP Status Code 404 Not Found 200 OK (misleading) 410 Gone
What It Tells Google Page not found — might be temporary Page exists (but it doesn’t) Page permanently removed — never coming back
Google’s Crawl Behavior Stops crawling after a few weeks Continues crawling (wastes crawl budget) Drops from index within days
Index Removal Speed Weeks to months May never be fully dropped Days
Crawl Budget Impact Minimal — Google learns to skip Ongoing waste Minimal — immediate drop
When to Use Page might return, or removal is ambiguous Never intentional — always a bug to fix Content permanently and intentionally deleted
Search Console Label Not found (404) Soft 404 Not found (404) — grouped with 404s
Link Equity Lost — no equity passes Wasted on empty page Lost — no equity passes

Important: Google’s John Mueller has stated that 404 and 410 are treated similarly for SEO purposes. However, in practice, 410 signals permanence more clearly and typically leads to faster deindexing. For bulk cleanups (migrations, spam removal), 410 can save weeks of crawl waste compared to 404. For pages with valuable backlinks, use a 301 redirect instead of either.

3. Why This Distinction Matters for SEO

The practical impact breaks down into three areas.

Crawl budget. Every website gets a finite allocation of Googlebot’s attention. Soft 404s consume that budget on pages that will never rank, which means Googlebot has fewer requests available to discover and index your real content. Google’s own documentation notes that the average website wastes 30–40% of its crawl budget on duplicate content, parameterized URLs, and low-value pages. Soft 404s contribute directly to this waste. Fixing crawl errors — including broken links and soft 404s — has been associated with 20–35% average organic traffic increases in industry case studies.

Link equity. If an external site links to a URL on your site that returns a hard 404, the link equity from that backlink is lost entirely. According to broken link statistics, 66.5% of all backlinks built since 2013 have died — and many of those deaths happen because the destination site changed its URLs without setting up redirects. Every backlink pointing at a 404 page is ranking authority you once earned and are now throwing away.

User experience. Users who click a link and land on a broken page bounce. That’s a dead end in your conversion funnel. Whether the error is a hard 404, a soft 404 showing an empty template, or a redirect chain that times out on mobile — the user outcome is the same: they leave.

4. Redirect Chains: The Hidden Third Problem

A redirect chain is what happens when URL A redirects to URL B, which redirects to URL C, which redirects to URL D — and only URL D actually loads. Every intermediate hop is a separate HTTP request that Googlebot has to follow, adding latency and consuming crawl budget.

Google’s site-move documentation states that Googlebot can follow up to 10 hops in a redirect chain, but recommends keeping chains to three or fewer. Past that limit, Google may stop following and the final URL might not get crawled at all during that attempt.

Example: A 4-hop redirect chain after a migration

// What Googlebot sees:
http://example.com/old-post          → 301
https://example.com/old-post         → 301
https://example.com/old-post/        → 301
https://example.com/blog/new-post    → 301
https://example.com/blog/new-post/   → 200 OK

// What it should be:
http://example.com/old-post          → 301
https://example.com/blog/new-post/   → 200 OK

Redirect chains are especially common after site migrations, HTTPS upgrades, trailing slash inconsistencies, and CMS changes. They compound over time — each migration adds a new layer of redirects on top of the old ones, and nobody goes back to flatten the chain. You can catch trailing slash inconsistencies with a trailing slash checker before they turn into redirect chain layers.

A redirect loop is the worst-case variant: URL A redirects to URL B, which redirects back to URL A, creating an infinite cycle. Browsers display an “ERR_TOO_MANY_REDIRECTS” error, and the page never loads at all.

5. How to Find Soft 404s, Hard 404s, and Redirect Chains

Method 1: Google Search Console (free)

Go to Pages → Why pages aren’t indexed. Look for two categories: “Not found (404)” shows your hard 404 errors; “Soft 404” shows pages Google detected as functionally empty despite returning a 200 status. Export both lists. These are the URLs Google is already flagging — they’re your highest-priority fixes.

Method 2: Crawl your site with a broken link checker

A broken link checker crawls your site the same way Googlebot does — following every link on every page and reporting which ones return error status codes. This catches internal broken links that Search Console might not surface, and also identifies external links on your site that have died. Our tool runs entirely in your browser, requires no signup, and processes results in real time.

Method 3: Bulk status code check

If you already have a list of suspect URLs (from Search Console, a sitemap export, or a previous audit), paste them into a bulk URL status code checker. This returns the exact HTTP status code for every URL — 200, 301, 302, 404, 410, 500 — in a single pass. It’s the fastest way to verify whether a flagged URL is a genuine 404, a soft 404 (returns 200 with no content), or part of a redirect chain (returns 301/302).

Method 4: Browser DevTools (for individual URLs)

Open Chrome DevTools (F12), go to the Network tab, check “Preserve log,” and load the suspect URL. Every redirect hop appears as a separate row with its status code and destination. You’ll immediately see if there’s a chain (multiple 301/302 rows) or a loop (the same URLs repeating).

Check hundreds of URLs in one pass

Paste your URL list into ToolsVale’s Bulk URL Status Code Checker. See every status code — 200, 301, 302, 404, 410, 500 — instantly. Free, no signup, runs in your browser.

Bulk URL Status Code Checker →
Broken Link Checker →

6. How to Fix Each One: The Decision Tree

Not every broken URL gets the same fix. The right action depends on whether the page has backlinks, whether the content has a relevant replacement, and whether the removal is permanent.

The URL returns a Soft 404

The page has real content that should rank: The page is probably too thin. Add substantive, unique content so Google no longer considers it empty. This is a content problem, not a technical one.
The page is truly gone (empty template, “no results”): Return a proper 404 or 410 status code instead of 200 OK. Fix your server configuration or CMS settings so the response code matches reality.
The page redirects to the homepage or an irrelevant page: Google may flag this as a soft 404 because the redirect destination doesn’t match the original content. Either redirect to a genuinely relevant page, or return a 404/410 if no relevant page exists.

The URL returns a Hard 404

The page has backlinks pointing to it: Set up a 301 redirect to the closest relevant page on your site. This reclaims the link equity that’s currently being lost. Run a backlink check on the 404 URL first — if it has zero backlinks, a redirect is unnecessary.
The page has no backlinks and no traffic: A 404 is fine. Google will drop it from the index on its own. No action needed unless internal links still point to it.
The page was permanently removed and will never return: Consider using a 410 Gone instead of a 404. Googlebot drops 410 pages from the index faster — within days rather than weeks.

The URL is part of a Redirect Chain

Flatten the chain: Update the redirect so the original URL points directly to the final destination in a single 301 hop. Remove all intermediate redirects.
Update internal links: After flattening the redirect, find every internal link on your site that points to the old URL and update it to point directly to the final destination. This eliminates the redirect hop entirely for internal traffic.
Check for loops: If the same URL appears twice in the redirect path, you have a loop. Identify which redirect rule is causing the cycle and remove or correct it.

7. The Bulk Audit Workflow (Step-by-Step)

Here’s the practical workflow for auditing and fixing all three issues across your entire site. This works for sites of any size — from 50 pages to 50,000.

01

Export your problem URLs

Go to Google Search Console → Pages → Why pages aren’t indexed. Export all URLs flagged as “Not found (404)” and “Soft 404.” Also export your full sitemap URL list — you’ll check these for redirect chains.

02

Verify status codes in bulk

Paste all exported URLs into the Bulk URL Status Code Checker. This returns the actual HTTP response for each URL. Look for: URLs returning 200 (potential soft 404s — check if they have real content), URLs returning 301/302 (check for chains by following the redirect destination), URLs returning 404/410 (confirmed hard errors — check for backlinks).

03

Crawl for internal broken links

Run your homepage URL through the Broken Link Checker. This crawls your entire site and finds every link that leads to a 4xx or 5xx error — including internal links you may not know about. These are often the highest-priority fixes because they’re entirely within your control.

04

Prioritize by impact

Sort your list by priority: pages with backlinks pointing to them (redirect to reclaim equity) → soft 404s (fix the status code or add content) → redirect chains on high-traffic pages (flatten to single hop) → orphan 404s with no backlinks (lowest priority — can leave as-is).

05

Apply fixes

For 301 redirects: add rules to your .htaccess (Apache), server config (Nginx), or WordPress redirect plugin. For soft 404 fixes: update your CMS or server to return proper status codes. For content fixes: add unique, relevant content to thin pages. For redirect chain flattening: update the first redirect in the chain to point directly to the final URL.

06

Clean your sitemap and validate

Remove all 404 and 410 URLs from your XML sitemap. Remove any URLs that redirect — your sitemap should only contain URLs that return 200 OK. Then run your sitemap through a sitemap validator to confirm no dead URLs remain.

07

Verify and monitor

Re-run the bulk status code check on your fixed URLs to confirm the correct codes are now returning. Check Search Console again in 1–2 weeks — the “Soft 404” and “Not found” counts should decrease as Google recrawls the fixed URLs. Set a calendar reminder to repeat this audit monthly.

8. How to Prevent These Issues

Before deleting any page, check if it has backlinks. If it does, set up a 301 redirect before removal. This single habit prevents the most common source of link equity loss.

After any site migration, run a bulk status code check on every old URL to confirm redirects are working and no chains have formed. Trailing slash inconsistencies are a common source of accidental redirect chains — use a trailing slash checker to catch these before they compound.

Configure your CMS correctly so that deleted pages return a proper 404 (or 410) status code, not a 200 OK. Test this by deleting a test page and checking its HTTP status in your bulk URL checker.

Keep your sitemap clean. Your XML sitemap should only contain URLs that return 200 OK. Run your sitemap validator monthly to catch any dead URLs that have crept in.

Run a monthly audit. A five-minute monthly check of Search Console’s indexing report catches new soft 404s and 404s before they accumulate. For a comparison of tools you can use for this, see our guide to the best broken link checkers.

9. Frequently Asked Questions

What is the difference between a soft 404 and a hard 404?

A hard 404 correctly returns an HTTP 404 status code, telling search engines the page doesn’t exist. A soft 404 returns a 200 OK status but displays empty or irrelevant content — misleading search engines into thinking the page exists when it functionally doesn’t. Soft 404s are worse for crawl budget because Google keeps crawling them.

Do soft 404 errors hurt SEO?

Yes, indirectly. They waste crawl budget because Googlebot continues to crawl pages that claim to be OK but have no useful content. On large sites, thousands of soft 404s can meaningfully reduce how often Google crawls your important pages. Fixing them has been associated with measurable improvements in crawl efficiency and indexing speed.

Should I use 404 or 410 for deleted pages?

Use 404 when a page might come back or the removal is ambiguous. Use 410 when the content has been permanently and intentionally removed. Google drops 410 pages from the index faster — often within days versus weeks for 404s. However, for pages with valuable backlinks, use a 301 redirect to a relevant page instead of either status code, so you preserve the link equity.

How do redirect chains affect SEO?

Each hop in a redirect chain is a separate HTTP request that consumes crawl budget and adds latency. Google can follow up to 10 hops but recommends keeping chains under three. If any single hop in the chain breaks, everything downstream becomes unreachable. Long chains also increase page load time for users, especially on mobile networks. Ideally, every redirect should be a single hop from origin to final destination.

How do I find soft 404 errors on my website?

Start with Google Search Console: go to Pages → Why pages aren’t indexed and look for URLs flagged as “Soft 404.” For a more thorough audit, run a full site crawl with a broken link checker, then verify suspect URLs using a bulk URL status code checker. Any URL that returns 200 OK but has no substantive content is likely a soft 404.

How often should I audit for broken links and redirect chains?

Monthly for active sites. Immediately after any site migration, CMS update, URL structure change, or bulk content deletion. Set a calendar reminder — these issues accumulate silently and compound over time.

Can I check URLs in bulk without Screaming Frog or Ahrefs?

Yes. ToolsVale’s Bulk URL Status Code Checker lets you paste hundreds of URLs and see the HTTP status code for each one — free, no signup, no download. For a full site crawl, our Broken Link Checker follows every link on your site and reports broken ones automatically.

Summary

Hard 404s are normal and healthy — they tell Google a page is gone. Soft 404s are the hidden problem — they tell Google a page exists when it doesn’t, wasting crawl budget silently. Redirect chains compound both issues by adding latency and draining equity across multiple hops. The fix isn’t complicated: export your problem URLs from Search Console, verify their status codes in bulk, apply the right fix for each type (301 redirect for pages with backlinks, proper 404/410 for pages without, content improvement for thin pages, chain flattening for redirects), then clean your sitemap and validate.

The entire audit takes less than an hour for most sites. The crawl budget and indexing improvements start showing within weeks.