Internal Linking: How to Build a Pillar and Cluster Structure

Internal linking is the system of connecting pages on a single website. In a pillar-cluster structure, one broad “pillar” page covers the topic at a high level, while the surrounding “cluster” articles address narrower questions and all link back to the pillar. This structure shows search engines the topical relationship between pages and guides users from one article to the next.

An internal link does three jobs. First — discovery: a crawler moves from one page to another via a link, while a page not linked from anywhere is found only through the sitemap and usually gets indexed later. Second — context: the text around the link and the anchor text indicate what the page is about. Third — distribution of "weight" between pages: a page reachable from the homepage in three clicks is considered more important than one reached after ten clicks.

Google's link best practices documentation clearly states that a link must be in the form <a href="..."> — a "link" opened via JavaScript onclick is not a link for a crawler. This is the most common mistake on SPA sites.

Pillar and Cluster: How the Structure Works

A pillar page is the complete map of a topic. It does not dive deeply into a narrow question; instead, it lists all subtopics and links to each one. A cluster article fully answers a single question and links back to the pillar at least once.

Practical example: if “Preparing a Website for Search” is the pillar, the clusters would include — technical audit, page speed, title writing, Search Console setup, internal linking. Each cluster also links to other clusters where contextually relevant.

Element Purpose Link Direction
Pillar page Cover the topic comprehensively To all clusters
Cluster article Answer a single question To the pillar + 1–3 neighboring clusters
Service page Conversion From clusters where contextually relevant

The benefit of this structure is that when you write a new article, you don’t have to think about where to link it: it connects to the pillar it belongs to.

Anchor Text: What to Write

Anchor text is the clickable text of a link. Words like "here," "more details," or "this link" provide no information. The anchor should describe the page's topic: "technical SEO audit checklist" or "Search Console reports."

Repeating the same anchor everywhere is also not ideal — the text looks artificial and can be boring for readers. When linking to the same page from different places, use natural variations: "audit a website," "audit checklist," "12-point check." For example, website SEO audit checklist reads as a continuation of this article.

If the anchor is an image, the alt text performs the anchor function — an image link with an empty alt remains anchorless for a robot.

There is no exact number, but there is a practical guideline that works: in a 1,000-word article, 3–6 internal links naturally fit within the text. More than that turns the paragraph “blue,” and readers won’t click any of them.

More important is the placement of the link. A link placed in the middle of the text, where the relevant idea is discussed, gets more clicks than a “Related Articles” list at the bottom of the page. An automatically generated “Related Articles” block is useful, but it does not replace a manually placed contextual link.

Linking twice or three times from one page to the same destination is also excessive: the first link works, and the rest only clutter the text.

Orphan Pages and Depth

An orphan page is a page that receives no internal links from any other page. It exists in the sitemap, but is missing from the site structure. On large archive-style websites, this is a common situation: an article from three years ago ends up on page 40 of pagination, and nobody links to it.

The second issue is depth. The number of clicks required to reach a page from the homepage is called "click depth." A practical rule: important pages should not be more than three clicks away. Instead of relying on pagination, reduce depth by using relevant tag pages, topical collections, and contextual links within articles.

The easiest way to check this is to compare the URLs in the sitemap with the list of actual internal links:

# 1. All URLs in the sitemap
curl -s https://example.com/sitemap.xml | grep -oP '(?<=<loc>)[^<]+' | sort -u > sitemap.txt

# 2. Crawl the site and get the list of internal links
#    (with Screaming Frog or wget)
wget --spider -r -l 5 --no-verbose https://example.com 2>&1 \
  | grep -oP 'URL:\K\S+' | sort -u > crawled.txt

# 3. Pages that exist in the sitemap but were not found via links
comm -23 sitemap.txt crawled.txt

The result of the final command is the list of orphan pages. It does not have to be empty, but you need to find a link to each important page in the list.

Linking is not an end in itself. Set priorities as follows:

  1. Conversion pages — service, product, contact. Link to them from cluster articles in contextually appropriate places. For example, from an article about audit to the services page.
  2. Pillar pages — receive links from all clusters.
  3. New articles — as soon as they are published, they should receive 2-3 links from older, already indexed articles.
  4. Pages with improving metrics — pages ranking between positions 8 and 20 in Search Console. Adding internal links to them usually produces the fastest noticeable results.

You can find the fourth item in Search Console reports: sort by average position and isolate pages that are just short of the first page.

Revisiting Older Articles

Internal linking is not a one-time task. When writing a new article, it’s easy to add links from it to other pages, but the reverse is often forgotten: adding links from older articles to the new one.

The process is simple — once a new article is published, search the site for older content on the same topic and add a link where a suitable sentence is found:

site:example.com "ichki linklash"

Or directly in the repository: grep -ril "ichki linklash" content/. Check whether each file found contains a sentence worth linking to. A forced link provides no benefit.

Pages cited in AI answers are usually pages that clearly and independently cover a topic. Internal linking has an indirect effect here: a well-linked site structure creates topical context for the model and keeps the path from one page to another open. The article about appearing in AI search covers this aspect in more detail.

On the practical side: the first paragraph of a cluster article should answer the question directly, and the link to the pillar should come after that answer — not instead of it.

Frequently Asked Questions

How long does it take to see results from internal linking?

After the page is rescanned and the index is updated. This can take anywhere from a few days to a few weeks and depends on the site’s crawl frequency. It’s best to make major changes in stages and monitor for 3–4 weeks after each stage.

Can I do this myself?

Yes. Internal linking is one of the tasks that can be done without a developer, at the content editor level. You only need to scan the site once to review its structure (Screaming Frog’s free version covers up to 500 URLs).

The harm is usually not technical but user-side: the text becomes unreadable. There is no strict limit, but if a paragraph contains more than two links, reread that paragraph.

Usually no. There should be a clear reason for using rel="nofollow" on internal links (for example, login or filter URLs). Marking regular content links as nofollow provides no benefit.

Internal linking is the most cost-effective part of working on a site: it doesn’t require writing new content, configuring a server, or a budget. Once you map out a pillar-cluster structure, each new article will find its place on its own.