404 errors: what they mean and when to fix them

·4 min read

A 404 error is the HTTP status a server returns when it has nothing at the requested URL. Google says a 404 error on its own won't hurt your site's indexing or ranking, so most of the 404s in Search Console need no action. Fix the ones that cost you visitors or links. Those are dead links on your own pages, old URLs other sites still link to, and content you moved without a redirect.

What a 404 error means

The site is up and the request reached it, but the path has no page behind it. That makes it different from a 5xx error, where the server itself failed. If you see 500s or 502s, read what a 500 status code means instead, because those do slow Google down.

Most 404s come from three places:

  • A page was deleted or its slug changed.
  • Someone mistyped a link, on your site or someone else's.
  • A bot guessed URLs, like /wp-admin on a site that has never run WordPress.

Only the first two are usually your problem. The status code family as a whole is covered in HTTP status codes for SEO.

Do 404 errors hurt SEO?

No, not by themselves. Google's 404 help page states plainly that 404s don't harm your site's indexing or ranking, and that you can ignore them if you're sure the URLs shouldn't exist.

Google's HTTP status code documentation says it doesn't index URLs that return a 4xx code, and that indexed URLs which start returning one drop out of the index over time. 4xx codes other than 429 don't change Google's crawl rate. So a deleted page leaves the index, and the rest of the site carries on as before.

The real costs are indirect. A visitor who clicks a dead link leaves, and a backlink pointing at a 404 sends its value nowhere.

When to fix a 404 and when to leave it

Decide by where the URL came from and whether anything still points at it.

Situation What to do
Your own page links to the dead URL Update the link to the current URL, or remove it
The content moved to a new URL Add a 301 redirect from old to new
Other sites link to the old URL Redirect it to the closest equivalent page
The URL is in your XML sitemap Remove it from the sitemap, or restore the page
Content deleted for good, no replacement Leave the 404, or return 410
A URL that never existed Ignore it

Two habits make this worse. Redirecting every 404 to the homepage tends to get treated as a soft 404, and so does a "not found" page that returns 200. A missing page should send a real 404 status.

If you're choosing between 404 and 410 for removed content, 404 vs 410 covers the small difference. For moved content, follow how to set up a 301 redirect and point each old URL at its specific replacement.

Where to find your 404 errors

Start with Search Console. In the Page indexing report, the "Not found (404)" reason lists URLs Google requested that returned 404. According to Google's report documentation, these are often URLs Google discovered on its own rather than ones you submitted, and they aren't necessarily a problem.

Open the list and sort the URLs into three piles:

  1. Old URLs of real pages. Check whether anything links to them. If yes, redirect.
  2. Typos and junk. Ignore them. Nothing on the web depends on them.
  3. URLs your own site links to. These are the urgent ones, and Search Console is a slow way to find them.

In your server logs, 404s with a referrer from your own domain are broken internal links. A referrer from another domain shows which backlinks deserve a redirect.

Check the pages that link out the most first. A dead link in the header or footer repeats on every page.

Crawl from the page itself rather than waiting for Google to report it. Fetch the HTML, collect every link to your own host, request each one and flag anything that returns 4xx or 5xx. Then fix the source, not the target. Change the href to the page's current URL so visitors don't pass through a redirect at all.

<!-- Before: points at a slug that was renamed -->
<a href="/guides/robots-txt-basics">robots.txt basics</a>

<!-- After: points straight at the live page -->
<a href="/blog/what-is-robots-txt">robots.txt basics</a>

After a migration, run this on every template and every high-traffic page. Broken internal links also leave pages with fewer links pointing at them, which our guide to internal linking explains.

Our Broken Internal Link Finder fetches one page's HTML, collects the links that point to the same host, and requests up to 30 of them. It checks links in the main content before header, footer and navigation links, since those repeat everywhere. Each link comes back as working, broken with its 4xx or 5xx status, unreachable, or unverified when the site answered with a rate limit, a bot check or a 403. Links past the first 30 are listed but not checked. A run costs 15 credits.

It checks one page, not the whole site, and it does not follow links to other domains. It reads the raw HTML, so links that only JavaScript adds are not seen. To cover more pages, run it on your section and category pages. For a wider sweep, the Orphan Page Finder crawls up to 150 pages from your homepage and also reports broken internal links.

Keep reading