Skip to content

field note

Internal linking for SEO: how links get deep pages crawled and indexed

Crawling and robots.txt

Shahid AliSeptember 16, 2026all posts

Internal linking for SEO: how links get deep pages crawled and indexed

Internal linking for SEO gets written up as an authority trick: point links at the page you want to rank. That is the smaller half of the job. On the sites I audit, internal links decide something more basic first, which is whether Google finds and crawls a page at all. Google’s own documentation says it plainly: “Google primarily finds pages through links from other pages”, and a page that no crawled page links to barely exists. Here is how I read internal links through Search Console instead of through a crawler, and the linking patterns that quietly keep deep pages out of the index.

Only a real anchor. Google’s link documentation is specific: it can only reliably extract links from <a> elements with an href attribute. A <span> with an href, a div with an onclick handler, a javascript: pseudo-URL, or a router link that never renders to a plain anchor are all links to your visitors and nothing to Googlebot. When a site adds “related articles” through a JavaScript widget that never resolves to <a href> in the rendered HTML, every one of those links is decoration.

Anchor text is part of the link. Google’s guidance is to write anchors that describe the target page, and internally you are allowed to be exact: “crawl budget in Search Console” as an anchor tells Google what the target is about in a way “read more” never will.

The Links report, and it is the most under-read report in Search Console. Open Links, then Top internally linked pages. This is not a crawler’s opinion. It is Google’s own count of the internal links it has found and credited, which makes it a ranking of what Google believes your site considers important. The diagnosis I look for takes one minute: if tag archives, the privacy policy and the contact page sit above the pages that earn money, the internal linking is upside down, and Google is being told the wrong thing every day.

Two caveats before you build anything on that report. It lags by weeks, so a link you added yesterday proves nothing when it is missing there; I wrote up why the Links report does not update separately. And it counts links, it does not weigh them, so a sitewide footer link inflates a page’s number without carrying the signal an in-body link does.

Crawling runs on two levers, and Google’s crawl budget documentation names both: capacity, which is how much your server can take, and demand, which is how much Google wants your URLs. Internal links are the main way a page proves demand. The same document lists a large share of “Discovered - currently not indexed” as exactly the situation it is written for. That status means Google knows the URL exists and has decided not to fetch it yet, and a URL whose only mention is a sitemap entry is the easiest thing in the world to deprioritize. I covered the status itself in Discovered vs Crawled - currently not indexed; the fix, most of the time, is a real in-body link from a page Google already crawls often.

The Crawl stats report shows the same story from the other side. Under crawl purpose it splits requests into discovery and refresh. A site whose crawling is almost all refresh with near-zero discovery is a site where Googlebot keeps re-reading old pages and never finds the new ones. That is a linking problem, not a sitemap problem, because sitemaps advertise URLs while links justify them.

One link, three Search Console reports 1. A crawled page links out in-body a href, descriptive anchor Check: Links report 2. Discovery crawl scheduled demand earned, capacity willing Check: Crawl stats, by purpose 3. Crawled, then indexed or held stuck here = Discovered, not indexed Check: Page indexing report A sitemap entry only advertises the URL. The in-body link is what earns the discovery crawl, which is why "Discovered - currently not indexed" is usually a linking problem wearing an indexing label. Stages and report behaviour from Google's crawl budget documentation and the Search Console Help pages for the Links, Crawl stats and Page indexing reports.

Which internal linking patterns starve deep pages?

Five patterns come up again and again in audits, and none of them look broken from the homepage:

  • Archive-only links. A new post is linked from the blog index for a week, then pagination pushes it to page 4. Its effective click depth is now five or six, whatever the theory says. If the post never earned an in-body link from a related article, it lost its only good link the day it left page one.
  • Widget dilution. Related-posts and tag-cloud widgets that emit dozens of links on every page. Each individual link is worth almost nothing, and the pages that need signal drown in pages that do not.
  • Links to the wrong variant. Internal links pointing at redirected, parameterized or non-canonical URLs. Google follows the hop, but you are spending crawl requests on 301s, and the Crawl stats response-code breakdown will show it. On WordPress, category and tag archives soaking up link equity is the same disease.
  • Rotating links. “Recent posts” sidebars give every new page links for a week, then take them all back. Pages that only ever had rotating links slide into Discovered - currently not indexed a month later.
  • JavaScript-only links. Covered above. If it is not <a href> in the rendered HTML, it does not exist.

What I actually do about it

When a page matters, it gets two or three in-body links from pages Google already recrawls frequently, with anchors that name the target’s topic. Not footer links, not widgets. On the slowest indexing job I have written up, a 118-day crawl-to-index cycle, the pages that finally moved were the ones that had picked up in-body links from frequently crawled pages, while sitemap resubmissions on their own moved nothing. After adding links, I request a recrawl of the linking page, not just the target, because the link has to be seen before it can work; the mechanics are in how to make Google recrawl your site.

Then I leave the Links report alone for a few weeks and watch Crawl stats instead. Discovery requests picking up is the early signal. The Links report catching up is the lagging one.

Sources