Check & monitor · Internal linking
Internal linking for SEO: internal links, site structure, and the orphan pages Google never finds
Internal linking is the only ranking lever you control completely. You cannot make another site link to you, you cannot make Google crawl faster, but you decide exactly which of your pages point at which others, and you can change all of it this afternoon.
Submit · monitor coverage · official methods only
Ready to check coverage
Paste a sitemap to sweep every URL for index status, then submit the missing ones through the official Google Indexing API and Bing IndexNow.
Coverage
indexed
Avg time to index
URLs submitted
Now eligible
Live, interactive · sample data · official methods only
Official Google Indexing API · Bing IndexNow · verified sitemaps · no spam, no PBNs
In short
Internal linking is the practice of linking the pages on your own site to each other. It matters for indexing because Google discovers most new URLs by extracting links from pages it already knows, so a page nothing links to may never be crawled at all. Google's only hard requirement is that a link is an a element carrying an href attribute; script handlers, buttons and framework routing attributes are not crawlable links. There is no cap on how many internal links a page may carry, because Google dropped its old 100-links-per-page guideline years ago.
Last updated August 2026
Most advice treats internal links as a ranking tactic, a way of pushing authority around a site. That part is real, but it buries the bigger effect. Before a page can rank it has to be indexed, before it can be indexed it has to be crawled, and before it can be crawled Google has to know the URL exists. Google's documentation is blunt about where that knowledge comes from: pages are discovered when Google extracts a link from a page it already knows. A page with no internal links pointing at it is asking Google to find it by accident.
That is why the same site can publish for two years and watch a third of its URLs sit in Discovered or never appear in Search Console at all. The content is fine. Nothing points at it. This page covers what Google can and cannot follow as a link, how many links a page should carry, how click depth changes what gets crawled, and how to find the orphan pages on your own site. The console above shows you which of your URLs are actually indexed right now, which is the fastest way to tell whether your link graph is doing its job.
Official methods only
White hat · no spam, no PBNs
Why it works
What your team gets with internal linking
Discovery comes first
Google finds most new URLs by extracting links from pages it already crawls. Internal links are not a ranking bonus you add later. They are the mechanism that puts a URL in the crawl queue at all.
Only real anchors count
Google documents one crawlable link format: an a element with an href attribute. Buttons, click handlers and framework routing attributes look like links to a person and are invisible to a crawler.
See which pages are stranded
An orphan page never announces itself. Coverage monitoring lists which URLs are indexed and which are not, so the pages your link graph is skipping show up as data instead of a hunch.
What it handles
Submitted, monitored and fixed, automatically
Indexing submits your URLs through the official Google Indexing API, Bing IndexNow and clean XML sitemaps, watches coverage across both engines, and flags any page that drops out with a plain-English reason so you can resubmit and get it back.
- Shows which URLs are indexed and which Google has never crawled
- Separates never-discovered pages from crawled-and-rejected ones
- Flags pages that drop out of the index after a navigation change
- Confirms your sitemap is declared, reachable and complete
- Resubmits pages through official channels once you fix the links pointing at them
Not indexed yet
/blog/seo-guide-2026 is discovered but not indexed
thin content signal, queued for re-crawl via the Indexing API
Why Indexing
One place to submit, monitor and fix coverage
Not a black-hat indexer that risks your site, not a free checker that only tells you the bad news. Indexing unifies official submission and live coverage monitoring, the white-hat way, across Google and Bing.
Submits the official way
Bulk-submit through the Google Indexing API, Bing IndexNow and clean XML sitemaps. We speed discovery and re-crawl using methods the engines support, never spam, PBNs or black-hat tricks.
Monitors coverage live
You do not refresh a search bar one URL at a time. Indexing watches which pages are in Google and Bing, catches anything that drops out, and tracks time-to-index across your whole site.
Diagnoses and resubmits
Every non-indexed page comes with a plain-English reason, then auto-resubmits through the official API so it gets another shot. Google still decides, but nothing waits in the dark.
At a glance
What Google can and cannot follow as an internal link
Google documents exactly one crawlable link format. Everything else in this table is a link to a human and a dead end to a crawler. Verified against Google's link best practices documentation, August 2026.
| Markup on the page | Crawlable? | Why | What to do instead |
|---|---|---|---|
| a href="/page" with anchor text | Yes | The one form Google documents as crawlable: an a element with an href attribute. | Nothing. This is the correct form. |
| a href="/page" wrapping an image | Yes | The href is present, and the image alt text does the job anchor text normally does. | Write descriptive alt text on the image. |
| a element with no href attribute | No | Google states it can only crawl a link if it is an a element with an href attribute. | Add a real href pointing at a resolvable URL. |
| span carrying an href attribute | No | href on a non-anchor element is not a link. Google lists this as not recommended. | Use an a element. |
| a element with an onclick handler | No | Google states it cannot reliably extract URLs from tags that act as links through script events. | Use a href and keep the handler if you still need it. |
| a element with a framework routing attribute | No | Routing attributes such as routerLink are not href. Google lists this pattern as not recommended. | Render a real href in the server response. |
| button that sets window.location | No | Not an anchor element at all, so there is no URL for a crawler to extract. | Use an a href styled to look like a button. |
| URL present in the sitemap but linked from nowhere | Discoverable, but weak | A sitemap is a discovery hint, not a guarantee of crawling, and it carries no context or anchor text. | Keep the sitemap and add real internal links as well. |
How Google actually finds a page
Google's own description of the process is short and worth reading literally. There is no central registry of web pages, so Google has to keep looking for new ones and adding them to a list of known pages. Some pages are known because Google has already visited them. Others are discovered when Google extracts a link from a known page to a new page, and Google's example is a hub page such as a category page linking to a new blog post. The rest come from sitemaps you submit.
Read that list again with a specific question in mind: which of those three routes covers a page you published last week that nothing links to? Not the first, because Google has never visited it. Not the second, because there is no link to extract. That leaves the sitemap, which is the weakest of the three. A sitemap tells Google a URL exists. It says nothing about whether the URL matters, and Google has never promised to crawl every URL in one.
Internal links carry information a sitemap cannot. They tell Google that a page exists, that another page on your site considered it worth pointing at, roughly what it is about through the anchor text, and where it sits relative to everything else. That is four signals against a sitemap's one, which is why a page linked from your navigation gets crawled in days and a page listed only in the sitemap can sit untouched for months.
- Route 1: Google revisits a URL it already knows about
- Route 2: Google extracts a link to it from a page it already crawls
- Route 3: You list it in a sitemap you submit
- Only route 2 supplies context, anchor text and a signal that the page matters
- A page with no internal links is relying entirely on the weakest route
What makes an internal link crawlable
Google's requirement is one sentence long: it can only crawl your link if it is an a element with an href attribute. Everything in the table above follows from that. The href also has to resolve to something a crawler can send a request to, which rules out fragments that only mean something to your JavaScript router.
This matters more now than it did five years ago because of how modern front ends are built. A component library ships a clickable card, the card is a div with a click handler that calls the router, and to every human being on earth it is a link. To Googlebot it is a div. Sites lose entire sections this way: the product category pages are reachable from the homepage by clicking, and reachable to a crawler from nowhere.
The test is boring and reliable. Load the page, view the rendered source, and search for the URL you expect to find inside an href. If it is not there, no amount of internal linking strategy helps, because there is no link. Do this on your primary navigation, your pagination, your faceted filters and any infinite-scroll listing, which are the four places it goes wrong most often.
Pagination deserves its own check. If page two of a listing is only reachable by clicking a button that fetches more results with JavaScript, then everything past the first twenty items is effectively orphaned. Rendering real anchor elements with real hrefs for each page of a listing costs almost nothing and is often the single change that gets a large catalog crawled.
How many internal links should a page have?
There is no limit, and the number people still quote comes from a guideline Google retired more than a decade ago. The old advice to keep a page under 100 links existed for a mechanical reason that no longer applies: Google's indexing system used to truncate documents at roughly 100 kilobytes, so about one link per kilobyte was a sensible ceiling. When the size limit went, the guideline went with it. Matt Cutts of Google later said publicly that pages with two, three or four hundred links are entirely normal now, as long as the page is long and has real substance behind it.
So the practical answer is not a number, it is a ratio. Links should be proportional to content. A 400 word post with 40 internal links is a link farm; a 4,000 word guide with 40 internal links is a well-connected reference page. Google did keep one caveat, which is that a page stuffed with links purely to game the system can still be actioned as spam. That is a judgment about intent, not a count.
For a normal editorial page, three to ten in-content links is a comfortable working range, on top of whatever your navigation and footer already carry. What matters far more than the count is the distribution. Ten links spread across ten different pages that need help beats ten links all pointing at your homepage, which already has every link on the site pointing at it.
- No official limit exists. The 100-link guideline was dropped years ago
- The original 100 came from a 100KB indexing truncation limit, not from link theory
- Google reserves the right to act on pages that are obviously link-stuffed
- Judge links per page against content length, not against a fixed number
- Three to ten in-content links suits most editorial pages
- Where the links point matters more than how many there are
Orphan pages: the URLs nothing on your site points at
An orphan page is a page on your site that no other page on your site links to. It exists, it loads, it may even be in your sitemap, and there is no path to it by clicking. Orphan pages are almost never created deliberately. They are a side effect of ordinary site maintenance.
The usual causes are worth knowing because they tell you where to look. A category or tag archive gets removed and every post that was only reachable through it is stranded. A site is redesigned and the new navigation lists eight sections where the old one listed fourteen. Paginated listings are shortened, so posts past page three fall off the end. Landing pages are built for an ad campaign, the campaign ends, and nothing was ever supposed to link to them. Products go out of stock and get pulled from listings while their URLs stay live.
Finding them takes two lists and a subtraction. List every URL your site can produce, usually from your sitemap or your CMS. Then list every URL that is reachable by following links from the homepage, which is what a crawler sees. The difference is your orphan set. If you do not have a crawler handy, the cheaper proxy is to compare your sitemap against what is actually indexed, since a page that has been live for months and has never been indexed is a strong orphan candidate.
Then decide, page by page, which of three things is true. The page matters, in which case link it from somewhere relevant that already gets crawled. The page does not matter but should stay live, in which case leave it and stop worrying. Or the page should not exist, in which case redirect it to the closest live equivalent or let it return a 404, which Google treats as a strong signal not to crawl that URL again.
- Removed category, tag or archive pages strand everything under them
- Redesigns that shrink the navigation orphan whole sections
- Shortened pagination cuts off older posts
- Campaign landing pages that were never linked from the site
- Out-of-stock products pulled from listings while the URL stays live
- Pages reachable only through a search box, which crawlers do not use
Anchor text: the part most sites waste
Google asks for anchor text that is descriptive, reasonably concise, and relevant both to the page it sits on and to the page it points at. That is a low bar and most sites still fail it, because the two most common internal anchors on the web are read more and click here, which describe nothing.
Anchor text is doing real work. It is one of the few direct statements you make about what another page is about, and unlike a title tag you get to make it repeatedly, from different pages, in different contexts. A page linked forty times as read more has been described forty times as nothing.
The other failure is the opposite one. Linking every instance of a phrase to the same page with the same exact anchor reads as automated, and it usually is, because a plugin did it. Vary the phrasing naturally. If a page is about bulk index checking, linking it once as checking thousands of URLs at once and once as a bulk index checker is better than forty identical anchors, and it reads like a person wrote it because a person did.
One practical rule: write the sentence first, then link the words that were already there. Anchors chosen that way are almost always descriptive, because you wrote them to explain something rather than to carry a keyword.
Click depth and site structure: why level four never gets crawled
Click depth is the number of clicks from your homepage to a given page, following the shortest path. It is not a ranking factor Google publishes, but it correlates hard with what actually gets crawled, for a reason that is more arithmetic than algorithm. Your homepage is the most linked page on your site. Whatever it points at inherits some of that, and whatever those pages point at inherits some of what is left. By the fourth or fifth level there is very little arriving.
Crawl demand works against depth too. Google describes crawl demand as a function of perceived inventory, popularity and staleness. A page five levels down is rarely popular, and Google's picture of your inventory is built from the links it can see. Deep pages are visited less often, so their changes are noticed later, which makes them look staler, which makes them visited even less often.
The fix is structural rather than tactical. Flat is better than deep: most sites can reach every page in three clicks with sensible hub pages, and a site that needs six is usually organizing by internal convention rather than by what readers look for. Hub pages are what make flatness possible. A well-built category page that genuinely lists everything under it turns a five-level tree into a two-level one, and it is exactly the pattern Google uses in its own documentation when describing how it discovers new posts.
Pagination is the common leak. A blog listing that shows ten posts a page and runs to page fifteen puts your older posts fifteen clicks from the homepage even though the tree looks shallow on paper. Category hubs, a decent tag structure, and related-post links between articles all pull those pages back up.
- Aim to reach every page that matters within three clicks of the homepage
- Build hub pages that genuinely list everything beneath them
- Watch deep pagination, which quietly buries older content
- Link between related articles so posts are not reachable only through listings
- Put your most important pages one click from the homepage, not in a footer
An internal linking workflow that survives a real site
Most internal linking advice assumes you are starting from nothing. You are not. You have a site with several hundred pages, a navigation nobody wants to touch, and no appetite for a six week audit. This is the version that fits into an afternoon and repeats monthly.
Start from what is broken rather than from a map. Pull the list of URLs that are not indexed. For each one, ask a single question: what links to this? If the answer is nothing or only the sitemap, you have found an orphan and the fix is one link from a page that already gets crawled regularly. Do that before anything else, because those pages are currently worth zero.
Then work the other direction. Take your pages that already rank and get traffic, since those are the pages Google crawls most often, and check what they link to. This is where you place links to pages you want crawled sooner. A link from a page Google visits weekly is worth many links from pages it visits twice a year.
Make new links part of publishing rather than a separate job. When an article goes live, add two or three links to it from existing related articles the same day. This is the step people skip, and it is the reason a new post can sit in Discovered for six weeks. The link from an already-crawled page is what puts it in the queue.
Finally, re-check after anything structural. A navigation change, a category cleanup, a pagination change or a migration can orphan dozens of pages silently, and nothing on the site will look broken. Comparing what is indexed before and after is the cheapest way to catch it while it is still one deploy old.
- Step 1: list URLs that are not indexed and find which have nothing linking to them
- Step 2: add one link to each orphan from a page that already gets crawled often
- Step 3: audit what your best-crawled pages link to, and place new links there
- Step 4: link every new page from two or three existing pages on publication day
- Step 5: re-check coverage after any navigation, pagination or category change
Internal linking mistakes that quietly cost you indexing
Linking everything to the homepage. The homepage already receives more internal links than any other page on your site and needs none of them. Links pointed there are links not pointed at the pages that need help.
Treating the footer as an internal linking strategy. A block of links repeated on every page is worth very little per link, and an identical link block across a whole site is a pattern rather than an endorsement. Contextual links inside content are worth more, and a footer full of them will not rescue an orphan.
Linking to redirects instead of destinations. Internal links that point at a URL which then redirects still work, but they add a hop for every crawl and they get worse over time as chains accumulate. When you move a page, update the internal links that point at it rather than relying on the redirect forever.
Linking to pages that are noindexed or blocked in robots.txt. This is wasted crawling. Worse, a page blocked in robots.txt that carries a noindex tag will never have that tag read, because the crawl needed to read it is the crawl you blocked.
Automating anchor text with a plugin and never reading the output. Automated interlinking produces exactly identical anchors at scale, links inside sentences where they make no sense, and sometimes links a phrase to the page it is already on. Skim what it produced.
Assuming the sitemap covers it. A sitemap and an internal link do different jobs. Sites that lean on the sitemap alone tend to have large numbers of URLs sitting in Discovered, which is Google saying it knows the URL exists and has not judged it worth fetching.
Keep reading
- How to Get Blog Posts Indexed on Google Faster Why blog posts specifically fail to get indexed, how to read the Search Console reason instead of guessing, and the seven changes that actually move blog indexing.
- Discovered - Currently Not Indexed: What It Means and How to Fix It Discovered currently not indexed means Google found your URL but has not crawled it yet. Here is what causes it and the white-hat steps that move the page forward.
- How Many Internal Links Should a Page Have? There is no limit. Google dropped the 100-links-per-page guideline over a decade ago. What actually matters is links per destination, not links per page.
Good questions
Questions about internal linking
Explore more
More ways teams get every page indexed
llms.txt and AI crawler access
Half the SEO industry shipped an llms.txt this year. No major AI engine has committed to reading it. Here is the real spec, and the thing that actually decides whether AI answers cite you.
Learn moreRemove a URL from Google
Google's removal tool hides a URL for about six months, then hands it back. Removing a page for good is a different job, and verifying it stayed gone is a third one.
Learn moreSearch Console API
Every published quota, what each endpoint returns, and the one thing the Search Console API will never do for you.
Learn moreStop guessing. Get every page indexed and keep it that way.
Bulk-submit your URLs through the official Google and Bing channels, monitor coverage, and resubmit anything that drops out, automatically. White hat only, so we speed discovery without ever guaranteeing what Google chooses to index.
Google Indexing API · Bing IndexNow · sitemaps · coverage monitoring · official methods only