# How to Check Internal Links: A Step-by-Step Audit Method

> To check internal links, list the pages that matter, verify that each one receives at least one crawlable link from another page, then review the anchors, rel attributes and click depth of those links. Google states it plainly: every page you care about should have a link from at least one other page on your site. Fix orphans first, then vague anchors and internal nofollow, then link from the pages that already perform.

Source: https://tonaily.com/guides/check-internal-links/
Last updated: 2026-11-06
Checked against sources on: 2026-11-06

## What does it mean to check internal links?

Checking internal links means verifying that every page you want found receives links from your other pages, and that those links are crawlable, clearly worded and not neutralized by a `nofollow`. In practice: a list of pages, a count of links per page, and a review of anchors.

An accountant publishes a well-researched article on VAT for freelancers. Six months later, it has almost no impressions. The article is in the sitemap, but nothing on the site links to it: not the blog home, which only shows the last ten posts, not the related service page, not the other articles on VAT. For a visitor, it does not exist. For Google, it is a page that the rest of the site never mentions.

That is the most common internal linking problem, and the easiest to fix once you see it. The [internal linking](/academy/glossary/internal-linking/) entry in our glossary covers the concept; this guide is the audit method.

## Why do internal links matter for Google?

Because links are the main way Google discovers pages and understands what they are about. Its documentation describes the discovery side directly: "Other pages are discovered when Google extracts a link from a known page to a new page." The SEO Starter Guide adds that "Google primarily finds pages through links from other pages it already crawled."

Links also carry meaning. The anchor, the visible text of the link, "tells users and Google something about the page you're linking to," according to the same guide. A link written "VAT thresholds for freelancers" says much more about its destination than "read more."

And Google sets a minimum that serves as the backbone of any audit:

```quote source="Google Search Central, Link best practices for Google" href="https://developers.google.com/search/docs/crawling-indexing/links-crawlable"
Every page you care about should have a link from at least one other page on your site. Think about what other resources on your site could help your readers understand a given page on your site, and link to those pages in context.
```

What Google does not publish is a formula: no ideal number of links per page, no maximum click depth. Its link documentation says it outright: "There's no magical ideal number of links a given page should contain." The rest of this guide sticks to what the documentation says and labels practical rules of thumb as such.

## What are the most common internal linking problems?

Five problems account for most of what an audit turns up. Each one has a clear symptom and a clear fix.

| Problem | Symptom | Fix |
|---|---|---|
| Orphan page | No other page on the site links to it | Link to it from at least one related page |
| Uncrawlable link | Link built in JavaScript without an `<a href>`, or a button | Use a real `<a>` element with an `href` |
| Vague or empty anchor | "Click here", "read more", a bare URL, an image with no `alt` | Describe the destination in a few words |
| Internal nofollow | `rel="nofollow"` on a link to your own page | Remove it |
| Page buried too deep | Reachable only after many clicks or through pagination | Link to it from a hub page or a strong page |

**Uncrawlable links** deserve a word, because they are invisible to the eye. Google's link documentation is explicit: "Generally, Google can only crawl your link if it's an `<a>` HTML element (also known as anchor element) with an `href` attribute." A menu that opens pages through a JavaScript click handler, with no `href`, may work perfectly for a visitor and give Google nothing to follow.

**Image links** are a special case: for an image used as a link, Google uses the image's `alt` attribute as anchor text. A logo or a thumbnail linking to an article with an empty `alt` is a link with no words.

## How do you audit your internal links, step by step?

Work from the most serious problem to the most cosmetic: first the pages nobody links to, then the quality of existing links, then the structure.

```mermaid
flowchart TD
  A[List the pages that matter] --> B[Count internal links pointing to each one]
  B --> C{Zero links?}
  C -- Yes --> D[Orphan: link to it from a related page]
  C -- No --> E[Review anchors and rel on each page]
  E --> F[Check depth from the home page]
  F --> G[Add links from your strongest pages]
  G --> H[Re-check after each publication]
```

### Step 1: list the pages that matter

Start from what you want to rank, not from what exists. Your XML sitemap is a good raw list: Google describes it as a file that lists the pages you consider important. Remove what does not need traffic (legal notices, thank-you pages, test pages), then mark your priority pages: services, products, pillar articles.

On a small site, a spreadsheet with one row per URL is enough. You will add a column for each check that follows.

### Step 2: find orphan pages

An orphan page is a page that no other page on your site links to. Three ways to find them, from the most to the least complete:

