If Search Console shows a long list of “Not found (404)” pages, the first thing to know is that most of them are harmless. To fix 404 errors for SEO, you don’t need to clear every one. You need to find the few that matter, redirect or restore those, and leave the rest alone.
Google’s own guidance says a page that returns a 404 is simply dropped from the index. That doesn’t count against the rest of your site. The real damage comes from losing pages that had traffic or links, from soft 404s that confuse Google, and from messy redirects. In this guide I show you how to tell them apart and clean up without losing rankings.
404 vs 410 vs Soft 404: What Each One Means
404 Not Found
A 404 is the server saying it can’t find anything at that URL. It doesn’t say if the page is gone for good or just missing for now.
Google’s documentation on HTTP status codes says that if a URL was indexed and now returns a 404, Google removes it from the index. URLs that Google has never seen before and that return a 404 aren’t processed at all. Googlebot keeps checking the URL for a while, but it crawls it less and less often. I explain the other codes in my guide to what each HTTP status code tells Google. You don’t need the Removals tool to clear these, and I explain when it does help in my guide to the Search Console Removals tool.
410 Gone
A 410 says the page was removed on purpose and won’t come back. That’s a clearer message for people and for other tools.
For Google Search, though, the practical difference is small. Google’s crawler documentation says all 4xx errors except 429 are treated the same way: the content doesn’t exist. Use 410 if your platform makes it easy and you want to be clear. But don’t spend days changing 404s to 410s hoping for a ranking boost. In my experience, that time is better spent on broken internal links.
Soft 404
A soft 404 is a page that returns a 200 (success) status code but looks like an error to Google. Common examples include:
- A “Sorry, this product is no longer available” page that still returns 200.
- An empty category or search results page with no items on it.
- A page that shows up blank because JavaScript failed to load the content.
- A deleted page that redirects to the home page or to an unrelated page.
Soft 404s are worse than real 404s because the signals clash. The server says the page is fine, but the content says it isn’t. Google has to guess, and that wastes crawling on pages that should never be indexed.
In Search Console’s Page indexing report, these show up under “Soft 404”. Google’s advice is to return a real 404 or 410 if the page is truly gone. If the page is valid, add enough useful content that it no longer looks like an error.
Do 404 Errors Hurt Your Rankings?
Usually, no. Google has said for years that 404s are a normal part of the web and don’t harm your site’s overall rankings. The Page indexing report itself says a 404 is “not necessarily a problem” if the page was removed without a replacement.
There are three cases where a 404 does cost you:
- The page had value. If a page that drew search traffic or earned backlinks now returns a 404, that traffic stops and the links point to nothing. A 301 redirect (a permanent redirect) to an equivalent page would have kept most of that value.
- You link to it yourself. Broken internal links waste crawling, interrupt visitors and break the topic signals your internal links are meant to build.
- It’s in your sitemap. A sitemap should only list live URLs that can be indexed. Listing 404s tells Google your sitemap can’t be trusted.
Google’s own troubleshooting advice matches this. It says to fix 404s that you link to or list in a sitemap, and to redirect pages that have moved. Everything else can usually be left alone. I’d fix these three cases before anything else.
How to Find 404 Errors
Google Search Console: Page Indexing Report
Go to Indexing > Pages and scroll to “Why pages aren’t indexed”. When I audit a site, this is where I start. The reasons that matter here are:
- Not found (404): URLs Google tried to crawl that returned 404.
- Soft 404: pages returning 200 that Google thinks are errors.
- Redirect error: redirect chains that are too long, redirect loops, redirect URLs that are too long, or bad or empty URLs in the chain.
- Blocked due to other 4xx issue: other client errors such as 401 or 403.
Click into a reason to see example URLs. Use the URL Inspection tool on any URL to see where Google found it (“Referring page”) and what it saw on the live page. The Page indexing report help page explains each status in detail.
Keep in mind that the list shows sample URLs, not every URL. It also includes old URLs Google remembers from years ago. So a big number doesn’t always mean a big problem.
Site Crawlers
A desktop or cloud crawler follows every link on your site and reports which ones return 4xx codes. This is the best way to find broken internal links, because it shows the exact page each broken link sits on.
Run the crawl with your sitemap included too. That way you’ll catch 404s in the sitemap, plus orphan URLs (pages the sitemap lists but no page links to).
Server Logs
Your access logs record every request, including Googlebot’s. Filter for status 404 and sort by number of hits. This shows which missing URLs bots and people really keep asking for. To me, that is a better sign of priority than a crawler’s list.
Logs also catch things other tools miss, like old URLs that other sites still link to. If you’ve never worked with logs, our beginner’s guide to log file analysis walks through the setup.
Google Analytics 4
GA4 doesn’t record status codes by default, but you can still spot 404 visits. Most 404 templates have their own page title, such as “Page not found”.
- Open Reports > Engagement > Pages and screens.
- Switch the main dimension to “Page title and screen class”.
- Search for your 404 page title.
- Add “Page path and screen class” as a secondary dimension to see which URLs were requested.
Adding “Page referrer” in an Exploration shows where those visitors came from. That tells you which of your pages or which other sites hold the broken link. Our guide to GA4 Explorations for SEO covers how to build this kind of report.
When to 301 Redirect and When to Leave a 404
This is the decision that matters most. The rule is simple: only redirect when there’s a truly equivalent page.
Redirect With a 301 When:
- The page has moved to a new URL, for example after a slug change or a site restructure.
- Two pages were merged, and the old one’s content now lives on the new one.
- A product was replaced by a direct successor, such as last year’s model.
- The URL has backlinks or traffic, and there’s a close match for what visitors expected.
- The URL was simply mistyped in a link you can’t edit, such as a missing letter in a well-linked press article.
Leave It as a 404 (or 410) When:
- The content is gone and nothing on the site replaces it.
- The URL was never real. For example, a spam bot testing random paths, or a broken URL with junk parameters.
- The only “match” would be the home page or a broad category that doesn’t meet the visitor’s need.
Redirecting everything to the home page is the most common mistake I see. Visitors land somewhere unexpected and leave. Google often treats a redirect to an unrelated page as a soft 404, so you don’t keep the link value you were hoping to save.
Here is a simple example. An online shop stops selling a blue running shoe. If a near-identical model replaced it, redirect to that. If the shop simply stopped selling that type of shoe, a 404 with helpful links to the running category is more honest and works just as well.
Which Redirect Type to Use
Google’s documentation on redirects splits them into permanent and temporary:
- Permanent (301, 308): Google treats the destination as the canonical URL (the main version of the page). Use these for moved or merged pages.
- Temporary (302, 303, 307): Google follows them, but the old URL can stay in search results. Only use these when the change will really be undone later.
Server-side redirects are the most reliable. Meta refresh and JavaScript redirects are backups for platforms where you can’t change server settings.
A basic Apache example in .htaccess looks like this:
Redirect 301 /old-blue-runner/ /shoes/blue-runner-2/
And the NGINX version:
location = /old-blue-runner/ {
return 301 /shoes/blue-runner-2/;
}
Redirect Chains and Loops
A redirect chain is when URL A redirects to B, which redirects to C. Chains build up naturally over several redesigns.
Google’s crawlers follow up to 10 redirect hops by default. After that, the crawl stops and Search Console reports a redirect error. Even short chains are worth fixing. Every hop slows visitors down and adds another place for something to break.
A redirect loop is when URLs redirect back to each other, for example A to B and B back to A. The browser gives up with a “too many redirects” error, and the page can’t be crawled or seen at all. Loops usually come from rules that fight each other. For example, a plugin adds a trailing slash while a server rule removes it.
To fix both:
- Crawl the site and export every redirect, including the full chain for each.
- Update each redirect so it points straight to the final destination in one hop.
- Update internal links to point at the final URL directly, so they don’t trigger a redirect at all.
- For loops, find the two rules that clash and remove one. Check HTTP to HTTPS, www to non-www and trailing slash rules first, because these are the usual causes.
What a Good Custom 404 Page Looks Like
You can’t stop every 404, but you can make the experience useful. A good 404 page does three things. It returns the right status code, it explains what happened, and it helps the visitor move on.
- Return a real 404 status. This is the most important rule. A friendly “not found” page that returns 200 is a soft 404. Check the status in your browser’s developer tools (Network tab) or with a header checker. It’s the first thing I test on any new 404 page.
- Say clearly that the page doesn’t exist, in plain words, without blaming the visitor.
- Add a search box so visitors can look for what they wanted.
- Link to your most useful pages, such as main categories, popular guides or the contact page.
- Keep your normal header, footer and menu, so the visitor knows they’re still on your site.
- Don’t auto-redirect to the home page after a few seconds. It’s confusing and creates the soft 404 pattern above.
Handling 404s in WordPress
WordPress does a fair amount of this for you. But it helps to know what’s automatic and what isn’t.
- The 404 template: WordPress uses your theme’s
404.phpfile and returns a proper 404 status. Edit it (or use your theme’s settings) to add search and helpful links. Avoid plugins that redirect all 404s to the home page. - Slug changes: when you change the slug (the last part of the URL) of a published post, WordPress stores the old slug and redirects it to the new URL by itself. This doesn’t cover every case, such as changing your permalink structure, deleting a page, or moving content between post types.
- URL guessing: for some 404s, WordPress tries to guess the post you meant and redirects to it. That’s usually helpful, but it can sometimes send visitors to the wrong page. Developers can switch it off with the
do_redirect_guess_404_permalinkfilter. - Redirect management: for anything beyond slug changes, use a redirect plugin or your SEO plugin’s redirect manager. Many of these also log 404 hits. That gives you a simple list of missing URLs that people really request.
- Trashed content: deleting a post creates a 404 right away. Before you delete, check if the URL has traffic or links, and decide if it needs a redirect.
Cleaning Up 404 Errors After a Site Migration
Migrations are where 404s really do hurt rankings. A redesign, a platform change or a new URL structure can break hundreds of URLs at once, including your best pages. Here’s a cleanup process that keeps it under control. For the full move itself, follow our website migration SEO checklist.
- Build a list of old URLs. Combine your old sitemap, a crawl of the old site (if you still have one), Search Console’s top pages, GA4 landing pages and pages with backlinks. If you didn’t save this before launch, your server logs and Search Console are the best places to rebuild it.
- Check every old URL’s status. Run the full list through a crawler in list mode. You want each old URL to return a single 301 to its new match, or a planned 404 or 410.
- Map and fix the gaps. For every old URL returning 404 that had traffic or links, add a 301 to the closest matching new page. Start with the URLs that had the most clicks or the strongest backlinks.
- Flatten chains. Old redirects from past redesigns now point to URLs that redirect again. Update them so every old URL reaches its final destination in one hop.
- Fix internal links and sitemaps. Update menus, body links and canonical tags so they use new URLs directly. Make sure your XML sitemap only lists live URLs with a 200 status. Our XML sitemap best practices guide covers what belongs in there.
- Watch Search Console for several weeks. Keep an eye on the Not found (404), Soft 404 and Redirect error reasons. Once you’ve fixed every example under a reason, use “Validate fix”. Google says validation usually takes up to about two weeks.
- Keep the redirects in place. Don’t remove migration redirects after a few weeks. Old links and bookmarks keep sending visitors for a long time. So treat them as permanent unless they become a technical burden.
Don’t panic if the 404 count in Search Console rises after a migration. That often just means Google is crawling old URLs it remembers. What matters is if your important URLs redirect correctly and if search traffic to the new pages recovers.
A Simple Routine to Keep 404s Under Control
Once the big cleanup is done, a light monthly check is enough for most sites. This is the routine I recommend:
- Review the Not found (404) and Soft 404 examples in Search Console and look for URLs you recognise.
- Run a crawl to catch new broken internal links, especially after content edits or deletions.
- Check your 404 page visits in GA4. A sudden jump usually means a broken link on a busy page or a failed redirect rule.
- Before you delete or rename any page, decide on its redirect first.
That last habit prevents most problems. Broken links are much easier to avoid than to find later. And a solid internal linking strategy makes it clear which pages are too important to lose.
Conclusion: Fix 404 Errors for SEO Without Overdoing It
The smart way to fix 404 errors for SEO is to set priorities. Ignore 404s for content that’s truly gone. Fix broken internal links and sitemap entries. Use a one-hop 301 redirect for pages that have moved or have links and traffic, but only when there’s a real equivalent. Clear up soft 404s by returning the correct status code.
Your next step: open the Page indexing report today and export the Not found (404) examples. Then check which of them have backlinks or appear in your own links. That short list is the only part that needs your time.



