---
title: Internal Link Finder
description: The Internal Link Finder is a free SEO silo architecture tool by MoxSEO that analyzes your website's internal linking structure. It maps PageRank distribution, 
url: https://moxseo.com/tools/internal-link-finder
date_modified: 2026-08-14
author: Admin
language: en_US
---

.mox-il{--mox-bg:#fff;--mox-panel:#fff;--mox-ink:#0e0f12;--mox-ink-soft:#525866;--mox-line:#e8e8ea;--mox-primary:#ff5a1f;--mox-primary-d:#e8470a;--mox-accent:#ff5a1f;--mox-dark:#0e0f12;--mox-dark-2:#181a1f;--mox-good:#16a077;--mox-warn:#e8a20c;--mox-risk:#e34d5b;--mox-r:18px;--mox-r-sm:12px;--mox-font-d:'Sora',sans-serif;--mox-font-b:'Inter',sans-serif;--mox-font-m:'IBM Plex Mono',monospace;font-family:var(--mox-font-b);background:var(--mox-bg);color:var(--mox-ink)}
.mox-il *,.mox-il *::before,.mox-il *::after{box-sizing:border-box;margin:0;padding:0}
.mox-il a{text-decoration:none}.mox-il button{font-family:inherit}
.mox-il .w{max-width:1180px;margin:0 auto;padding:0 22px}
.mox-il .sec{padding:82px 0}
.mox-il .sec--alt{background:#fafafb}
.mox-il .sec--dark{background:var(--mox-dark)}
.mox-il .sec--dark h2,.mox-il .sec--dark h3,.mox-il .sec--dark p,.mox-il .sec--dark li{color:#f4f4f6}
.mox-il .eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:var(--mox-font-m);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--mox-primary);margin-bottom:16px}
.mox-il .eyebrow::before{content:"";width:22px;height:2px;background:var(--mox-accent)}
.mox-il h1{font-family:var(--mox-font-d);font-size:clamp(32px,4.6vw,54px);font-weight:800;line-height:1.12;letter-spacing:-.02em}
.mox-il h2{font-family:var(--mox-font-d);font-size:clamp(26px,3.4vw,38px);font-weight:700;line-height:1.18;letter-spacing:-.015em;max-width:780px}
.mox-il h3{font-family:var(--mox-font-d);font-weight:700}
.mox-il .sub{font-size:17px;color:var(--mox-ink-soft);max-width:700px;margin-top:14px;line-height:1.7}
.mox-il .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--mox-font-d);font-weight:700;font-size:15px;padding:15px 28px;border-radius:999px;border:2px solid transparent;cursor:pointer;transition:transform .25s,background .2s}
.mox-il .btn:hover{transform:translateY(-2px)}
.mox-il .btn--p{background:var(--mox-primary);color:#fff;box-shadow:0 10px 26px rgba(255,90,31,.32)}
.mox-il .btn--p:hover{background:var(--mox-primary-d)}
.mox-il .btn--ghost{background:transparent;border-color:var(--mox-line);color:var(--mox-ink)}
.mox-il .btn--dg{background:transparent;border-color:rgba(255,255,255,.25);color:#fff}
.mox-il .trust{background:var(--mox-dark);padding:14px 0}
.mox-il .trust__row{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 28px;font-family:var(--mox-font-m);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:#a7acb5}
.mox-il .trust__row span{display:inline-flex;align-items:center;gap:8px}
.mox-il .trust__row span::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--mox-accent)}
.mox-il .hero{padding:80px 0 70px;background:radial-gradient(900px 500px at 85% -10%,rgba(255,90,31,.12),transparent 60%),radial-gradient(700px 420px at -10% 30%,rgba(255,90,31,.08),transparent 55%),var(--mox-bg)}
.mox-il .hero__grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.mox-il .lead{font-size:18px;color:var(--mox-ink-soft);margin:20px 0 28px;max-width:560px;line-height:1.7}
.mox-il .cta-row{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:26px}
.mox-il .ticks{display:flex;flex-wrap:wrap;gap:10px 22px;font-size:14px;color:var(--mox-ink-soft)}
.mox-il .ticks span{display:inline-flex;align-items:center;gap:7px}
.mox-il .ticks span::before{content:"\2713";color:var(--mox-good);font-weight:700}
.mox-il .sample{background:var(--mox-dark);border-radius:24px;padding:30px;box-shadow:0 30px 70px rgba(14,15,18,.35);transform:rotate(1.2deg)}
.mox-il .sample__tag{font-family:var(--mox-font-m);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--mox-accent);margin-bottom:18px}
.mox-il .sample__score{display:flex;align-items:baseline;gap:14px;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:18px;margin-bottom:18px}
.mox-il .sample__num{font-family:var(--mox-font-m);font-size:56px;font-weight:600;color:var(--mox-accent);line-height:1}
.mox-il .sample__lbl{font-size:14px;color:#a7acb5;max-width:160px}
.mox-il .sample__row{display:flex;justify-content:space-between;gap:16px;padding:9px 0;font-size:14px}
.mox-il .sample__row b{color:#fff;font-weight:600}
.mox-il .sample__row span{color:#85898f}
.mox-il .sample__note{margin-top:16px;font-size:12.5px;color:#85898f;border-left:3px solid var(--mox-accent);padding-left:12px;line-height:1.6}
.mox-il .g3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:44px}
.mox-il .g2{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:44px}
.mox-il .card{background:var(--mox-panel);border:1px solid var(--mox-line);border-radius:var(--mox-r);padding:26px;transition:transform .3s,box-shadow .3s}
.mox-il .card:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(14,15,18,.08)}
.mox-il .card h3{font-size:17px;margin:14px 0 8px}
.mox-il .card p{font-size:14.5px;color:var(--mox-ink-soft);line-height:1.65}
.mox-il .chip{display:inline-flex;font-family:var(--mox-font-m);font-size:11px;font-weight:600;letter-spacing:.08em;padding:5px 10px;border-radius:6px;background:rgba(255,90,31,.1);color:var(--mox-primary)}
.mox-il .bands{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:44px}
.mox-il .band{border-radius:var(--mox-r);padding:24px;background:var(--mox-panel);border:1px solid var(--mox-line);border-top:5px solid var(--mox-line)}
.mox-il .band h3{font-size:15.5px;margin:8px 0}
.mox-il .band p{font-size:13.5px;color:var(--mox-ink-soft);line-height:1.65}
.mox-il .band__t{font-family:var(--mox-font-m);font-weight:600;font-size:20px}
.mox-il .band--a{border-top-color:var(--mox-good)}.mox-il .band--a .band__t{color:var(--mox-good)}
.mox-il .band--b{border-top-color:var(--mox-warn)}.mox-il .band--b .band__t{color:var(--mox-warn)}
.mox-il .band--c{border-top-color:var(--mox-risk)}.mox-il .band--c .band__t{color:var(--mox-risk)}
.mox-il .tool{background:var(--mox-panel);border:1px solid var(--mox-line);border-radius:24px;padding:34px;box-shadow:0 20px 60px rgba(14,15,18,.06);margin-top:38px}
.mox-il .form{display:flex;flex-wrap:wrap;gap:12px}
.mox-il .form input{flex:1 1 320px;min-width:250px;font-family:var(--mox-font-b);font-size:16px;color:var(--mox-ink);background:#fbfbfc;border:1.5px solid var(--mox-line);border-radius:999px;padding:15px 22px;outline:none;transition:border .2s,box-shadow .2s}
.mox-il .form input:focus{border-color:var(--mox-primary);box-shadow:0 0 0 4px rgba(255,90,31,.14)}
.mox-il .hint{font-size:13px;color:var(--mox-ink-soft);margin-top:12px}
.mox-il .faq{max-width:820px;margin:44px auto 0}
.mox-il .faq details{border-bottom:1px solid var(--mox-line);padding:18px 0}
.mox-il .faq summary{font-family:var(--mox-font-d);font-weight:700;font-size:16.5px;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px}
.mox-il .faq summary::after{content:"+";color:var(--mox-primary);font-size:20px;line-height:1}
.mox-il .faq details[open] summary::after{content:"\2212"}
.mox-il .faq p{font-size:15px;color:var(--mox-ink-soft);line-height:1.7;margin-top:12px}
.mox-il .final{text-align:center;background:radial-gradient(700px 380px at 50% -20%,rgba(255,90,31,.16),transparent 60%),var(--mox-dark)}
.mox-il .final h2{margin:0 auto}.mox-il .final .cta-row{justify-content:center;margin-top:30px}
@media(max-width:900px){.mox-il .hero__grid{grid-template-columns:1fr;gap:40px}.mox-il .g3,.mox-il .bands{grid-template-columns:1fr}.mox-il .g2{grid-template-columns:1fr}.mox-il .sec{padding:56px 0}.mox-il .sample{transform:none}}

/* .mox-il base: light surface */
.mox-il h1,.mox-il h2,.mox-il h3,.mox-il h4{color:var(--mox-ink)!important}
.mox-il p,.mox-il li,.mox-il td{color:var(--mox-ink-soft)!important}
.mox-il .sub,.mox-il .lead,.mox-il .hint{color:var(--mox-ink-soft)!important}
.mox-il .card h3{color:var(--mox-ink)!important}
.mox-il .card p{color:var(--mox-ink-soft)!important}
.mox-il .band h3{color:var(--mox-ink)!important}
.mox-il .band p{color:var(--mox-ink-soft)!important}
.mox-il .faq summary{color:var(--mox-ink)!important}
.mox-il .faq p{color:var(--mox-ink-soft)!important}
.mox-il .eyebrow,.mox-il .chip{color:var(--mox-primary)!important}
.mox-il a{color:var(--mox-primary)!important}
.mox-il .btn--p{color:#fff!important}
.mox-il .btn--ghost{color:var(--mox-ink)!important}
.mox-il .band--a .band__t{color:var(--mox-good)!important}
.mox-il .band--b .band__t{color:var(--mox-warn)!important}
.mox-il .band--c .band__t{color:var(--mox-risk)!important}
/* .mox-il dark surfaces */
.mox-il .trust__row,.mox-il .trust__row span{color:#a7acb5!important}
.mox-il .sec--dark h1,.mox-il .sec--dark h2,.mox-il .sec--dark h3,.mox-il .sec--dark p,.mox-il .sec--dark li{color:#f4f4f6!important}
.mox-il .sec--dark .sub,.mox-il .sec--dark .eyebrow{color:#a7acb5!important}
.mox-il .final h1,.mox-il .final h2,.mox-il .final h3{color:#fff!important}
.mox-il .final p,.mox-il .final .sub{color:#a7acb5!important}
.mox-il .final .eyebrow{color:var(--mox-accent)!important}
.mox-il .final .btn--dg{color:#fff!important}
.mox-il .sample__tag{color:var(--mox-accent)!important}
.mox-il .sample__num{color:var(--mox-accent)!important}
.mox-il .sample__lbl,.mox-il .sample__note{color:#85898f!important}
.mox-il .sample__row span{color:#85898f!important}
.mox-il .sample__row b{color:#fff!important}
.mox-il .ticks span{color:var(--mox-ink-soft)!important}
Free tool
# Find the pages nothing on your site links to

Crawls your pages with navigation, header and footer stripped out, so only editorial links count. Then shows which pages have no inbound links at all, and where to add them based on the terms two pages genuinely share.

[Map a site](#mox-run)[SEO services](https://moxseo.com/services/seo/)Ignores nav and footerFinds orphan pagesSuggests by shared termsSample result3pages with no inbound editorial linksPages crawled**12**Editorial links found**47**Link opportunities**18**Deepest page**0 inbound**Every page links to every other page through the menu, which tells you nothing. Strip the navigation out and the real structure appears — usually with several pages nothing points at.Nav strippedOrphans firstShared-term matchingUp to 20 pagesNo signupThe problem
## Menu links are not internal linking

Most internal link audits count every link on the page, which means the navigation dominates the result. If your menu appears on 500 pages, every page it links to shows 500 inbound links, and the number becomes meaningless.

Navigation drowns the signal
A page linked only from the menu looks well-linked in most tools. In practice it has no editorial support at all.

Orphans hide in plain sight
A page with no editorial links pointing at it is the most expensive problem on a site: it exists, it costs crawl budget, and nothing supports it.

Related pages drift apart
Two pages covering the same ground with no link between them is either a missing link or a cannibalisation problem. Both are worth finding.

What gets checked
## What the crawl actually measures

### Editorial links only

Nav, header and footer are removed before any link is counted, so what remains is links placed inside the content.

### Inbound and outbound

Per page, how many editorial links point at it and how many it sends out. Pages sort with the fewest inbound first.

### Orphan detection

Any crawled page with zero inbound editorial links is listed separately and its link suggestions sort to the top.

### Shared-term matching

The distinctive terms on each page, with common words removed. Two pages sharing several and linking to neither is flagged.

### Anchor capture

The anchor text of every editorial link is recorded, so you can see how pages currently describe each other.

### Depth by word count

Word counts alongside link counts, because a thin page with many inbound links is usually the wrong page to be supporting.

The tool
## Map internal links on any site

Enter any page and we crawl outward from it, up to twelve pages on the same host. Navigation is removed before counting, so only editorial links appear in the result.

Map the links
Fetches up to twelve pages, so this one takes twenty to sixty seconds.

Reading your results
## What to act on first

### Orphans

Pages with zero inbound editorial links. Fix these first — a single contextual link from a related page is usually enough.

### Suggestions

Page pairs sharing several distinctive terms with no link between them. Read the shared terms; if they describe the same thing, add the link.

### High shared count

Two pages sharing eight or more terms may not need a link at all. They may need merging into one stronger page.

Suggestions are ordered with orphan targets first, then by how many terms the pair shares.

The honest version
## Twelve pages is a sample, not an audit

This is enough to see the shape of a section and find the obvious gaps. It is not a full-site link graph, and it does not judge whether the links it suggests are actually good ideas.

### It crawls twelve pages

Enough to reveal a pattern. A full site map is something we run as part of an engagement, not in a browser.

### It does not grade anchor text

Anchors are recorded but not judged. Whether an anchor is useful depends on the sentence around it, which needs a human.

### Shared terms are a signal

Frequency-based, not semantic. Two pages using the same words may be related, or may simply be in the same industry.

### It follows links, not sitemaps

A page reachable only from the sitemap will not be crawled — which is itself worth knowing.

Common questions
## Internal linking, answered plainly

### Why strip the navigation?

Because a link that appears on every page carries almost no information about which pages matter. Editorial links are placed deliberately, which is what makes them a signal.

### How many internal links should a page have?

There is no number worth quoting. The useful question is whether every page you care about has at least one editorial link pointing at it from a related page.

### Does link position on the page matter?

Probably, though not enough to obsess over. A link inside the body copy is worth more than one in a related-posts strip at the bottom.

### Should I link every related page to every other?

No. Dense reciprocal linking between near-identical pages usually signals cannibalisation rather than depth. Link deliberately.

Next step
## Twelve pages shows the pattern. Your site is the actual problem.

Internal linking is one of the few things fully within your control and one of the least done well. We map it across entire sites, then rebuild the structure around what the data shows.

[Book a scoping call](https://moxseo.com/schedule-consultation/)[See the other tools](https://moxseo.com/tools/)(function(){var B=document.getElementById("il-go"),U=document.getElementById("il-in"),O=document.getElementById("il-out");if(!B)return;function esc(s){return String(s==null?"":s).replace(/[&"]/g,function(c){return {"&":"&","":">",'"':"""}[c];});}function shortu(u){try{var p=new URL(u);return p.pathname==="/"?p.hostname:p.pathname;}catch(e){return u;}}var HS="font-family:Sora,sans-serif;font-size:19px;margin:26px 0 8px";function run(){var u=(U.value||"").trim();if(!u){O.innerHTML="
Enter a URL first.

";return;}B.disabled=true;B.textContent="Crawling...";O.innerHTML="
Crawling up to twelve pages. This takes twenty to sixty seconds...

";fetch("/wp-json/moxtools/v1/links?limit=12&url="+encodeURIComponent(u)).then(function(r){return r.json().then(function(j){return {ok:r.ok,j:j};});}).then(function(res){B.disabled=false;B.textContent="Map the links";if(!res.ok||res.j.error){O.innerHTML="
"+esc(res.j.error||"Could not crawl that site.")+"

";return;}var d=res.j;var col=d.orphans.length===0?"#16a077":(d.orphans.length<3?"#e8a20c":"#e34d5b");var h="";h+="Result";h+=""+d.orphans.length+"pages with no inbound editorial links";h+="Pages crawled**"+d.crawled+"**";h+="Editorial links found**"+d.links+"**";h+="Link opportunities**"+d.suggestions.length+"**";if(d.orphans.length){var on=d.orphans.map(function(o){return shortu(o.url);}).slice(0,4).join(", ");h+="Nothing links to: "+esc(on)+". A single contextual link from a related page is usually enough.";}h+="";if(d.suggestions.length){h+="
### Where to add links

";d.suggestions.slice(0,12).forEach(function(s){h+="
### Link from "+esc(shortu(s.from))+" to "+esc(shortu(s.to))+"

";h+="
"+esc(s.why)+" · shares "+esc(s.shared.join(", "))+"

";});}h+="
### Pages, fewest inbound first

";d.pages.forEach(function(p){h+="
### "+esc(shortu(p.url))+"

";h+="
"+p.in+" inbound · "+p.out+" outbound · "+p.words+" words

";});O.innerHTML=h;}).catch(function(){B.disabled=false;B.textContent="Map the links";O.innerHTML="
Something went wrong. Try again.

";});}B.addEventListener("click",run);U.addEventListener("keydown",function(e){if(e.key==="Enter")run();});})();
