How to Find and Fix Crawl Errors in Google Search Console

To fix crawl errors, open Google Search Console’s Pages report (under Indexing) and work by type. A genuine 404 for a deleted page is healthy – leave it, or serve a 410. The dangerous errors are the disguised ones: soft 404s (a “not found” page returning a 200 status), redirect chains (fix to a single hop landing on a 200), and 5xx server errors (urgent). Since the December 2025 rendering update, Google may skip rendering any page that returns a non-200 status – which makes the single-page-app trap (JavaScript 404s that return 200) more damaging than ever. Status code first, always.

Open Google Search Console, see a list of crawl errors, and the instinct is to panic and fix everything. That instinct is wrong, and acting on it wastes time on errors that were never problems while missing the ones quietly costing you rankings. The key to crawl errors isn’t fixing them all – it’s knowing which ones matter.

This is the full expansion of Step 7 of the technical SEO strategies guide on GrowWithSakib, and it builds on the concepts in what technical SEO actually is on GrowWithSakib.

First Principle: The HTTP Status Code Is Everything

Before any fix, understand the lens Googlebot uses. When it requests a URL, the very first thing it evaluates is the HTTP status code the server returns – a three-digit number that tells it what happened before it reads a single word of content.

Status CodeMeaningWhat Google Does
200 OKPage exists and loaded fineCrawls, renders, considers for indexing
301 / 302Redirect (permanent / temporary)Follows to the destination
404 Not FoundPage doesn’t existEventually drops it from the index – this is normal
410 GonePage permanently removedDrops it faster than a 404
5xx Server ErrorThe server failedBacks off; repeated 5xx can hurt crawling

Hold onto that phrase – status code first. Almost every serious crawl problem, including the two most damaging ones in this guide, comes down to a page returning the wrong status code for what it actually is.

The Reframe: Not Every Error Is a Problem

Here’s what beginners get wrong: a 404 is not a bug to be eliminated. When you delete a page, it should return a 404 (or 410). That’s Google correctly learning the page is gone. A site with zero 404s is often a site that’s hiding its deleted pages behind the wrong status code.

Search Console labelling thousands of URLs as “Excluded” is not a penalty. Most exclusions are Google following your own signals – canonicals, noindex tags, redirects, and genuine 404s. It only becomes a problem when the pages you care about – service, product, location pages – are the ones being excluded.

So the goal isn’t a spotless report. It’s making sure the right pages return 200 and get indexed, and the wrong pages return honest error codes. The dangerous errors, as we’ll see, are the ones that lie about which category they’re in.

The December 2025 Rendering Update: Why This All Matters More Now

On December 18, 2025, Google updated its JavaScript SEO documentation with a clarification that reshapes how crawl errors interact with modern sites. In Google’s own words: all pages with a 200 HTTP status code are sent to the rendering queue, regardless of JavaScript – but “if the HTTP status code is non-200 (for example, on error pages with 404 status code), rendering might be skipped.”

In plain English: if a page returns any error status, Google may never run its JavaScript. It won’t see anything that JavaScript would have added – content, canonical tags, or a noindex directive. The status code is now a gate that stands before rendering.

For a traditional server-rendered site, this changes little – your content is in the HTML already. But for the JavaScript-heavy sites that dominate modern web development – anything built on React, Vue, Angular or similar – it’s a significant shift. If a page’s real content only appears after JavaScript runs, and that page returns a non-200 status, Google may index nothing at all. It collides with a long-standing trap that this update makes far more dangerous.

The SPA Trap: When a 404 Secretly Returns 200

This is the most important, least understood issue in the whole guide, and it affects almost every single-page application. Here’s the mechanics:

A single-page app (SPA) serves the same HTML shell for every URL, then uses JavaScript to decide what to show. Ask for a page that doesn’t exist, and the server still returns that shell with a 200 OK status – because as far as the server is concerned, it successfully served the app. JavaScript then renders a “Page Not Found” message inside a 200 response.

So a human sees “404 Not Found.” But Google sees a 200 status code – a page that says it exists and loaded fine. This is a soft 404: the content says “not found” while the status code says “all good.”

Google’s own guidance is explicit: SPAs using client-side routing must ensure non-existent URLs return a real 404 status, via server-side routing or a redirect to a URL that does – not a JavaScript message on a 200.

