How to Find Internal Link Opportunities (4 Ways)
Four ways to find internal link opportunities: Google site: searches, Ahrefs and Semrush reports, GSC queries, and automated topic-based crawling.
Nedim Mehić
August 9, 2026 · 7 min read

An internal link opportunity is a sentence on one of your pages that mentions a topic another of your pages covers, without linking to it. There are four reliable ways to find these at scale: Google site: and intext: searches, the internal-link reports in Ahrefs or Semrush, mining your own Search Console queries, and automated crawling with topic modeling. Each has a different cost, coverage, and blind spot; most teams should combine at least two.
First, know what you're looking for
A real opportunity has three parts: a target worth linking to (a money page, a striker ranking just off page one, an orphan), a source page with topical overlap and some authority, and an existing phrase in the source's body copy that can serve as the anchor. If any part is missing, it's not an opportunity; it's a rewrite.
That third part is the one people skip, and it's why so many "internal linking passes" produce awkward copy. The best links wrap phrases that already exist in the sentence, a principle our complete guide to internal linking treats as non-negotiable. Hold every method below to that standard, and start with a target list, not a source list: hunting sources for priority targets is tractable; evaluating every page's outbound potential is not. (If you need the target list first, that's the audit step of an internal linking strategy.)
Method 1: Google site: and intext: searches
The zero-cost classic. For each target page, search Google for your own pages that mention the target's topic:
site:example.com "schema markup"
site:example.com intext:"structured data" -inurl:/blog/schema-guide
The intext: operator restricts matches to body text (not just titles), and excluding the target's own URL keeps the results clean. Every result is a page containing your potential anchor phrase in its copy: open each, find the sentence, add the link.
A useful bonus signal: Google's ranking of the site: results roughly reflects which of your pages it considers most relevant to the phrase, so the top results tend to be your best sources.
Pros: free; no tooling; surfaces the actual sentences; reflects Google's own view of relevance. Cons: one query per target per phrasing (synonyms need separate searches); slow beyond ~10 targets; misses pages Google hasn't indexed (which are often exactly the underlinked pages you care about); results are capped and sometimes flaky for large sites.
Method 2: Ahrefs and Semrush reports
Both major suites ship purpose-built reports.
Ahrefs: Internal link opportunities (in Site Audit): Ahrefs takes the keywords each of your pages already ranks for in the top 100, then scans your other crawled pages for occurrences of those keywords in their text. Each row is a suggested source page, the keyword found on it (your candidate anchor), and the target page that ranks for that keyword. You can sort and filter, then place the links yourself.
Semrush offers the equivalent through its Site Audit's internal linking checks (which flag issues like orphaned pages, deep pages, and pages with few internal links) plus its Internal Link Distribution reporting, which shows how link authority spreads across your site so you can spot pages that deserve more.
Pros: scales across the whole site in one report; ties opportunities to keywords with real ranking data; catches orphans and depth problems in the same crawl. Cons: requires a paid subscription; keyword-occurrence matching is literal, so it misses semantically related pages that phrase things differently and can suggest pairs that share a phrase but not a topic; you still do the placement manually; suggestions don't come with density or anchor-profile guardrails, so over-linking discipline is on you.
Method 3: The GSC queries method
Your own Search Console data encodes which pages Google associates with which queries, including associations you didn't intend.
The workflow:
- In Performance → Search results, filter by a query your target page should own (say, "invoice templates").
- Switch to the Pages tab. Every page listed is impressing for that query.
- Each non-target page in that list is a source candidate: Google already sees topical overlap, and the page very likely contains the query phrase (or close to it) in its copy.
- Add a contextual link from those pages to the target, anchored on the naturally occurring phrase.
This method has a compounding benefit: when several pages impress for the same query, you may have mild cannibalization, and consolidating internal links toward one preferred page is Google's own recommended signal (its "consolidate similar pages" guidance) for expressing which page you want to rank.
Pros: free; grounded in your site's actual query data rather than a third-party index; doubles as cannibalization triage. Cons: only covers queries where pages already get impressions (brand-new and orphaned pages are invisible to it); the Pages tab tells you a page overlaps but not where the anchor sentence is, so there's manual reading per source; laborious beyond a handful of targets.
Method 4: Automated crawling + topic modeling
The previous three methods share a structural limit: they match on literal phrases or existing rankings, and they leave placement, anchor choice, and restraint to you. The fourth approach models the problem directly.
The pipeline (this is how LinkAgent works, and the general shape applies to any serious implementation):
- Crawl the site (sitemap plus internal link discovery, respecting robots.txt), extracting titles, headings, and body text, and building the existing in-text link graph. Navigation, header, footer, and sidebar links are deliberately excluded, so the graph reflects only contextual links, the kind that carry weight.
- Model topics: TF-IDF vectors per page, clustered into topics, plus per-page metrics: inbound in-text link count, click depth, orphan status.
- Score every page pair on topical similarity, anchor quality, source page depth, and how badly the target needs links. A highly similar pair where the source is shallow and strong and the target is starving scores highest.
- Propose concrete placements: the specific sentence, with an anchor that is an exact phrase already present in it (never invented text), subject to balance rules: about 1 new link per 250 words with a max of 8 per page, at most 12 new inbound links per target, no anchor phrase exceeding roughly a third of a target's anchor profile, and templated repeated sentences excluded.
- Human review: an approve/reject queue, with decisions that persist across re-crawls, so the same rejected suggestion never comes back.
Pros: covers the entire site at once, including orphans and unindexed pages the other methods can't see; semantic matching catches related pages that don't share literal phrases; guardrails are built into the suggestions instead of left to discipline; scheduled re-crawls mean new posts get opportunities found automatically instead of when someone remembers. Cons: requires trusting a model's relevance judgment, which is exactly why the review queue exists; a tool is another thing to run (though this one is open source, self-hostable, and works fully without an AI key).
Which method when
| Method | Cost | Coverage | Finds the sentence? | Best for |
|---|---|---|---|---|
site: searches | Free | Indexed pages only | Yes (via intext) | Small sites, ad-hoc targets |
| Ahrefs / Semrush | Subscription | Whole crawl | Keyword, not sentence | Teams already paying for the suite |
| GSC queries | Free | Pages with impressions | No (manual reading) | Strikers and cannibalization fixes |
| Crawl + topic modeling | Free–self-host | Whole site incl. orphans | Yes, with anchor | Ongoing process at any scale |
The blind spot all manual methods share
Methods 1–3 can only find opportunities pointing at pages that are already visible: indexed, ranking, or getting impressions. The pages that need links most, orphan pages, fail all three visibility tests by definition. Any workflow that doesn't start from a full crawl will systematically miss its neediest targets.
A practical combined workflow
- Crawl the site and pull the target list: orphans, money pages with low inbound counts, GSC strikers at positions 5–15.
- For the top 10 targets, run GSC's Pages-tab check (Method 3); it's the fastest way to find sources Google already associates with the query.
- Fill gaps with
site:/intext:searches (Method 1) for targets without impressions. - Place links that meet the bar: existing phrase, descriptive anchor, body copy, roughly one link per 250 words. Study a few internal linking examples first if you want calibrated instincts for what a good placement reads like.
- When step 2–4 stops happening every month (and on most teams it stops by month two), move the finding and the proposing to automation and keep humans on approval. A free internal link checker pass over your site will show you the current inbound counts, orphans, and depth problems in a few minutes, which is the honest way to find out how big your opportunity backlog actually is.
Related reading
Internal Linking Strategy: A Framework That Scales
Build an internal linking strategy that scales: audit, prioritize money pages, implement with rules, and measure impact in Google Search Console.
Orphan Pages: How to Find and Fix Them
Orphan pages get no internal links, so they get no equity and weak rankings. How to find them with GSC, crawlers, and logs, and fix them for good.
Internal Linking Examples Worth Copying
Six internal linking examples with before/after sentences: guide-to-cluster, blog-to-product, docs cross-refs, glossary links, and more.
Put this on autopilot
Linkagent finds and ships internal links for you. Scan your site free, no account needed.
Free scan, no account needed. Takes about 20 seconds.