Internal URL Not Found (4XX): Fix Broken Internal Links

No Comments
Internal url not found (4xx): fix broken internal links

What an internal 4XX flags, and why it matters

This check fires when a page on your site links to another internal URL that returns a 4XX status — most often a 404 Not Found, sometimes a 403 Forbidden or 410 Gone. You are sending readers and crawlers to a page that no longer exists, from a link you fully control.

Broken internal links are pure self-inflicted damage: they dead-end the user, waste crawl budget on URLs that resolve to nothing, and strand any equity the link was meant to pass. Unlike a broken external link, every one of these is yours to fix, so there is no excuse to leave them live.

A real failing example, and the fix

Check any internal link's status with a header request. A 404 in the first line means the link is broken:

$ curl -sI -A 'Mozilla/5.0' https://example.com/guides/old-slug/ | head -1
HTTP/2 404

# The link on the source page that points at it:
<a href="/guides/old-slug/">Read the full guide</a>

You have two clean fixes depending on whether the content still exists somewhere. If it moved, repoint the link at the live URL:

<!-- Content moved: link the current URL directly -->
<a href="/guides/current-slug/">Read the full guide</a>

If the destination is genuinely gone with no replacement, remove the link (or its whole reference) rather than leaving a dead anchor. Add a 301 redirect from the old URL to the closest live equivalent only when outside links or bookmarks still point at it — a redirect fixes inbound traffic, but the broken internal link should still be repointed at the final URL so it never triggers the redirect.

Which 4XX are you looking at?

StatusMeaningUsual causeFix for the internal link
404Not FoundPage deleted, slug changed, typo in hrefRepoint to live URL or remove
410Gone (permanent)Content intentionally removedRemove the link
403ForbiddenPermissions or auth blocking accessFix access or unlink
401UnauthorizedLogin-gated URL linked publiclyDo not link gated URLs from public pages

How to detect it

  1. Screaming Frog. Crawl the site, filter the Internal tab by Status Code → Client Error (4xx), then use Bulk Export → Response Codes → Client Error (4xx) Inlinks to get every source page that links to each broken URL — that inlinks export is what tells you where to edit.
  2. curl -I. For a single suspect link, curl -sI -A 'Mozilla/5.0' https://example.com/url/ | head -1 returns the status line. Any 4xx confirms the target is broken.
  3. Google Search Console. The Page indexing report lists URLs under Not found (404); cross-reference those against your internal links to find which broken URLs you are still linking to.
  4. Analytics 404 tracking. A "top 404 URLs" view (via your analytics or a WordPress 404 log) shows which missing pages are still being hit — the high-traffic ones are where internal links most likely still point.

How to fix it

  1. Pull the list of internal 4XX URLs with their inlinks — you need to know which source pages contain the broken links, not just which targets fail.
  2. For each target, decide: did the content move (repoint the link) or is it gone (remove the link)?
  3. Edit the source pages to fix or remove each broken anchor.
  4. Where old URLs still receive outside traffic, add a 301 to the best live equivalent so bookmarks and backlinks resolve cleanly.
  5. Re-crawl and confirm zero internal links now resolve to a 4XX status.

FAQ

Is an internal 404 worse than an external one?

In one sense yes — it is entirely your fault and entirely in your control. An external 404 depends on someone else's site; an internal one is a link you can fix today.

Should I redirect every broken internal URL?

No. Redirect old URLs that still earn outside traffic or backlinks. For internal links, the cleaner fix is to repoint the link at the live URL directly so it never hits a redirect at all.

What about a 403 or 410 instead of a 404?

A 410 means the content is intentionally gone — remove the link. A 403 means access is blocked, often a permissions misconfiguration; fix the access if the page should be public, otherwise stop linking to it from public pages.

Will broken internal links hurt my rankings?

They will not trigger a penalty, but they waste crawl budget, dead-end users, and stop equity flowing to real pages. At scale that erodes how efficiently Google crawls and values your site.

How do I stop new ones appearing after content changes?

Run a crawl after any URL change, deletion, or migration, and keep a redirect map. Catching 4XX links in a post-change audit is far cheaper than letting readers find them.

Related checks and reading

Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.

About SEO ProCheck

Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.

Work With Me

Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.

Subscribe to our newsletter!

More from our blog