Now combine the two ideas and you get the doubly-dangerous case. Suppose you do make your SPA return a proper 404 for missing pages – correct. But your framework builds the error page’s content with JavaScript too. Per the December 2025 update, Google may skip rendering that non-200 page entirely, so it never sees your helpful “here’s what to do next” 404 page. The takeaway is a single rule: error pages should return the right status code AND have their essential content in the server HTML, not built by JavaScript.

// THE SPA TRAP – server returns 200 for a missing page

GET /this-page-does-not-exist -> 200 OK

(JavaScript then shows a ‘Not Found’ message)

Google sees: 200. Indexes an empty ‘not found’ page.

// THE FIX – server returns a real 404

GET /this-page-does-not-exist -> 404 Not Found

(via server-side routing or prerendering)

Google sees: 404. Correctly drops it. No soft 404.

A client’s React site had a baffling Search Console report: hundreds of ‘Soft 404’ warnings, and several genuinely broken URLs sitting happily in Google’s index as normal pages. Their developer insisted the 404 page ‘worked fine’ – and in a browser, it did.

The problem was invisible from the front end. Every URL, real or not, returned a 200 status from the server, because the React app served its shell for everything and rendered the ‘not found’ message in JavaScript. Google was taking the 200 at face value: it saw hundreds of thin, near-identical ‘Page Not Found’ pages all claiming to be valid, and flagged them as soft 404s.

We worked with their developer to make the server return a true 404 status for unmatched routes, with the core 404 content in the initial HTML. The soft-404 warnings cleared over the following weeks, and the broken URLs dropped out of the index as they should have all along. Nothing looked different to a human – but Google was finally being told the truth.

Fixing Each Error Type

  • When it’s fine: you deleted the page on purpose and nothing important links to it. Leave it – a 404 is the correct response.
  • When to fix: the 404 is a page that should exist (a typo in a link, a broken migration), or valuable external links point to it. 301-redirect it to the closest relevant live page.
  • For permanent removals: serve a 410 Gone instead of 404 – Google drops it a little faster. Don’t redirect deleted pages to the homepage; Google treats a mass of homepage-redirects as soft 404s anyway.
Recommended Hosting Partner

Your Technical SEO Starts With a Strong Hosting Foundation

Hosting performance can influence website speed, reliability, and the overall technical health of your WordPress site.

  • WordPress Hosting
  • SSL Included
  • 24/7 Support
  • Reliable Speed
Explore Hostinger
Affiliate disclosure: We may earn a commission at no extra cost to you.
  • What it is: a page that looks empty or “not found” to Google but returns a 200 OK status. The status code and the content disagree.
  • Common causes: the SPA trap above; empty category or search-results pages; “no products found” pages; thin pages Google judges valueless.
  • The fix: if the page genuinely doesn’t exist, make it return a real 404/410. If it should exist, add genuine content so it’s no longer thin. Match the status code to reality.
  • What it is: a redirect that loops, or a chain – URL A redirects to B, which redirects to C, which redirects to D. Keep redirects and your canonical tags on GrowWithSakib pointing at the same final URL.
  • Why it hurts: each hop wastes crawl budget, dilutes the signal passed along, and slows users. Long chains can cause Google to give up before reaching the destination.
  • The fix: redirect every URL directly to the final destination in a single hop, and confirm that destination returns 200 – never a redirect to another redirect, and never a chain that ends on a 404.
  • What it is: the server failed to respond properly – 500, 502, 503, 504. Unlike a 404, this is almost always urgent, especially on important pages.
  • Common causes: server overload, a crashed application, database timeouts, or an aggressive firewall blocking Googlebot.
  • The fix: check server logs and uptime, resolve the crash or resource limit, and improve caching. For planned maintenance, return a 503 with a Retry-After header – it tells Google to come back later instead of treating the downtime as permanent.

The Workflow: Find, Fix, Verify

  1. Open the Pages report in Google Search Console on GrowWithSakib (Indexing, then Pages). Review the ‘Why pages aren’t indexed’ section and sort by the number of affected pages.
  2. Triage by impact: are the affected URLs pages you actually want indexed? A 404 on an old campaign URL is noise; a 5xx or soft 404 on a service page is urgent.
  3. Use URL Inspection on a sample URL to see the real status code, the crawled page, and – crucially – the rendered HTML, so you can spot JavaScript-hidden problems.
  4. Fix the underlying cause at the server or CMS level – the right status code, a single-hop redirect, restored server health, or genuine content.
  5. Click ‘Validate Fix’ in the relevant report. Google re-crawls the affected URLs and confirms the fix over the following days or weeks.