1. **A crawler.** Any site crawler starts from the home page and follows links, like a search engine. Compare the list of URLs it finds with the list from step 1: every page in the sitemap that the crawler never reached is an orphan, or is only reachable through links it cannot follow.
2. **Search Console.** In the Links report, the "Top linked pages" table under internal links shows which of your pages are most linked from within your site, and selecting a URL shows the pages that link to it. Google warns that the report "isn't a comprehensive list of every link on your site" and that tables are limited to 1,000 rows: a page missing from it is a lead to check, not a proof.
3. **By hand, for a few key pages.** Search your site or your CMS for the URL of the page. If no other content contains it, it is an orphan.

The sitemap does not solve the problem. Google can discover a page through it, but its sitemap documentation states the target: "If your site's pages are properly linked, Google can usually discover most of your site." Proper linking, in its words, means that all the pages you deem important can be reached through some form of navigation.

### Step 3: review anchors and rel attributes page by page

Take your priority pages, and those that link to them, and look at each link: where it goes, what it says, and what `rel` it carries. This is exactly what the free [internal links checker](/resources/tools/internal-link-analyzer/) does: paste a page's HTML, and it lists every link with its anchor text, whether it is internal or external, and its `rel`. It flags empty anchors, generic ones ("click here", "read more"), URLs used as anchors, images linked without `alt`, internal links in `nofollow`, and the same anchor pointing to different pages. Everything stays in your browser.

What to look for, according to Google's criteria:

```quote source="Google Search Central, Link best practices for Google" href="https://developers.google.com/search/docs/crawling-indexing/links-crawlable"
Good anchor text is descriptive, reasonably concise, and relevant to the page that it's on and to the page it links to. It provides context for the link, and sets the expectation for your readers.
```

Google suggests a simple test: read only the anchor, out of context, and check whether it is specific enough to make sense by itself. "Our services" fails; "accounting for freelancers" passes. The opposite excess also exists: Google asks you to "resist the urge to cram every keyword that's related to the page that you're linking to," and reminds you that keyword stuffing violates its spam policies. Twenty links all written "best accountant Lyon" read as manipulation, not as description.

