Learn
Broken Internal Links: Finding Them and Fixing the Cause
A broken internal link is a bug you shipped. Unlike a broken external link, nobody else can fix it, and nothing about the internet changed to cause it.
Run a fresh DomainLens audit and use the report as your priority list.
Why internal breakage is different
An external link breaks because someone else's site changed — annoying, expected, and largely outside your control. An internal link breaks because you renamed a URL, deleted a page, or typed a path wrong, and every one of those is fixable at the source.
The cost is concrete. A crawler following the link gets a 404 instead of a page, so the destination loses whatever authority that link was passing, and a reader who clicks it leaves. Neither is catastrophic individually; both scale with how many links share the same broken pattern.
| Effect | Severity | Notes |
|---|---|---|
| Reader hits a dead end | High | Direct, immediate, measurable |
| Destination loses link equity | Medium | The target page is weakened |
| Crawl budget spent on 404s | Low | Only matters at scale |
| Quality signal | Low | Many broken links read as neglect |
Do broken links hurt rankings?
Not directly. Google has said repeatedly that 404s are a normal part of the web and carry no penalty. A handful of broken links will not move your positions.
The indirect costs are real though. Authority that should reach an important page instead evaporates into a 404, and readers who hit dead ends do not come back. Treat it as a defect worth fixing rather than a ranking factor worth panicking about.
Finding every one
- 1Crawl the site and export links resolving to 4xx — this catches everything reachable from your own navigation.
- 2Read the Search Console "Not found" report and use its referring-page column, which reveals links from pages your crawl may not reach.
- 3Grep server logs for 404s and rank by frequency; the top entries are where real traffic is being lost.
- 4Check links inside content stored in a database — CMS body fields are invisible to a crawler that only follows navigation.
- 5Do not forget links in redirects, canonical tags and sitemaps; those break the same way and are easier to miss.
# Status of every URL in a file, one per line
while read -r url; do
code=$(curl -s -o /dev/null -w '%{http_code}' "$url")
[ "$code" != "200" ] && echo "$code $url"
done < urls.txt
# Extract every internal link from one page
curl -s https://example.com/page \
| grep -oE 'href="/[^"]*"' | sort -u
Fix the cause, not the link
Broken links cluster. Twenty of them pointing at /blog/old-category/ is not twenty bugs — it is one renamed category and a template that still emits the old path. Fixing them individually leaves the template intact and guarantees the next twenty.
Group findings by destination before touching anything. A single destination appearing dozens of times tells you where the real edit belongs.
- Link generated by a template — fix the template; every instance is corrected at once.
- Link inside editorial content — fix the content, and check whether the same paste was reused elsewhere.
- Destination was renamed — redirect the old URL and update the internal links to point directly at the new one.
- Destination was deleted deliberately — remove the links; do not redirect them somewhere unrelated.
Update the link, not just the redirect
A 301 on the old URL stops the 404, and that is worth doing. It is not the fix. Internal links should point at the final destination directly — every redirect is an extra request, and chained redirects accumulate exactly this way. Redirect for outside visitors and old bookmarks; correct your own links so they never need it. See how to find and fix 404 errors for the wider process and internal linking strategy for the structure the links sit in.
How DomainLens contributes
DomainLens checks the links on the pages it audits and reports those that do not resolve, so a template emitting a dead path is caught in the same pass as the on-page findings rather than in a separate crawl. For pages nothing links to at all see orphan pages .
- Do broken links hurt SEO?
- Not as a ranking penalty. They waste link equity that should reach the destination and they lose readers, which is reason enough to fix them.
- How many broken links are acceptable?
- Internal ones should be near zero, because you control them. External breakage is normal and worth reviewing periodically rather than chasing.
- Should I redirect or fix the link?
- Both. Redirect the old URL for outside visitors, and update your own links to point at the destination directly so they do not travel through a redirect.
- Do broken links waste crawl budget?
- Slightly, and only at scale. On a large site with thousands of crawled 404s it is worth addressing; on a small site it is noise.