Internal Linking Engine
Crawls your site live, maps the internal link graph, and hands you the new links to add, the orphan pages nothing points to, and the broken links to fix.
Last updated 2026-08-06
Summary#
Internal Linking Engine crawls your site, maps how your pages link to each other, and returns three lists: new internal links worth adding with the anchor text to use, pages nothing links to, and internal links pointing at pages that failed to load. Its internal tool id is internal_linking.
Purpose#
Internal links are the part of a site's structure nobody owns. Pages get published, the navigation grows, and the links between the content itself never get planned. The result is predictable: a handful of pages collect everything, and the rest are reachable only through a sitemap.
This tool exists to make that structure visible and fixable. The decision it supports is concrete: which link should you add next, on which page, with what anchor text?
Overview#
You enter a domain. Metric Vault reads your sitemap, and if that is thin it also reads your homepage and harvests its internal links. From the pages it finds, it crawls up to 20, preferring the homepage and the shallowest paths — that is where a site's real structure lives.
For each crawled page it records the internal links it points to and counts the links pointing back at it. That gives every page an inbound and outbound count, which is the link graph.
It then compares the pages by topic, using the distinctive words on each page rather than the boilerplate they all share. Where a topically related page does not yet link to an under-linked page, that pair becomes a suggestion, and the anchor text is drawn from the target page's own distinctive terms.
This is a live crawl of your site. It fetches your real HTML on every run, executes no JavaScript, and uses no cached copy.
Benefits#
- Suggestions are specific: a source page, a target page, and the anchor text.
- Orphan pages are named, not estimated.
- Broken internal links are found by actually fetching the target.
- The whole page-by-page graph is included, so you can see the shape of the site.
Copy all as listturns the suggestions into a paste-ready task list.- Costs 1 credit, which keeps it under the monthly premium threshold.
Use Cases#
Spreading authority to a page that will not rank. The suggestions name related pages that should point at it and the anchor text to use.
Finding pages that fell out of the site. Orphan detection catches content that is published, indexed and effectively unreachable.
Cleaning up after a migration. Broken internal links surface immediately when paths changed and links did not.
Building a topic hub properly. Run it after publishing a cluster to confirm the new pages are actually linked into the site.
Auditing an unfamiliar site. One run gives you the structure without clicking through it.
Requirements#
- A signed-in account.
- A paid plan — 1 credit per run, and any cost above zero is blocked on Free.
- A publicly reachable site that serves HTML to a crawler. Private, local and internal hosts are refused.
- A site whose content and navigation are in the HTML. JavaScript-rendered navigation is not executed.
- Available credits and hourly headroom.
Permissions#
Any workspace member on a paid plan can run it. Free accounts are refused with This tool needs a paid plan. Free includes the 10 technical SEO tools; upgrade to Pro to unlock the rest. The recommendations panel under the result requires Pro or above — see Get Recommendations.
Cost#
1 credit per run. The run button reads Map Internal Links · 1 report, matching the 1-credit charge.
Below the premium threshold of 3, so the monthly quota never blocks it — only the hourly fair-use cap of 100 light-tool calls per hour. This tool has no shared cache: every run is a fresh crawl, so a repeat run always reflects your site as it is right now. See How credits work and Result caching and freshness.
Navigation Path#
Dashboard → Keyword & Content Research → Internal Linking Engine
The sidebar entry carries a pink NEW badge.
Inputs#
| Field | Accepts | Required | Default | Validation | Notes |
|---|---|---|---|---|---|
e.g. nike.com | A domain | Yes | Empty | Empty input shows Enter a value first. Private, loopback and internal hosts are refused | Protocol and path are stripped. Enter the root domain — the crawl starts at the homepage |
| Try sample | — | — | — | — | Fills nike.com when the field is empty, then runs. It charges a credit like any other run |
Pressing Enter in the field runs the tool.
Step-by-Step Guide#
- Open
Keyword & Content Researchand choose Internal Linking Engine. - Enter your domain in the field marked
e.g. nike.com. - Click Map Internal Links, or press
Enter. - Wait for
Analyzing… this can take a few seconds for live data.to clear. A live crawl of 20 pages takes longer than a data lookup. - Read the tier badge and the four KPI tiles.
- Fix
Broken internal linksfirst, thenOrphan pages, then work theRecommended internal linkstable. - Use
Copy all as listto take the suggestions into your task tracker. - Export or share the report from the buttons at the top of the view.
Reading the Results#
The header. Your domain, a Live crawl badge, N pages mapped, and a verdict tier on the right:
| Tier | When it appears | What it means |
|---|---|---|
NEEDS ATTENTION | Any broken internal link was found | Something is actively broken; fix it first |
LINKS TO IMPROVE | Orphans but no broken links | The structure works but leaves pages stranded |
WELL LINKED | Multiple pages, real internal linking, no orphans or breaks | Healthy. Use the suggestions to strengthen, not repair |
LIMITED DATA | Too little was crawled to judge | Read What we found — the crawl was blocked or the site is one page |
The four KPI tiles.
| Tile | Sub-label | Reads | Good | Bad | Action |
|---|---|---|---|---|---|
Pages Crawled | of N found | Pages read versus pages discovered | Crawled equals found on a small site | Crawled is far below found | The crawl caps at 20 pages; a much larger "found" figure means you are seeing the shallowest slice of a big site |
Orphan Pages | no inbound internal links | Pages nothing points to | 0 | Any | Every orphan is a page receiving no authority from your own site |
Link Suggestions | new links to add | Proposed new internal links | A handful | 0 with several pages crawled | Zero suggestions on a real site usually means the pages are not topically related enough to pair |
Broken Links | point to dead pages | Internal links whose target failed to load | 0 | Any | Fix these first; they waste crawl budget and frustrate readers |
What we found. Plain-language findings generated from the crawl. The first always states the coverage — for example "Crawled 20 of 143 pages found (capped at 20 for speed)." Others name the orphan count, the suggestion count and the broken count. Two are worth reading carefully:
- "No orphan pages — every crawled page has at least one internal link pointing to it." is a clean result, not an empty one.
- "Not enough internal links were found to map a graph. The site may be a single page, or it may render its navigation with JavaScript, which this crawler does not execute." means the run cannot judge your structure. It is a coverage limit, not a verdict on your site.
Recommended internal links. The main deliverable, with a Copy all as list button above it and four columns:
| Column | What it means | How to use it |
|---|---|---|
Anchor text | The words to link | Drawn from the target page's own distinctive terms, so it describes the destination. Adjust it to read naturally in the sentence |
Add a link from | The source page | Open this page and find a sentence where the anchor fits |
Pointing to | The target page | The under-linked page receiving the authority |
Why | The justification | Reads "Both pages cover “term”. The target has N internal links pointing to it." The term is the shared topic; the count is how starved the target is |
Suggestions are ordered by topical strength, so the top rows are the most natural links to add. Only pages with fewer than three inbound links are proposed as targets, and at most two sources are proposed per target — the intent is to lift starved pages, not to build link farms between everything.
Orphan pages. One card per page with no inbound internal links, each badged ORPHAN and carrying the same instruction: "No internal links point here, so it barely receives authority. Add a few links from the related pages above." The homepage is never counted as an orphan.
An orphan is the most severe finding on this screen. A page nothing links to is discoverable only through the sitemap, and search engines treat it accordingly.
Broken internal links. A two-column table: On this page and This link is broken. These are links from a crawled page to another page in the crawl set that did not return usable HTML. Fix by correcting the link or restoring the target — a redirect works, but a corrected link is better.
Every page we crawled. The full graph, sorted by inbound links ascending so the weakest pages are at the top.
| Column | What it means | How to read it |
|---|---|---|
Page | The path | / (home) for the homepage |
Inbound links | Links from other crawled pages | 0 is an orphan; 1 is fragile; 3 or more is healthy |
Outbound links | Internal links this page points to | A page with high outbound is a hub |
Status | Orphan, Under-linked or OK | Under-linked means fewer than two inbound links |
Read the top of this table as your work list and the bottom as your hubs. Your hub pages are the best sources for new links, because they already have authority to pass on.
Get recommendations. A panel under the result turns the findings into an ordered plan, grouped as Fix first, Do next and Quick wins — broken links first, orphans next, under-linked pages after that. It is a Pro-and-above feature with its own monthly allowance — see Get Recommendations.
What to do with it. Fix every broken link. Give every orphan two or three inbound links from related pages. Then add the top ten suggestions, editing each anchor so it reads naturally in the sentence. Re-run afterwards and confirm the orphan count is zero.
Examples#
Example: You run ourshop.com. The header reads WELL LINKED; the tiles show 20 pages crawled of 143 found, 2 orphans, 14 link suggestions and 0 broken links. What we found states the crawl was capped at 20 for speed. The first suggestion is anchor text waterproof running shoes, from /guides/trail-running to /collections/waterproof, because "Both pages cover “waterproof”. The target has 1 internal link pointing to it." The two orphans are /guides/winter-training and /about/team. You add three links to each orphan from related guides, then add the top eight suggestions. On the next run the orphan count is 0 and the tier reads WELL LINKED with more pages at status OK.
Screenshots#
Tips#
- Run it after publishing a cluster of pages, not before. New pages are the ones most likely to be orphaned.
- Edit the anchor text. The suggested wording is descriptive but generic; a link reads better when it belongs to the sentence.
- Add links from your hub pages — the ones with high outbound counts at the bottom of the graph table. They have the authority to pass on.
- Two or three inbound links is enough to lift an orphan. You do not need to link it from everywhere.
- Pair this with Content Decay Detector: an under-linked page decays faster and recovers slower.
Best Practices#
- Fix broken links before adding new ones. A broken link is a defect; a missing link is an opportunity.
- Link from related content, not from the footer. A footer link on every page tells search engines nothing about the target's topic.
- Keep anchor text descriptive and varied. Repeating one exact phrase across every link reads as manipulation.
- Re-run after each batch of edits so the graph reflects the work, and keep the export as a record.
- Remember the crawl favours shallow paths, so deep pages are the ones it misses. Link them from a shallow page and they enter the next crawl.
Common Mistakes#
- Entering a single URL. The crawl starts at the domain root and maps the site; a URL narrows nothing useful.
- Reading
Pages Crawled 20 of 400as a failure. The cap is deliberate, and the 20 chosen are the structurally important ones. - Expecting a JavaScript-rendered site to map. The crawler reads HTML and does not execute scripts, and the findings say so.
- Adding every suggestion at once. Ten well-placed links beat forty mechanical ones.
- Ignoring the homepage's absence from the orphan list. It is excluded on purpose — it has no inbound internal links by definition.
Limitations#
- Up to 20 pages are crawled per run, chosen from the sitemap plus the homepage's own links and ordered by path depth.
- Suggestions are capped at 40 and broken links at 40.
- Only pages with fewer than three inbound links are proposed as link targets, and at most two sources are proposed per target.
- JavaScript is not executed, so client-rendered navigation and content are invisible to the crawl.
- Broken-link detection covers links between the pages in the crawl set. It is not a site-wide broken-link scan.
- External links are not analyzed at all — this tool is about internal structure.
- Sites that block automated crawlers return an error rather than a partial map.
- Private, loopback and internal hosts are refused.
- There is no cache, so every run costs a credit and takes a full crawl.
- Saved results are kept for 90 days.
Troubleshooting#
| Symptom | Likely cause | Fix |
|---|---|---|
Enter a value first. | Empty field | Type a domain |
Please sign in to run this tool. | Signed out | Sign in and retry |
This tool needs a paid plan… | Free plan | Upgrade — see Plans and pricing |
Could not crawl any pages for <domain>. The site may block automated crawlers, or render its content with JavaScript. | The crawler was blocked, or the HTML carries no content | Check your bot rules and firewall; a JavaScript-rendered site cannot be mapped |
Not enough internal links were found to map a graph… | One-page site, or JavaScript navigation | Expected on those sites. See A tool returned no data |
Pages Crawled far below found | The 20-page cap | Expected. The shallowest, most important pages are chosen |
| 0 link suggestions with several pages crawled | The pages are not topically related enough to pair, or every page already has three or more inbound links | Not a failure. Check the graph table for OK statuses |
| A page you expect is missing | It is not in the sitemap, not linked from the homepage, or sits below the 20-page cap | Add it to your sitemap and link it from a shallow page |
| The run is slow | It is a live crawl of up to 20 pages | Expected. See Tool limits and performance |
Hourly fair-use limit reached… | Over 100 light-tool calls this hour | Wait for the hourly reset |
FAQs#
Where do the pages come from? Your sitemap first. If that returns too few pages, the homepage is fetched as well and its internal links are added. The list is then sorted so the homepage and the shallowest paths are crawled first, and cut at 20.
Why only 20 pages? The crawl is live and runs inside a request budget. Twenty shallow pages capture a site's structure; crawling hundreds would time out. See Tool limits and performance.
How is the anchor text chosen? From the target page's own distinctive vocabulary, with your brand name and the words that appear on nearly every page filtered out. That is why it describes the destination rather than repeating your site name.
Why does it suggest links only to some pages? Only pages with fewer than three inbound internal links are eligible targets. The point is to lift starved pages, not to cross-link everything.
Does it check my external links too? No. This tool maps internal structure only.
Does it change anything on my site? No. It reads your pages and returns suggestions. Every edit is yours to make.
Why is the result different from the last run when I changed nothing? It is a live crawl with no cache, so a page that was slow or briefly unavailable can shift the counts. Re-run if a result looks anomalous.
Can I export the suggestions? Yes — Copy all as list for a plain-text list, plus Export PDF, Export Excel, Export CSV, Export JSON and Share public link at the top of the view.
See also
Was this article helpful?
Thanks — feedback noted for the docs team.