How to Find Internal Linking Opportunities at Scale (8 Steps)
To find internal linking opportunities at scale, crawl your whole site, strip out menu and footer links, count the body links pointing at each important page, then look for missing pairings and unlinked mentions. Here's the process step by step.
Compare the URLs in your sitemap with the URLs your crawler reached through links: anything only in the sitemap is an orphan.
Count only body links when judging support for a page, because menu and footer links repeat everywhere and hide the real gaps.
Unlinked mentions, where a page already uses the right words but doesn't link them, are the fastest links to add.
Search Console shows which pages already get impressions for a topic, and those make the most relevant source pages.
A useful output is a spreadsheet with source page, target page, suggested anchor and priority on every row.
Adding internal links one page at a time works on a 20-page site.
On a site with hundreds of pages, you miss most of them.
The fix is to treat it as a data problem.
Crawl everything, then let the gaps show themselves.
This is the process I use.
It works with any crawler and a spreadsheet, and it produces a list someone can actually work through.
Before you start
You need three things:
A crawler that can export every link on the site with its source page, target page and anchor text.
Google Search Console access for the site.
A spreadsheet to sort, count and track the results.
A crawler that records where each link sits on the page (menu, footer, body) will save you a lot of time in Step 2.
You also need a rough idea of which pages matter most. If you haven't decided that yet, read my internal linking strategy guide first. It explains the page roles this process relies on.
Step 1: Crawl the site from a fresh sitemap
Start by fetching your XML sitemap on the day you crawl.
Not last month's export.
Then run two lists side by side:
URLs in the sitemap: every page you've told search engines about.
URLs reached through links: every page the crawler found by following links from the homepage.
Most desktop crawlers can do both in one run.
Now compare them. Any URL in the sitemap that the crawler never reached through a link is an orphan. Nothing on your site points to it.
Those are your first opportunities. If an orphan no longer earns its place, prune it instead of linking it.
Also note pages the crawler found that aren't in the sitemap.
They're often old URLs, test pages or parameter versions, and they're worth a look during a wider technical SEO check.
Output: a full link export, plus a list of orphan pages.
Step 2: Separate body links from template links
This is the step most audits skip, and it changes everything.
Your menu and footer put links on every page.
If you count them, every important page looks well supported, because it's linked from 300 pages.
But those 300 links all say the same thing.
They don't tell anyone how two pages relate.
So split your link export by position:
Header and menu
Footer
Sidebar
Breadcrumbs
Body
If your crawler doesn't report position, filter by the HTML element the link sits in.
Links inside nav, header, footer and aside elements are usually template links.
From here on, work mainly with body links.
Output: a body-links-only export.
Step 3: Count the body links into each important page
Make a pivot table from the body-links export.
Rows: target URL.
Values: count of distinct source pages linking to it.
Then sort your money pages (services, categories, locations) by that count, lowest first.
Here's what the top of that list often looks like:
Target page
Body links in
Linked from menu?
Reading
/services/boiler-repair/
0
Yes
Supported by the template only
/locations/harrogate/
0
No (footer only)
Close to an orphan
/services/landlord-safety-checks/
1
Yes
One blog post, nothing else
Any money page with zero or one body link in is an opportunity.
It's also a quick reality check.
I often find the page the business cares about most has almost no contextual links at all.
Output: a ranked list of under-linked money pages.
Step 4: Check the links each page role should have
Counting tells you which pages are weak.
Roles tell you which links are missing.
Label every page with a role in your spreadsheet: service, industry, location, hub, category, product or guide.
Then write the rules your structure should follow. For example:
Each service page links to every industry page it applies to, and back.
Each location page links to the services offered there, and is linked from them.
Each guide links to the service or category it supports.
Each pillar links to every page in its cluster, and each cluster page links back.
Now test every page against the rules.
Each failed rule is a row: source page, target page, rule broken.
The pillar and cluster rule comes straight from how you plan topic clusters, so check it whenever you add a guide.
Output: a list of missing pairings by rule.
Step 5: Find unlinked mentions
An unlinked mention is a page that already uses the right words but doesn't link them.
These are the fastest links you'll ever add. The sentence is written. You only wrap a link around it.
For each important page, pick its main phrase and one or two variants.
Then search your body text for them:
In your crawler: use a custom search on page content for each phrase.
In Google: search site:yourdomain.com "landlord safety checks" to find pages that mention it.
For each hit, check whether that page already links to the target.
If not, it's a candidate.
Keep the surrounding sentence in your spreadsheet.
Whoever adds the link can then do it without rereading the page. It's one of the quickest on-page SEO wins on most sites.
Tip: skip mentions in places a link would read badly, such as headings or a list of ten services in one sentence. One clean link in a paragraph beats a forced one.
Output: unlinked mentions, each with its sentence.
Step 6: Use Search Console to pick the best source pages
Not every page is a good place to link from. The best source is a page that's already relevant to the target's topic.
Search Console tells you which pages those are.
Open the Performance report and filter queries by the target page's topic. Then switch to the Pages tab. The pages listed already earn impressions for related searches, so search engines already connect them to the topic.
Those are your strongest candidates to link from.
Check the Links report too. It shows which of your pages have the most links from other sites. A contextual link from one of those to a weak money page is worth adding.
Output: a shortlist of relevant, well-linked source pages for each target.
Step 7: Group template gaps and rank the list
By now you have rows from Steps 1 to 6. Before anyone starts editing, clean them up.
First, collapse repeats. If every location page is missing the same link, that's one template change, not 40 page edits.
Then rank each row:
Priority
Typical rows
P1
Orphans, broken links, money pages with no body links in
P2
Missing service, industry and location pairings; pillar gaps
P3
Unlinked mentions on low-traffic pages; guide-to-guide links
Finally, give each row the columns an editor needs: page to edit, page to link to, suggested anchor, the sentence or spot, priority, and a status column.
Write anchors that describe the target, and keep one target per phrase so you don't create keyword cannibalisation between pages.
Google's link best practices also say there's no magical ideal number of links per page, so don't add links just to hit a count.
Output: a ranked, editor-ready task list.
Step 8: Make the changes, then recrawl
Work through the list from P1 down.
When you add a link, check three things: it's in the body, the anchor describes the target, and the target isn't a redirect or a noindexed page. If links point at old URLs, a redirect map shows the final address to use.
Then recrawl. Do the same after any redesign or move, which is why the website migration checklist includes an internal link check.
Compare the new export with the first one. Orphan count should fall. Body links into your money pages should rise. Anything that didn't change is a task someone missed.
Keep the spreadsheet. Next time you run the process, you'll only need to look at what's new.
Output: a before-and-after comparison that proves the work was done.
Common mistakes when finding internal links
These are the slips I see most often:
Counting every link as equal. Menu links hide the real gaps. Always filter to body links.
Trusting suggestions blindly. Keyword-matching tools propose links that read badly or point at the wrong page.
Linking from irrelevant pages. A link from a page about an unrelated topic helps nobody.
Linking to redirects or noindexed pages. Point links at the final, indexable URL.
Never rechecking. New pages arrive unlinked unless someone looks.
Turn the crawl into a task list
Start with Step 1 this week. The orphan list alone usually gives you a handful of quick fixes.
If you'd rather not run the process yourself, my internal linking automation does Steps 1 to 7 with a crawler I built and maintain, then hands you the ranked spreadsheet.
It's how I ran the internal link audit in my managed IT case study. For a wider view of site health around the links, an SEO audit covers the rest, and if you'd like the fixes made for you, ask about the full internal linking service.
Frequently asked questions
What tools do I need to find internal linking opportunities?+–
A crawler that can export every link with its source and target, Google Search Console for your site, and a spreadsheet. A crawler that reports where each link sits on the page saves time, but you can also filter links by the HTML element they sit in. Everything else in the process is sorting and checking.
How do I find orphan pages?+–
Crawl the site by following links from the homepage, then compare that list of URLs with the URLs in your XML sitemap. Pages listed in the sitemap that the crawler never reached through a link have no internal links pointing to them. Check each one: link it from a relevant page, or remove it if it no longer serves a purpose.
Should I trust automated internal link suggestions?+–
Use them as a starting list, not a decision. Tools that match keywords will suggest links that read awkwardly, point at the wrong page or come from pages with no relevance to the target. Every suggestion needs a person to check that the link helps the reader at that point in the copy before it goes live.
How often should I look for new internal linking opportunities?+–
Whenever you publish a batch of new pages, after a redesign or template change, and after a migration. Sites that publish every week benefit from a regular recrawl, while a small site that rarely changes can get by with a check after each significant update.
Independent SEO consultant · 6+ years in SEO · 60+ client websites worked on
I'm an independent SEO consultant with 6+ years in SEO. I run audits, migrations and content programmes for businesses in Europe, the UK and the USA, and I build the automation behind my own research.