Why internal links matter for SEO
Google uses internal links to discover pages, understand which pages are most important (based on how many links point to them), and determine what a page is about (based on the anchor text of links pointing to it). Three structural problems reduce the value of your internal link graph:
- Broken internal links (404s) — waste crawl budget and leak PageRank into dead ends. Google treats a broken link the same as a missing page.
- Orphan pages — pages Google cannot find through crawling because no internal link points to them. They can only be indexed if they are in your sitemap, and even then they may rank poorly because Google infers low importance.
- Shallow link depth — important pages buried 4+ clicks from the homepage receive significantly less PageRank than pages 1–2 clicks deep.
Method 1: Google Search Console (free, owns-site-only)
If you have GSC access to the site, the Pages → Not indexed report shows pages that were crawled but not indexed — often orphan pages that lack internal links and therefore appear low-quality to Google. The Links → Internal links report shows which pages have the most internal links pointing to them. Sort ascending to find the pages with the fewest links — those are your candidates for adding internal links.
GSC does not show broken internal links directly. For that you need a crawler.
Method 2: Screaming Frog SEO Spider (free up to 500 URLs)
Screaming Frog is a desktop crawler that maps every link on your site. The free tier handles up to 500 URLs — enough for small sites and targeted audits of specific sections. After crawling:
- Filter the Response Codes tab to show 4xx — these are your broken internal links.
- Export the Inlinks for any broken URL to see exactly which page contains the broken link.
- Check the Crawl Depth column to see which pages are buried deepest.
For sites over 500 pages, you need Screaming Frog paid or an alternative crawler.
Method 3: Browser DevTools quick check (no install)
For a quick audit of a single page, open the browser console and run:
// Get all internal links on the current page
const links = [...document.querySelectorAll('a[href]')]
.map(a => a.href)
.filter(href => href.startsWith(location.origin));
// Check each link's status code
const results = await Promise.all(
links.map(url =>
fetch(url, { method: 'HEAD' })
.then(r => ({ url, status: r.status }))
.catch(() => ({ url, status: 'error' }))
)
);
// Print broken links
results.filter(r => r.status >= 400).forEach(r =>
console.log(r.status, r.url)
);This checks all internal links on the current page. Run it on your homepage to find broken links there. It does not crawl deeper — use Screaming Frog for a full audit.
Method 4: XML sitemap cross-check (find orphan pages)
An orphan page is one that appears in your sitemap but has zero internal links from the rest of the site. To find them:
- Fetch your
sitemap.xmland extract all URLs. - Crawl your site (via Screaming Frog or a script) and collect all URLs found through internal links.
- Any URL in the sitemap that was not found through crawling is an orphan page.
In a Next.js or similar SSG site, orphan pages commonly appear when:
- A programmatically generated page (compare/alternatives/best) is in the sitemap but never linked from a hub page or navigation
- A blog post is published but never mentioned in the blog index (missing from the posts registry)
- A redirect target has no links pointing directly to the new URL
How to fix the problems you find
| Issue | Fix |
|---|---|
| Broken internal link (404) | Update the link to the correct URL, or set up a 301 redirect from the old URL |
| Orphan page (important content) | Add internal links from 2–3 relevant pages; add to a hub page or navigation |
| Orphan page (thin content) | Noindex it or merge it into a stronger page |
| Important page buried at depth 4+ | Add a link from the homepage, category page, or nav to bring it within 2–3 clicks |
| Poor anchor text ("click here", "read more") | Rewrite anchors to use descriptive keywords matching the target page |
What to prioritize
Fix broken links first — they are unambiguously negative and fast to repair. Then address orphan pages for your most important content (tools, blog posts, landing pages that already have impressions in GSC). Shallow link depth and anchor text are lower priority but worth fixing when refactoring navigation.
How often to run an internal link audit
On an actively published site, run a crawl monthly. On a stable site with infrequent changes, quarterly is enough. The fastest trigger for an immediate audit is any time you restructure URLs, rename pages, or delete a section — those are the moments when broken links proliferate.
Related checks
After fixing internal links, the next audit to run is a DNS and SSL check — infrastructure issues are the other common reason pages don't rank despite good on-page SEO. The DNS lookup tool and SSL checker both run in-browser without an account.