The URL Inspection tool is your truth-teller. For any URL, it shows the actual status code Google received, when it was last crawled, and the rendered HTML – the page after JavaScript runs. That rendered view is how you catch the SPA trap: if the tool shows a 200 for a page that should be a 404, or an empty render where content should be, you’ve found a disguised error. This is a core part of a full technical SEO audit on GrowWithSakib.

A client migrated their site and, a few weeks later, noticed rankings sliding on pages that used to perform well. Search Console was flagging redirect errors, and their traffic to key landing pages had quietly dropped.

The migration had been done in layers. An old URL redirected to an interim structure, which had itself been redirected during an earlier rebrand, which now redirected to the new URL – three hops, and on some pages four. Googlebot was following A to B to C to D, wasting crawl budget on every request, and on the longest chains it was giving up before reaching the live page.

We mapped every old URL directly to its final destination in a single 301 hop, each landing on a clean 200 page. Crawl efficiency recovered, the redirect errors cleared, and rankings on the affected pages came back over the next month. The content had been fine – Google just couldn’t get to it cleanly.

Crawl Errors and AI Search

The stakes extend beyond Google now. AI crawlers that build answers for ChatGPT, Perplexity and Google’s AI Overviews are even less tolerant of these problems than Googlebot – most don’t render JavaScript at all. A soft 404 or a JavaScript-dependent error page that confuses Google will be completely opaque to them. A clean crawl profile, where every URL returns an honest status code and real content lives in the HTML, is now the price of visibility in both search and AI – as covered in the generative engine optimisation guide on GrowWithSakib.

Common Crawl Error Mistakes

MistakeWhy It HurtsDo This Instead
Trying to fix every 404Wastes time; real 404s are healthyFix only 404s on pages that should exist
Redirecting all deleted pages to homeGoogle treats these as soft 404s404/410 deleted pages; redirect only relevant ones
Ignoring soft 404sThin/empty pages returning 200 mislead GoogleMatch the status code to reality
Letting an SPA return 200 for missing URLsCreates soft 404s Google indexesReturn a real 404 via server-side routing
Building error pages in JavaScriptNon-200 pages may skip rendering (Dec 2025)Put essential content in the server HTML
Leaving redirect chains in placeWastes crawl budget; dilutes signalsOne hop to the final 200 URL
Treating 5xx like 4045xx is urgent and can harm crawlingFix server issues fast; 503+Retry-After for maintenance
Panicking at ‘Excluded’ countsMost exclusions are normal, not penaltiesCheck whether YOUR key pages are affected

Errors in Search Console You Can’t Make Sense Of?

Crawl errors are among the most misread signals in technical SEO. Owners panic over healthy 404s while the genuinely dangerous problems – soft 404s, JavaScript error pages returning 200, redirect chains bleeding crawl budget – sit quietly costing them rankings. Since Google’s December 2025 rendering update, the disguised errors matter more than ever, especially on modern JavaScript-built sites.

At GrowWithSakib, we diagnose crawl errors properly: separating the harmless from the harmful, catching the soft 404s and SPA traps that tools miss, and fixing the status codes and redirects so Google – and the AI engines – can reach and render the pages that matter.

Frequently Asked Questions

How do I fix crawl errors in Google Search Console?

Open the Pages report under Indexing, review the reasons pages aren’t indexed, and triage by impact rather than fixing everything. A genuine 404 on a deleted page is healthy and needs no action. Focus on errors affecting pages you want indexed: redirect a broken URL that should exist, give a soft 404 a real status code, and treat 5xx server errors as urgent. Use URL Inspection to see the true status code and rendered HTML, fix the cause at the server or CMS level, then click Validate Fix so Google re-crawls and confirms.

What is a soft 404 and how do I fix it?

