An internal link is a link that takes you from one page to another page on the same domain. For Google it is the main channel for discovering new pages and understanding which ones matter; for the reader it is the way to move on to the next question without going back to the search results.
This part of SEO is full of inherited rules and short on verifiable numbers. Here are the numbers: those from a study of 23 million internal links, those from the UK first page measured page by page, and those from our own blog, counted article by article.
What Google's documentation says
Google Search Central's link best practices are clear on one technical point: "Google can only crawl your link if it's an <a> HTML element with an href attribute". Attributes such as onclick or constructs such as routerLink are discouraged, because the crawler does not follow them.
On anchor text, Google asks for text that is "descriptive, reasonably concise, and relevant to the page that it's on and to the page it links to", and in particular text that is "specific enough to make sense by itself", that is, read outside the paragraph that contains it. On the number of links the answer is deliberately vague: "There's no magical ideal number of links a given page should contain"; the same page adds that if you think there are too many, there probably are.
The weight of this lever was summed up by Google's John Mueller in an office-hours session reported by Search Engine Journal on 8 March 2022: "internal linking is super critical for SEO". That is a statement, not data. The data comes next, and it says something more precise about where the gain lies. To understand what happens before ranking, how search engines work explains the crawling, indexing and ranking sequence, in which internal links play a part twice.
How many internal links a page needs
The largest study available is Cyrus Shepard's for Zyppy: 23 million internal links across 1,800 sites, about 520,000 URLs, matched against the clicks recorded in Google Search Console. The sample is international and largely English-language, so it is close to what a UK site looks like; even so, the absolute values depend on the site. The shape of the curve is the interesting part.
- URLs with 0-4 inbound internal links received an average of 2 clicks from Google.
- Those with 40-44 links received about four times as many.
- Beyond 45-50 inbound links, traffic started to fall again.
The authors state the limit: it is a correlational study, and an important page gets plenty of internal links partly because it is important. Read the other way round, though, the first step is still the only one you control: going from zero links to a few takes ten minutes.
So we measured what the pages that rank actually do: here is how many links each page on the first page of Google UK for "internal linking" contains, collected with the DataForSEO On-Page API on 26 September 2026. The count includes menus, sidebars and footers, not just links in the body text. Of the eight organic results we analysed seven: the Mailchimp page served our crawler its German version, so we left it out.
| Page on the UK first page | Words | Internal links | External links |
|---|---|---|---|
| Yoast | 3,667 | 80 | 17 |
| Ahrefs | 3,656 | 132 | 32 |
| Semrush | 3,499 | 145 | 28 |
| Moz | 2,976 | 95 | 12 |
| Backlinko | 2,827 | 120 | 12 |
| Seobility | 2,001 | 64 | 8 |
| Wikipedia | 583 | 74 | 23 |
The shortest page on the first page has 583 words and 74 links; the longest has 3,667 words and 80. The ratio between text and links changes almost sixfold between the two, and all seven rank anyway. If you are looking for the "one link every 150 words" rule, you will not find it here.
Anchor text matters more than the count
In the same Zyppy study the strongest signal is not how many links a page gets but what they say. Pages receiving at least one anchor text matching their target keyword had "at least five times more traffic" than those without. The variety of different anchors pointing to the same page showed such a marked correlation that the analysis was run three times, and it held even after almost half of the outliers were removed. Empty anchors, over 6% of the links analysed, made no statistical difference.
The criterion can be checked on any site, and we checked it on ours. Across the 2,739 internal links between articles on the Visilay blog (the Italian edition), each target page receives an average of 6 different anchor texts. Thirty pages, however, always receive the same anchor: the guide to Google Search Console is linked 52 times with only 5 different wordings, while keyword research reaches 76 links with 23 distinct anchors. The second covers more ways of asking the same question.
The working rule we take from this: write the anchor while looking at the target page, not the sentence you are linking from. If the page answers six questions, over time it should receive links with six wordings. We have a dedicated guide on choosing link text, anchor text, and the choice depends on the search intent the linked page serves.
The pages nobody links to
Ahrefs analysed 1,002,165 domains in a study of the most common technical issues published in August 2023 and updated in August 2026. Two findings concern internal links directly: 66.2% of sites have pages that receive only one dofollow internal link, and 62.7% have pages linking to a redirect instead of the final destination. It is a global sample, and the distribution of technical problems does not change much from one country to the next.
On our blog we counted the hrefs in the body of every published article, excluding menus, sidebars and footers and excluding the 20 placeholders that are still empty. That leaves 240 articles and 2,739 links, an average of 11.4 outbound links per piece. The median number of inbound links is 8.
| Inbound internal links (body text only) | Articles | Share |
|---|---|---|
| None | 12 | 5.0% |
| 1 to 2 | 32 | 13.3% |
| 3 to 5 | 40 | 16.7% |
| 6 to 10 | 83 | 34.6% |
| 11 to 20 | 39 | 16.3% |
| 21 or more | 34 | 14.2% |
The 12 articles with zero links are not random: almost all of them are vertical pieces published before the current clusters existed, from gym marketing to SEO for photographers. Nobody linked back to them because there was not yet an article to hook them onto. It is the structural flaw of any growing archive: links are only added going forward in time, and whatever came first stays behind until someone goes back and rereads it.
Answer engine crawlers do not run JavaScript
This is the part that has changed over the last two years. Vercel measured crawler behaviour across its own network, including nextjs.org and third-party sites, and published the results in The rise of the AI crawler: OpenAI's GPTBot, Anthropic's ClaudeBot, PerplexityBot and Meta-ExternalAgent do not execute JavaScript. Gemini does, because it uses Googlebot's infrastructure, and so does AppleBot, because it is browser-based. In the month observed Googlebot made 4.5 billion requests, GPTBot 569 million, ClaudeBot 370 million and PerplexityBot 24.4 million. All the AI crawlers detected operated from US data centres.
The practical consequence is direct. An internal link generated client-side, by a React component or by a menu built after the page loads, exists for Google after rendering; for ClaudeBot and GPTBot it does not exist at all. On a headless site with client-side navigation, the map these crawlers see can be a fraction of the real one. The same Vercel data shows that ChatGPT spent 34.82% of its fetches on 404 pages and Claude 34.16%, a sign of crawlers following old or incomplete links.
The check takes a minute: disable JavaScript in your browser, open an internal page and see how many links are left. Those are the links answer engines follow. The rest of the picture on how models read a site is in SEO and AI and in the guide to the llms.txt file.
The half-hour audit
- Search Console, Links report, Internal links section. Sort in ascending order: the pages at the bottom of the list are your orphan candidates. It is the only place where Google tells you what it sees, not what your crawler sees.
- A Screaming Frog crawl. You need three columns: inlinks, crawl depth and anchor text. Pages deeper than the third level and pages with a single inlink are your work list.
- The query
site:yoursite.co.uk "keyword". It returns the pages where that word already appears: these are the natural places to add the link, because the sentence already exists and does not need inventing. - The redirect check. Every internal link pointing to a redirected URL should be rewritten with the final destination. It costs little and removes a hop for the crawler.
- The rule for new content. Every published article gets at least three links from existing articles before it is considered done. The query in step 3 gives you the list of candidates.
If your site runs on WordPress you can skip the tools and count directly: the hrefs live in the post_content field, and a query that looks for each article's slug inside the content of the others returns the full matrix of inbound links. That is how we produced the table above, and it takes a few seconds even on a few hundred posts. If you would rather start from a wider view, a full SEO audit puts internal links alongside the other technical items.
The mistakes that keep coming back
- A "related articles" block instead of links in the text. If the theme generates it, it is identical for every article in the category and says nothing specific. The links that count sit inside sentences.
- The same anchor repeated everywhere. Thirty pages on our blog had this problem before we measured it, and the fix is slow because it has to be done one article at a time.
- Redirect chains. 62.7% of the sites in the Ahrefs sample link internally to URLs that redirect. It happens after every slug change that is not followed by a pass through the old content.
- Nofollow used to "sculpt" PageRank. Google closed that practice in 2009 by changing how value is distributed. Putting nofollow on an internal link today removes value instead of moving it.
- The footer as a dumping ground. Twenty links to secondary pages at the bottom of every page help none of the twenty.
On the other hand, internal linking is the part of technical SEO that depends only on whoever runs the site: no negotiation, no external budget, unlike link building. On the ledwall cluster of Macropix, an Italian client we have worked with since 2018, the hub structure between category pages and in-depth articles is one of the levers that took "monitor pubblicitario" (advertising monitor) from position 88 to 2 on Google Italy and the share of voice to 25.55%, ahead of Amazon.it: the full case is in the article on SEO for manufacturing.
Frequently asked questions
Google says there is no ideal number. In the Zyppy study of 23 million links, traffic grows up to 40-44 inbound links per page and then falls, but the study is correlational. On the first page of Google UK for internal linking, the count ranges from 64 to 145 links per page, menus and footers included: the median is 95.
No, but they are the only part of your link profile you control directly. A backlink has to come from someone else; an internal link takes ten minutes to add and can be rewritten when the strategy changes.
It is a page that receives no internal links, so the crawler reaches it only through the sitemap. You find it in the Search Console Links report by sorting internal links in ascending order, or with a Screaming Frog crawl filtering pages with zero inlinks.
Google asks for descriptive, specific anchors. In the Zyppy study, pages with at least one anchor matching the target keyword had at least five times more traffic, and the variety of different anchors showed the strongest correlation in the whole dataset.
They are crawled like any other link, but they are identical on every page and carry no context. Links in the body text sit inside a sentence that explains what is on the other side, and that is the difference.
Almost never. Using nofollow to concentrate value on other pages has not worked since 2009, when Google changed how PageRank is distributed across the links on a page.
They follow those present in the HTML. According to data published by Vercel, GPTBot, ClaudeBot and PerplexityBot do not execute JavaScript: a link generated client-side does not exist for them.
One thing the industry rarely says: internal linking is not a publishing job, it is a rereading job. Every new article is also a chance to add a link to three old ones, and that half-hour is worth more than the half-hour spent polishing the title. If you want someone to do it for you, it is part of our SEO service; if you would rather see the results on real sites first, they are in our projects.