Skip to main content
All fixes

SEO, schema, meta tags

Fix Broken Internal Links: Find and Repair 404s in Your Own Pages

Internal links pointing to 404s waste crawl budget, frustrate users, and drop ranking signal flow. Crawl, identify, and fix or redirect each one.

What's happening

An internal link is any on your site that points to another URL on the same domain. When the target returns a 404, the link is broken. Broken internal links waste crawl budget (Googlebot fetches the URL, gets a 404, marks it dead), waste user attention (clicking through to an error page), and break PageRank flow internally — link equity that should pass through to the target page is lost.

Search Console's Page indexing report classifies destination URLs that 404 as 'Not found (404)'. The Links report (Search Console > Legacy Tools > Links) shows top linking pages and target URLs, which surfaces patterns of internal broken links — the same dead URL linked from many internal pages, for example.

Common sources of broken internal links: typos in href values, content moved without redirect updates, deleted articles still referenced from old posts, hardcoded URLs that do not survive a path migration, and broken anchor links to in-page IDs that no longer exist.

Why it matters

Crawl budget waste. Every broken internal link Googlebot follows is a wasted fetch. On large sites with thousands of broken links this consumes 5-15% of crawl budget that should go to canonical content.

User experience and bounce. Clicking through to a 404 from a navigation link is the worst possible experience. Users associate the brand with brokenness and bounce immediately, which hurts engagement signals.

Lost ranking signal flow. PageRank flows through internal links from authoritative pages (homepage, category pages) to deeper pages. Broken internal links sever this flow, so target pages get less internal authority than they would with intact links.

Common causes

  • Page deleted without setting up a redirect.
  • URL slug changed but old links not updated.
  • Migration changed URL structure without redirect rules.
  • Typo in href when authoring (missing slash, wrong path).
  • Anchor-only links (#section) point to IDs that have been removed.
  • Hardcoded URLs in content survive past CMS path changes.
  • Pagination URLs that exceed the actual page count.

Detect this on your site

Run a quick scan with the Broken Links Checker. The tool surfaces this exact issue with the records and context needed to apply the fix below.

Open Broken Links Checker

How to fix it

  1. 1

    Crawl the site to find broken internal links

    Use the Broken Links Checker or a tool like Screaming Frog to crawl every URL and check every internal link's HTTP status. Group results by status code: 404s and 410s are confirmed broken; 5xx are server errors that may be transient.

  2. 2

    Triage broken links by impact

    Sort by source URL pageviews (Search Console + GA) and by source URL authority (incoming external links). Fix high-traffic and high-authority sources first — they leak the most PageRank and frustrate the most users.

  3. 3

    Choose the fix path per link

    If the target moved: 301 redirect from the old URL to the new. If the target is gone for good: remove the link from the source page or replace it with a link to a related canonical resource. Do not blanket-redirect 404s to the homepage — that is a soft 404 antipattern.

  4. 4

    Update content references

    Edit the source pages to point to the correct target URL directly. Server redirects work but add a hop; direct hrefs are cleaner. Use a CMS plugin or a build-time check to find and update internal hrefs in batch.

  5. 5

    Set up server-side redirects for legacy paths

    When a URL pattern has changed (e.g., /blog/2023/post-name to /blog/post-name), set up a regex 301 redirect in the framework's middleware or at the CDN edge. This catches every legacy link, including external ones you do not control.

  6. 6

    Add a regular crawl in CI

    Run a broken-links crawl on every deploy or weekly via cron. Fail the build (or alert) when new broken links appear. Catching regressions in CI prevents the slow accumulation of broken links over time.

Frequently asked

Not directly but they waste crawl budget sever PageRank flow internally and worsen user experience — all of which indirectly affect rankings. Google has stated repeatedly that maintaining link integrity is a quality signal.

No. That is a soft 404 antipattern. Google detects it and treats those redirects as 404s anyway. Redirect to a relevant canonical resource (the closest alternative page) or return a clean 404 — both are better than a homepage redirect.

Weekly for active sites is a good baseline. After a migration or major content change crawl immediately and again 1-2 weeks later. CI-integrated crawling on every deploy prevents new breakage from shipping.

Related fixes