A soft 404 is a page that looks empty or says ‘not found’ to Google but returns a 200 OK status – the content and the status code disagree. Common causes include single-page apps that serve a 200 shell for every URL, empty category or search pages, and thin content Google judges valueless. The fix depends on reality: if the page genuinely shouldn’t exist, make the server return a real 404 or 410; if it should exist, add genuine content so it’s no longer thin. The rule is simple – match the HTTP status code to what the page actually is.

What was Google’s December 2025 rendering update?

On December 18, 2025, Google updated its JavaScript SEO documentation to clarify how it renders pages by status code. It confirmed that all pages returning a 200 status are sent to the rendering queue regardless of JavaScript, but that pages returning a non-200 status – like a 404 – might have rendering skipped entirely. In practice, this means Google may never execute the JavaScript on an error page, so anything that JavaScript would add (content, canonical tags, or a noindex directive) may never be seen. It makes returning correct status codes, and putting essential content in the server HTML, more important than ever.

Why does my single-page app return 200 for pages that don’t exist?

Because a single-page app serves the same HTML shell for every URL, then uses JavaScript to decide what to display. When someone requests a URL that doesn’t exist, the server still returns that shell with a 200 status, since it successfully served the app, and JavaScript then renders a ‘Not Found’ message inside that 200 response. A human sees a 404 page, but Google sees a 200 status and a valid page – a soft 404. The fix is to make the server return a real 404 status for unmatched routes, using server-side routing or prerendering rather than a JavaScript message.

Are 404 errors bad for SEO?

Not inherently – a 404 for a genuinely deleted page is the correct, healthy response, and Google expects to find them. A site with zero 404s is often hiding deleted pages behind the wrong status code, which causes bigger problems. A 404 only needs fixing when it’s on a page that should exist (a broken link or a botched migration) or when valuable external links point to it, in which case you redirect it to the closest relevant live page. Don’t waste effort eliminating healthy 404s; focus on the pages that should be returning 200 but aren’t.

How do I fix redirect chains?

A redirect chain is when one URL redirects to another, which redirects to another, before reaching the final page. Each hop wastes crawl budget, dilutes the ranking signal passed along, and slows users, and long chains can cause Google to give up before reaching the destination. To fix them, update each redirect to point directly to the final URL in a single hop, and confirm that final URL returns a 200 status. Never let a redirect point to another redirect, and never let a chain end on a 404 – map every old URL straight to its live destination.

What should I do about 5xx server errors?

Treat them as urgent, especially on important pages, because unlike a 404 a 5xx means your server failed to respond and repeated failures can reduce how often Google crawls you. Check your server logs and uptime monitoring to find the cause – often overload, a crashed application, a database timeout, or a firewall blocking Googlebot – and resolve it, improving caching where you can. For planned maintenance, return a 503 status with a Retry-After header, which tells Google the downtime is temporary and to come back later, rather than risking your pages being treated as permanently gone.

How do I know which crawl errors actually matter?

Ask one question of each error: is the affected URL a page you want indexed? A 404 on an old campaign link or a soft 404 on a filtered URL is usually noise, while a 5xx or soft 404 on a service, product, or location page is urgent. A high ‘Excluded’ count in Search Console is not a penalty – most exclusions are Google correctly following your canonicals, noindex tags, redirects, and genuine 404s. It only becomes a real problem when the pages you care about are the ones being excluded, so always check which specific URLs are affected before acting.

Key Takeaways

  • The HTTP status code is the first thing Googlebot evaluates – almost every serious crawl error is a page returning the wrong code for what it actually is.
  • A real 404 is healthy: it’s Google correctly learning a page is gone. A high ‘Excluded’ count is usually normal, not a penalty.
  • The dangerous errors are the ones disguised as success – soft 404s and JavaScript ‘not found’ pages that return a 200 status while showing nothing useful.
  • The December 2025 rendering update: Google may skip rendering any page that returns a non-200 status, so its JavaScript – and any content, canonical or noindex it adds – may never run.
  • The SPA trap: single-page apps serve a 200 shell for every URL, so missing pages return 200 and become soft 404s. Make the server return a real 404 via server-side routing.
  • Error pages should return the correct status code AND have their essential content in the server HTML, not built by JavaScript that may never execute.
  • Fix redirect chains to a single hop landing on a 200; treat 5xx as urgent and use 503 + Retry-After for planned maintenance.
  • Use URL Inspection to see the real status code and rendered HTML, fix the cause at the server level, then click Validate Fix to confirm.