Broken Links: How to Find and Fix Them (2026 SEO Guide)

Saar Twito8 min read
Saar Twito
Saar TwitoFounder & SEO Engineer

Hi, I'm Saar - a software engineer, SEO specialist, and lecturer who loves building tools and teaching tech.

View author profile →

What Is a Broken Link?

A broken link is any hyperlink whose target returns a 4xx error (most commonly 404 Not Found or 410 Gone), a 5xx server error, or fails to resolve at all (DNS failure, connection refused). Broken links exist in two flavors: internal (one page on your site links to a non-existent URL on the same site) and external (your page links to another site that's gone or moved). Internal broken links are worse for SEO — they waste crawl budget, leak link equity, and signal poor site maintenance.

Key Facts (TL;DR)

  • 404 vs 410: 404 = "not found, might come back." 410 = "gone, permanent." Google de-indexes 410 pages faster than 404s — use 410 when content is permanently removed.
  • 301 redirect > update the link > 404 page — in that order of preference. A 301 to the most relevant existing page preserves both UX and link equity.
  • Internal broken links waste crawl budget. Every fetch to a 404 is a fetch Googlebot didn't spend on real content.
  • Soft 404s are worse than real 404s. A page that returns 200 OK with a "not found" body confuses Google and stays in the index as a thin page. Always return the correct status code — see HTTP status codes for SEO.
  • External broken links don't directly hurt rankings but they hurt UX and trust, and over time they hurt the page that contains them.
  • Redirect chains break too. A → B → C → D — Google gives up around 5 hops. Always redirect directly to the final URL.

HTTP Status Codes for "Broken" Pages — and What to Do About Each

Not every error is the same. The status code your server returns determines what Google does, and the right fix depends on which one you're seeing.

CodeMeaningGoogle's behaviorCorrect fix
404Not FoundDe-indexes after repeated checks (~weeks)301 to closest match, or accept as 404
410Gone (permanent)De-indexes faster than 404Return 410 for content that is permanently deleted
301Moved PermanentlyTransfers link equity to the new URLUse for permanent URL changes
302Moved TemporarilyKeeps the old URL in the indexSwitch to 301 if the move is permanent
500 / 502 / 503Server errorRetries; persistent 5xx leads to de-indexFix the server; return 503 with Retry-After during planned outage
Soft 404200 OK with "not found" contentTreats as low-quality, may de-indexReturn real 404 or 410, not 200
DNS / connection refusedDomain unresolvableTreats as 5xxUpdate or remove the link

How to Find Broken Links

Different tools catch different things. Use at least two — one crawler and one signal from Google itself.

  1. Google Search Console > Pages. Filters out the URLs Google has actually tried to fetch. Check the Not found (404), Soft 404, and Server error (5xx) buckets. Click any row to see the referring pages — those are the internal links you need to fix.
  2. Screaming Frog SEO Spider. Crawl the site, then go to the Response Codes tab and filter by Client Error (4xx). Click any broken URL — the bottom Inlinks panel shows every page that links to it. This is the fastest way to find every internal broken link in one pass.
  3. Sitebulb. Similar to Screaming Frog but with a clearer Hints UI for prioritizing which broken links to fix first.
  4. Ahrefs / Semrush Site Audit. Cloud-based, runs on a schedule. Both flag 4xx pages and internal links to broken pages in a dedicated report.
  5. Greadme's crawler. Multi-page scan that surfaces broken internal links plus the source page and exact anchor text — including links inside JavaScript-rendered content.
  6. Server logs. Grep for " 404 " and " 410 " status codes to find what real users and bots are hitting.

How to Fix Broken Links

Apply this decision tree to every broken URL you find.

  1. Is there a clear replacement page? Set up a 301 redirect from the broken URL to the replacement. This preserves any link equity and bookmarks.
  2. Is the URL actually a typo in the link? Update the source link. Don't redirect typos forever — fix them at the source.
  3. Is the content permanently deleted with no replacement? Return 410 Gone. Google de-indexes faster than with 404. Add a helpful 404 page so users who hit the URL still find their way.
  4. Is the link external and the target site is down temporarily? Wait or replace the link with the Wayback Machine archive: https://web.archive.org/web/*/originalurl.
  5. Is it part of a redirect chain? Update the redirect to point directly to the final destination.

301 Redirect Examples

For an Apache server in .htaccess:

# Single redirect
Redirect 301 /old-page/ https://example.com/new-page/

# Pattern redirect (move /blog/ to /articles/)
RedirectMatch 301 ^/blog/(.*)$ https://example.com/articles/$1

# Return 410 for permanently deleted content
RewriteEngine On
RewriteRule ^retired-product/?$ - [G]

For Nginx:

# Single redirect
location = /old-page/ {
  return 301 https://example.com/new-page/;
}

# Permanent removal
location = /retired-product/ {
  return 410;
}

For Next.js (in next.config.js):

module.exports = {
  async redirects() {
    return [
      {
        source: '/old-page',
        destination: '/new-page',
        permanent: true, // 301
      },
    ];
  },
};

The 5 Mistakes That Make Broken Links Worse

  1. Redirecting every 404 to the homepage. Google treats this as a soft 404 and ignores the redirect. Redirect to a relevant page or let it 404/410.
  2. Returning 200 on the 404 page. Custom 404 pages must return HTTP 404, not 200. Check with curl -I https://example.com/this-does-not-exist.
  3. Chained redirects after a site migration. Each migration adds another hop: /v1/foo/v2/foo/articles/foo. Flatten to a single redirect from each old URL to the current one.
  4. Using 302 instead of 301. 302 keeps the old URL in the index. Use 301 (or 308) for permanent moves.
  5. Ignoring external broken links. External 404s don't crash rankings, but a page riddled with dead outbound links signals neglect. Audit them at least quarterly.

How to Build a Useful 404 Page

When a URL has no good redirect target, the 404 page is your last line of defense. A good one:

  • Returns HTTP status 404 (or 410), not 200.
  • Says clearly that the page doesn't exist, in plain language.
  • Offers a search box scoped to your site.
  • Links to the homepage and the top 3–5 sections.
  • Optionally suggests recent or popular content.
  • Looks like the rest of the site (same nav, same brand) — not a default server page.

FAQ

Do broken links hurt SEO?

Internal broken links waste crawl budget and break the flow of internal link equity, which can indirectly hurt rankings on a site with many of them. External broken links don't directly affect rankings but degrade UX and trust signals.

Should I use 404 or 410 for deleted content?

410 if the content is permanently gone with no plan to bring it back — Google de-indexes faster. 404 is fine if you're not sure or might restore the page.

How often should I audit for broken links?

Monthly for active sites. Quarterly minimum. Always after a redesign, CMS migration, or URL structure change.

Is it OK to redirect a 404 to the homepage?

No. Google calls this a soft 404 and ignores the redirect. Redirect to a topically relevant page, or let the URL return a real 404.

Do redirects pass full link equity?

301 (and 308) pass essentially full PageRank, per multiple Google statements since 2016. The old "15% loss" rule is no longer accurate. Chains of redirects, however, dilute signals — keep redirects to one hop.

How do I find broken links pointing to my site (broken backlinks)?

Use Ahrefs Site Explorer > Broken backlinks or Semrush Backlink Audit. These are valuable: 301-redirect those URLs to relevant live pages on your site to recover lost link equity.

Should I nofollow external links to avoid broken-link risk?

No. nofollow doesn't protect you from broken links — it only changes how the link affects ranking signals. Audit and fix dead external links instead.

What about JavaScript-rendered links?

Standard crawlers like Screaming Frog can crawl rendered links if you enable JavaScript rendering in the configuration. Otherwise links injected client-side won't be checked. AI crawlers like GPTBot and ClaudeBot don't render JS at all — make important links plain HTML.

Conclusion

Broken links are mechanical, not mysterious. Crawl your site monthly with Screaming Frog or Greadme, cross-check the Pages report in Search Console, and apply the decision tree: 301 to a real replacement, 410 for permanent removals, or fix the link at the source. Avoid the homepage-redirect trap and the soft-404 trap. A site with clean status codes and zero internal 404s sends Google the simplest possible quality signal — that you maintain what you publish.