Internal linking for SEO: a practical guide

·4 min read

Internal linking is how you connect pages on your own site with plain <a href> links, and it is one of the few SEO levers you fully control. Google follows those links to find new pages and reads the anchor text to understand what each target is about. A good internal link structure puts your important pages a few clicks from the homepage, uses descriptive anchor text and has no links that end at a 404 or a redirect.

Google states it plainly in its link best practices. It uses links "to find new pages to crawl" and as a signal of relevance. The same page adds that every page you care about should have a link from at least one other page on your site.

That gives internal links two jobs. The first is discovery. A page that nothing links to depends on your sitemap alone, and if the sitemap misses it too, Google may never find it. We cover how to find them in the post on orphan pages.

The second job is context. When ten pages link to /pricing with the words "pricing plans", Google learns more about that URL than any meta tag tells it. Most sites waste that signal on "learn more".

Start from the pages that earn money or answer the main questions in your market, then make sure the structure points at them. Three patterns cover most sites.

Hub pages. Each topic gets one page that summarizes it and links to every detailed page underneath. A "Running shoes" category links to each shoe guide, and each guide links back up. Hubs keep important pages two or three clicks from the homepage.

Related links in the body. Links inside the main text carry the most context because the surrounding sentence explains why the reader should click. Add them when you publish a page, and go back to older pages to link the new one. That second step is the one people skip.

Breadcrumbs. A trail like Home > Shoes > Trail running gives every page a link to its parents and shows the hierarchy in plain HTML. Mark it up as well; the breadcrumb schema guide has the JSON-LD.

Navigation menus and footers count too, but they repeat on every page, so they say little about any single page.

There is no fixed limit. Google says "There's no magical ideal number of links a given page should contain," and adds that if a page feels like too many links, it probably has too many.

In practice, link where a reader would want to go next. A 900-word article might have five to ten contextual links. A category page can carry hundreds of product links and be fine, because a category is a list of links by design. The real failure is the opposite case, a long article with zero links out.

Anchor text rules that work

Anchor text should tell the reader and Google what the target page is. Google's guide asks for text that is descriptive, reasonably concise and relevant to both pages. It flags "Click here" and "Read more" as too generic, and it flags whole sentences used as anchors as too long.

A quick test from the same guide is to read the anchor on its own. "Our trail running shoe guide" makes sense out of context. "Here" does not.

Anchor text Verdict
click here Too generic
read more about this Too generic
trail running shoe guide Good
best trail running shoes for wide feet in 2026 reviewed by our team Too long

Vary the wording across pages. Twenty identical exact-match anchors to one URL look written for a crawler, not a person.

Google can generally crawl a link only if it is an <a> element with an href attribute. Click handlers on other elements, or anchors without href, are not reliable:

<!-- Crawlable -->
<a href="/shoes/trail">Trail running shoes</a>

<!-- Not reliably crawlable -->
<a onclick="goTo('/shoes/trail')">Trail running shoes</a>
<span href="/shoes/trail">Trail running shoes</span>
<a routerLink="shoes/trail">Trail running shoes</a>

Google notes that links inserted with JavaScript are still crawlable as long as they end up as real <a href> elements. Most AI crawlers do not run JavaScript at all, though, so links that only exist after rendering are invisible to them. The JavaScript SEO post explains how to check what a crawler receives.

A broken internal link sends visitors and crawlers to an error page and wastes the context its anchor text carried. Fix it in the source HTML. Point the href at the page's current URL, or remove the link if the page is gone for good.

Links that hit a redirect still work, but each one costs an extra request and keeps the old URL alive in your own markup. After a migration, update templates and body links to the final URL instead of leaning on the redirect forever. If Search Console lists those old URLs under "Page with redirect", the page with redirect guide explains why that report is usually fine and when to act.

The Broken Internal Link Finder reads one page's HTML, collects the unique links that point to the same host and requests up to 30 of them, main-content links before navigation, header and footer links. It reports each link's anchor text, the HTTP status it returned and whether it is broken, unreachable or blocked by the site's bot protection, with the fix for each. A run costs 15 credits.

It checks one page, not the whole site. It does not run JavaScript, so links injected client-side are missed, and it skips links to other sites. To crawl up to 150 pages and catch orphans as well, use the Orphan Page Finder.

Keep reading