**Internal nofollow.** Since March 1, 2020, Google treats `nofollow` as a hint for crawling and indexing, as announced in its [2019 post on evolving nofollow](https://developers.google.com/search/blog/2019/09/evolving-nofollow-new-ways-to-identify). Its documentation reserves the value for links where you would rather Google not associate your site with, or crawl, the linked page, and adds: "For links within your own site, use the robots.txt disallow rule." In other words, `nofollow` is not the tool for your own pages. If a page should not be crawled, block it in robots.txt; if it should be found, remove the `nofollow`. Internal nofollows often come from a theme, a plugin or an old SEO habit: check your templates, not just your articles.

### Step 4: check click depth

Depth is the number of clicks needed to reach a page from the home page. Google does not set a maximum depth, so take this as a rule of thumb: the further a priority page is from the home page and your strong pages, the fewer paths lead to it, for visitors as well as for crawlers.

The classic culprit is pagination. A blog that shows ten posts per page pushes every article a little deeper each time you publish: after a year, your best article from January may only be reachable on page 8 of the archive. Three fixes, in order of effort:

- **Hub pages:** one page per topic that links to all the articles on that topic, linked from the main navigation or the blog home.
- **Contextual links:** each new article links to two or three older articles on the same topic, and you go back to the older ones to link to the new one.
- **Categories that make sense:** the SEO Starter Guide recommends organizing a site in a logical way, because it can help search engines and users understand how your pages relate. Google's own example of discovery is exactly this: a hub page, such as a category page, that links to a new blog post.

### Step 5: link from your strongest pages

Not every page carries the same weight for an audit. The pages that already receive traffic, impressions or external links are the best places to add a link to a page you want to push.

To find them: in Search Console, sort your pages by impressions or clicks in the Performance report, and look at the "Top linked pages" table for external links in the Links report. Then, for each priority page that is struggling, add a contextual link from one or two of those strong pages, in a paragraph where it actually helps the reader. The [heading extractor](/resources/tools/heading-extractor/) is useful here: it shows a page's H1 to H6 outline, so you can spot the section where a link to the target page fits naturally.

A practical example: the accountant from the introduction has a service page, "Accounting for freelancers," which receives most of the site's impressions. One sentence in its VAT section, "the VAT thresholds for freelancers change every year, here is how to check yours," with the words "VAT thresholds for freelancers" as the link, gives the orphan article a link from the strongest page on the site, with an anchor that describes it.

### Step 6: re-check after every publication

Internal linking erodes on its own: new posts push old ones down, pages get deleted, URLs change and leave broken links behind. Re-run the check on new pages when you publish them, and run a full audit at regular intervals.

```tonaily
Kira, Tonaily's writing assistant, **drafts articles with internal links** to the pages already on your site, which keeps new posts from becoming orphans. The SEO score in the editor and your review before publishing are where you check that those links point to the right pages, with the right words.
```

## Internal links audit checklist

Use it page by page for your priority pages, then once a quarter for the whole site.

```checklist title="Internal links audit"
- Each priority page receives at least one link from another page on the site
- No page listed in the sitemap is missing from a crawl that starts at the home page
- Every internal link is an `<a>` element with an `href`, not a script or a button
- No anchor is empty, generic ("click here", "read more") or a bare URL
- Linked images have an `alt` that describes the destination
- Anchors read naturally and are not stuffed with keywords
- No internal link carries `rel="nofollow"`, including in templates and plugins
- Priority pages are reachable in a few clicks from the home page or a hub page
- The pages with the most impressions link to at least one page you want to push
- New articles link to older ones on the same topic, and the reverse
- Links to deleted or moved pages are updated
```

## Which tool should you use to check internal links?

It depends on the scale of the question. To review the links of one page, a page checker is enough. To find orphans across a whole site, you need a crawl compared with your list of pages.

| Need | Tool |
|---|---|
| Review anchors, direction and `rel` of a page's links | The free [internal links checker](/resources/tools/internal-link-analyzer/) |
| Find a page's outline to place a link in the right section | The free [heading extractor](/resources/tools/heading-extractor/) |
| See which pages are most linked internally, and from where | Search Console, Links report (sample, 1,000 rows maximum) |
| Find orphan pages and measure click depth | A site crawler, compared with your sitemap |
| A quick overview of your site's SEO health | The [free site audit](https://app.tonaily.com/tools/check/) |

A good routine for a small site: the crawler or Search Console once a quarter for the structure, and the [internal links checker](/resources/tools/internal-link-analyzer/) on every new or updated page before it goes live.

```tonaily
The [free site audit](https://app.tonaily.com/tools/check/) gives you an overview of your site's SEO health. Once your pages are linked, Tonaily tracks their progress in **Search Console**, so you can see whether the pages you linked from your strong pages start gaining impressions.
```

Internal linking is also what makes content clusters work: a pillar article linked to its satellites, and the satellites linked back to the pillar. If you produce content with AI, the guide [AI content and Google](/guides/ai-content-google/) covers what to review before publishing, and [WordPress blog on autopilot with AI](/guides/wordpress-ai-blog-autopilot/) shows how to keep control of the chain, internal links included.

## FAQ

### How many internal links should a page have?

Google says there is no magical ideal number of links a page should contain. Link where it helps the reader understand the topic or take the next step, and stop when links stop being useful. A page with 300 links in a mega-menu dilutes attention; a 2,000-word guide with zero contextual links wastes an opportunity.

### Is a page in my sitemap but with no internal links a problem?

Google can find it through the sitemap, so it may still be crawled. But the page gets no context from your other pages and no path for visitors. Google's own guidance is that every page you care about should have a link from at least one other page on your site, so treat it as an orphan and link to it.

### Should I use nofollow on internal links?

Almost never. Google's documentation on rel attributes says that for links within your own site, you should use the robots.txt disallow rule if you need to keep Google from crawling a page. A nofollow on an internal link mostly tells Google that you don't vouch for your own page.

### Can I use the exact keyword as anchor text every time?

Google asks for anchor text that is descriptive and natural, and warns against cramming every related keyword into it, since keyword stuffing violates its spam policies. Use the words that describe the destination, with natural variation from one link to the next.

### Does Search Console show my internal links?

Yes, partly. The Links report has a table of your most internally linked pages, and you can select a URL to see which pages link to it. Google notes that it is a sample, not a comprehensive list, and that tables are capped at 1,000 rows, so it is a starting point, not a full audit.


## Sources

- [Link best practices for Google (Google Search Central)](https://developers.google.com/search/docs/crawling-indexing/links-crawlable)
- [Qualify your outbound links to Google (Google Search Central)](https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links)
- [Evolving "nofollow": new ways to identify the nature of links (Google Search Central Blog, September 2019)](https://developers.google.com/search/blog/2019/09/evolving-nofollow-new-ways-to-identify)
- [In-depth guide to how Google Search works (Google Search Central)](https://developers.google.com/search/docs/fundamentals/how-search-works)
- [SEO Starter Guide (Google Search Central)](https://developers.google.com/search/docs/fundamentals/seo-starter-guide)
- [Learn about sitemaps (Google Search Central)](https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview)
- [Links report (Search Console Help)](https://support.google.com/webmasters/answer/9049606)
