Internal links are how Google finds most of your pages and how it judges which of them matter. A page with several crawlable links from pages Google already visits often gets discovered fast, crawled regularly and is more likely to be kept in the index. A page with no links, or links Google cannot follow, tends to sit in "Discovered - currently not indexed" or never get found at all.
Sitemaps help with discovery, but they do not replace links. Google's own documentation on sitemaps says that if your pages are properly linked, Google can usually discover most of your site without one.
What internal links do for indexing
Three separate things, and it helps to keep them apart.
Discovery. Googlebot extracts links from every page it fetches. A new URL linked from your homepage or a busy category page is found the next time that page is crawled, which for a homepage can be the same day.
Crawl priority. Google does not crawl everything it knows about. URLs that are linked from many places, and from pages that are themselves prominent, get crawled sooner and more often. URLs buried seven clicks deep get crawled rarely. This is the demand side of crawl budget.
Context and importance. Anchor text and the surrounding content tell Google what the target page is about. The number and placement of links tells Google how important you think it is. A page you never link to is a page you are signalling is not worth much, and Google tends to agree.
Links Google can and cannot follow
Google's documentation on crawlable links is specific: it can reliably crawl a link only if it is an <a> element with an href attribute that resolves to a real URL.
<!-- Good -->
<a href="https://example.com/guides/sitemaps">XML sitemap guide</a>
<a href="/guides/sitemaps">XML sitemap guide</a>
<!-- Google may not follow these -->
<a routerLink="guides/sitemaps">Guide</a>
<span href="/guides/sitemaps">Guide</span>
<a onclick="openPage('/guides/sitemaps')">Guide</a>
<a href="javascript:goTo('sitemaps')">Guide</a>
<a href="#">Guide</a>
Common ways sites break this without noticing:
- Buttons instead of links. "Load more" and pagination built with
<button>and a fetch call. Googlebot does not click. Anything behind the button is unreachable unless it is also linked with normal paginated URLs. - Links injected only after interaction. Menus that are rendered when the user hovers or taps. If the links are not in the rendered DOM on load, Google does not see them.
- Internal search as the only path. Googlebot does not type into search boxes.
- Links in the desktop layout only. Google indexes the mobile version. If the mobile menu drops half of the navigation, those links are gone for Google too.
To see what a page really exposes, run it through the Page Link Extractor. It lists internal, external and nofollow links from the HTML, which is close to what Googlebot gets before rendering.
Click depth: the number that matters most
Click depth is the minimum number of clicks from the homepage to a page. Google has no documented threshold, but in our experience the pattern is consistent: pages at depth one to three are crawled often, and crawl frequency falls away fast after that.
| Depth | Typical pages | What to expect |
|---|---|---|
| 0 | Homepage | Crawled most often |
| 1 | Main categories, key landing pages | Crawled frequently, discovered links are picked up fast |
| 2 to 3 | Subcategories, articles, products | Healthy zone for anything you want indexed |
| 4 to 5 | Deep pagination, old archive posts | Crawled less often, slower to index and to refresh |
| 6+ | Page 40 of a category, filtered lists | Often left as "Discovered - currently not indexed" |
Ways to flatten a deep site without wrecking the design:
- HTML hub pages. A
/guidesor/categoriespage that links to every section, and section pages that link to every item. - Related content blocks. Three to six contextual links at the bottom of each article or product. These are the easiest way to give old pages fresh links.
- Breadcrumbs. Every page links up to its parents, and the parents link down. Add
BreadcrumbListmarkup while you are there. - Better pagination. Link to more than "next". Showing pages 1, 2, 3, 10, 20 and last cuts the depth of a long list a lot.
- "Latest" modules on the homepage. New content gets a depth of one on the day it is published, which is when you most want it crawled.
A repeatable internal link audit
You need a crawler for this (Screaming Frog, Sitebulb or any similar tool) and your XML sitemap.
- Crawl the site from the homepage, following links only, with JavaScript rendering on if the site needs it.
- Export the URL list from your sitemap. The Sitemap URL Extractor does this, including nested sitemap indexes.
- Compare the two lists. URLs in the sitemap and not in the crawl are orphan pages. URLs in the crawl and not in the sitemap are either missing from the sitemap or should not be indexable.
- Sort the crawl by inlinks, ascending. Any important page with one or two inlinks needs more.
- Sort by crawl depth, descending. Anything important deeper than three or four needs a shorter path.
- Filter internal links by status code. Links to 301s, 404s and noindexed pages waste the link. Point them at the final, indexable URL.
- Cross-check with Search Console. In the Page indexing report, open "Discovered - currently not indexed" and look at the examples. If they are the same deep, weakly linked URLs from steps 4 and 5, you have found the cause.
Search Console also has a Links report (Links > Internal links > Top linked pages). It is sampled and slow to update, but it is Google's own count, so it is a useful sanity check on whether your priority pages are near the top.
Anchor text and placement
Google's link best practices ask for anchor text that is descriptive, reasonably concise and relevant to the page it points to. Practical version:
- Write anchors that would make sense out of context: "fix blocked by robots.txt" beats "this article".
- Do not force the exact same keyword anchor on every link. Natural variation is fine and reads better.
- For image links, the
altattribute acts as the anchor text. Fill it in. - Links in the main content carry more context than links in the footer. Put important links where a reader would actually use them.
- Do not chain links back to back in a sentence. Google's guidance specifically mentions giving each link some surrounding context.
Mistakes that quietly block indexing
Nofollow on internal links. Sometimes added by a plugin or an old "PageRank sculpting" habit. Google treats nofollow as a hint and generally will not follow the link. If that was the only path to a page, the page is effectively orphaned.
Linking to non-canonical URLs. Internal links to http://, to non-www, to URLs with tracking parameters or to the redirecting version of a page send mixed canonical signals. Link to the exact canonical URL, every time. Internal links are one of the signals Google uses when it chooses a canonical.
Linking to pages that are blocked or noindexed. A large block of links to /cart, /login and filtered URLs in every footer spends crawl attention on pages that cannot be indexed.
Relying on the sitemap for everything. A page that exists only in the sitemap has been discovered and nothing else. Google can see that nothing on your site points to it.
Removing links in a redesign. New templates often drop sidebar modules, tag lists or footer links that were the only paths to older content. Run the crawl comparison before and after any redesign or site migration.
Infinite link spaces. Calendars with a "next month" link that never ends, and faceted navigation that generates millions of combinations. Here the problem is too many crawlable links, and the fix is to restrict them.
What internal links cannot do
They do not force indexing. If Google crawls a well linked page and still leaves it as "Crawled - currently not indexed", the problem is the page: duplicate, thin, or not useful enough compared with what is already indexed. Links get Google to look. The content has to justify staying.
They also work on Google's schedule. After fixing links you wait for the linking pages to be recrawled, then for the targets to be crawled. For a small set of high value URLs you can use Request indexing in the URL Inspection tool. For larger sets, a tool such as TurboIndex can track each URL's index status through the URL Inspection API so you can see whether the link changes are moving pages out of "Discovered".
Quick checklist
- Every indexable page has at least one
<a href>link from another indexable page - Priority pages are within three clicks of the homepage
- Pagination and "load more" have crawlable URL equivalents
- Mobile navigation contains the same key links as desktop
- No internal nofollow on links to indexable pages
- Internal links point to final canonical URLs, not redirects
- New content is linked from the homepage or a hub on publish day
- Sitemap URLs and crawled URLs are compared after every major release
Frequently asked questions
- How many internal links should a page have?
- Google gives no number. The practical rule is that every page you want indexed should have at least one crawlable link from another indexed page, and your important pages should have many, from pages that are themselves well linked. Hundreds of links in a mega menu add little because they are the same on every page.
- Do nofollow internal links hurt indexing?
- They can. Google treats nofollow as a hint and generally does not follow those links, so a page that is only reachable through nofollow links may not be discovered. There is almost never a good reason to nofollow links to your own indexable pages.
- Does anchor text matter for internal links?
- Yes. Google's link documentation says anchor text tells people and Google something about the page you link to. Descriptive anchors such as 'robots.txt guide' help more than 'click here' or 'read more'.
- Is a sitemap enough without internal links?
- No. A sitemap helps Google discover the URL, but a page with no internal links looks unimportant, and Google often leaves such pages as 'Discovered - currently not indexed'. Use both.