founders doing SEO

How to Run an Internal Linking Audit With a Spreadsheet That Tells You Exactly What to Fix

Most internal linking advice stops at "add more links." A structured audit finds the pages Google can't see, can't reach, or can't understand, then fixes them in the order that actually moves rankings.

Links Decide What Matters
On this page

"Add internal links when you publish" is the advice everyone gives, and it is almost useless. Links added at random, with whatever anchor text came to mind, are how most sites end up hiding their best pages. An internal linking audit is the opposite of that habit: a structured inventory of every link on your site, run against a short list of failure modes, producing a prioritized fix list instead of a vague intention to link more.

I've run this process across the dozens of brands I've done growth for, and the same three problems show up nearly every time. Money pages with zero incoming links. Pages buried four or five clicks deep that Google treats as unimportant. Anchor text so generic the links pass almost no topical signal. None of these are visible from inside your CMS, and all of them surface in about two hours with free tools.

The whole job takes two to four hours for a site under 500 pages, and you end with a spreadsheet that flags exactly what to fix first.

What an internal linking audit actually is (and what it is not)

An internal linking audit is a structured inventory of every internal link on your site, used to find pages with no incoming links, pages buried too deep for crawlers to treat as important, and anchor text that wastes the links you already have. It is not a plugin scan that counts links per page, and it is not the habit of dropping a few related-post links when you hit publish.

The distinction matters because the audit is diagnostic, not additive. You are not trying to increase your link count. You are trying to find where your existing structure fails, then fix those specific failures in an order that reflects business value. A site with 300 pages and 2,000 internal links can still have its five most important pages effectively invisible.

One expectation to set honestly: this will not fix thin content, weak backlinks, or a site nobody wants to cite. Internal links decide which of your pages search engines treat as important among the pages you have. They cannot make an unimportant page important. What they can do is stop your genuinely good pages from being ignored because of plumbing.

Internal Linking Audit: 4-Step Flow Diagram A four-step audit flow: export link data from Google Search Console and a crawler, build a spreadsheet with flag formulas, score pages with a priority matrix, then fix issues in order — orphans first, then click depth, then anchor text. Includes a mockup spreadsheet showing flag columns. Internal Linking Audit: The 4-Step Flow From raw link data to a prioritized fix list — driven by one spreadsheet 1 · Export Link Data • GSC: Links → Top linked pages • Crawl: Screaming Frog / Sitebulb • Export inlinks, outlinks, anchors Output: links.csv + pages.csv 2 · Build the Spreadsheet • One row per URL • Flag formulas, e.g.: =IF(Inlinks=0,"ORPHAN","") Output: every URL auto-flagged 3 · Score by Priority • Matrix: Traffic value × Severity • High traffic + orphan = P1 • Low traffic + weak anchor = P3 Output: P1 / P2 / P3 per URL 4 · Fix in Order 1. Orphans → add inlinks from hubs 2. Depth → pull key pages ≤3 clicks 3. Anchors → descriptive, not "click here" Output: re-crawl to verify fixes Re-crawl quarterly to confirm fixes and catch new orphans Example: The Flag Columns Do the Thinking For You URL Inlinks Depth Traffic/mo Orphan? Deep? Weak Anchor? Priority /blog/keyword-research-template 0 2 1,400 ORPHAN P1 /blog/case-study-saas-seo 3 5 620 DEEP P2 /services/technical-seo 11 2 890 "click here" ×6 P2 /blog/internal-linking-guide 47 1 2,300 P3 /blog/old-news-update-2019 0 4 12 ORPHAN DEEP P3 Flag formulas: Orphan =IF(Inlinks=0,"ORPHAN","") · Deep =IF(Depth>3,"DEEP","") · Priority =IFS(AND(Orphan,Traffic>500),"P1", …) Fix order: P1 orphans firstP2 depth & anchorsP3 cleanup / prune

The three problems an audit is really hunting for

Every internal linking audit, whatever tool runs it, is hunting for the same three failure modes: orphan pages, deep pages, and anchor chaos. Each one suppresses rankings through a different mechanism, which is why "add more links" fixes none of them reliably.

Orphan pages are URLs with zero incoming internal links. They exist in your sitemap and maybe in Google's index, but they are disconnected from your site's link graph. Google's documentation on making links crawlable is blunt about the mechanism: Google can only follow a link if it is an HTML <a> element with an href attribute, and pages with no such links pointing at them may never be discovered at all. An orphaned page is not just under-linked. Depending on how it was found, it may be functionally invisible.

Deep pages are a quieter problem. A page reachable only after four or five clicks from the homepage sends a signal about its importance, and that signal is "not very." Crawl depth and unique inlink count are the two quantitative measures Screaming Frog's own internal linking audit tutorial uses to identify weak pages, because they predict how much link equity a page receives and how often it gets crawled. Google has also said plainly, in its crawl budget guidance, that low-value URLs can slow how quickly the good pages get revisited.

Anchor chaos is the one nobody notices. Google's guidance calls text links the safest bet for crawlability, and the anchor text itself is part of how Google understands the target page. When your pricing page is linked fifteen times as "click here," "this page," and "read more," you have spent fifteen links saying nothing. When the same page is linked with fifteen different anchors, none of them descriptive, Google gets fifteen conflicting hints about what the page is about.

You need two datasets before any analysis can happen: the complete list of pages that should exist on your site, and the list of pages your link structure actually connects. The gap between those two lists is where every orphan page lives.

Start with Google Search Console's Links report. Go to Links in the left sidebar, then under Internal links open "Top linked pages." This shows which pages Google sees receiving the most internal links, and you can export it. It will not give you anchor text or full inlink counts, but it is the view from Google's side, which makes it the right baseline.

Next, crawl the site with Screaming Frog. The free version handles up to 500 URLs, which covers most founder-run sites. Keep the configuration at default, meaning a normal internal-only crawl that follows the links your site actually exposes. This detail matters more than it sounds: if you enable settings that inject URLs from sitemaps or external lists, your crawl no longer reflects your real link graph, and the orphan analysis becomes meaningless. Once the crawl finishes, go to Bulk Export, then Links, then All Inlinks. That export gives you source URL, destination URL, and anchor text for every internal link the crawler found.

Finally, pull your XML sitemap and export your full URL list from your CMS. This is your universe of pages that should exist. The audit is essentially a comparison of this list against what the crawl discovered.

internal linking audit: audit spreadsheet shown as translucent glass cells with three amber warnings connected by threads to a central compass.

Step 2: Build the audit spreadsheet

This is the piece most tutorials skip, and it is the piece that turns a pile of exports into decisions. One row per URL, with columns that flag problems automatically so you are not eyeballing 300 rows looking for trouble.

The columns: URL, page type, internal links in, internal links out, click depth, anchor texts used, GSC impressions, GSC clicks, and status. Page type is a manual label, and it is the most important column in the sheet. Mark each page as money (pricing, product, service, signup), blog, or support. Every priority decision later flows from this label.

The flag formulas are simple. Links-in equals zero flags an orphan. Click depth greater than three flags a buried page. Page type equals money combined with fewer than five inlinks flags a priority fix. In Google Sheets the orphan flag is literally =IF(C2=0,"ORPHAN",""), and the buried flag is =IF(E2>3,"DEEP",""). Nothing fancier is needed.

The anchor text column takes a bit of manual work. From the All Inlinks export, pull the distinct anchors used for each important destination page. You do not need this for every URL, just your money pages and top blog posts. What you are looking for is the share of anchors that are generic: "click here," "read more," "here," "this post." If more than a third of the anchors pointing at an important page say nothing about the page, that is wasted anchor text, and it goes on the fix list.

Step 3: Score and prioritize what to fix first

Fix orphaned money pages first, then orphaned pages that already have impressions in Search Console, then deep money pages, then anchor text cleanup on high-impression pages. That order is not arbitrary. It combines business value, proven demand, and effort, which are the only three variables that matter.

The reasoning is worth understanding rather than just following. An orphaned money page is the highest-value fix on the board because the page already exists, already converts, and is being held back purely by plumbing. An orphaned page with existing GSC impressions is next for a subtler reason: Google is already showing it to searchers despite the page having no internal links, which means there is proven demand and the page is winning on content alone. Adding internal links to a page with demonstrated demand is as close to a guaranteed win as SEO offers.

Deep money pages come third because the fix is structural rather than additive. Getting a page from four clicks deep to two usually means linking it from a hub page or your main navigation, which is a bigger decision than dropping a link into a paragraph. Anchor cleanup comes last because it is refinement, not rescue. It improves pages that are already linked and already indexed.

One thing to resist: the urge to fix everything in one sprint. Add three to five new internal links per priority page, from relevant and reasonably authoritative pages, rather than scattering thirty links across the site in a weekend. A burst of hundreds of new links with thin anchors looks like what it is.

Step 4: Fix patterns that work (and the ones that backfire)

The fixes that work share one property: they put a descriptive, contextual link in front of a reader who would plausibly want it. The fixes that backfire share the opposite: they add links for the crawler's benefit, in places no reader would ever click.

For orphaned and under-linked pages, the fix is contextual links from your strongest relevant pages. Open the posts that already get impressions and links, find the sentences where the orphaned page is the natural next read, and link it with anchor text that describes what the page is about. If the page is about pricing, the anchor says something about pricing. This is also where hub pages earn their keep: if you have ten posts on a topic and no page that ties them together, building that hub and linking the cluster through it fixes depth and orphans in one move. If you have been refreshing old blog posts, the refresh pass is the natural moment to add these links, since you are already deciding which pages relate to each other.

While you are in there, prune the links that leak equity. Links pointing to redirected URLs, noindexed pages, or 404s spend crawl budget and link equity on destinations that go nowhere. Point them at the live canonical page instead.

The backfire patterns deserve equal attention:

  • Footer and sidebar blocks stuffed with keyword links to every money page. Google has been discounting boilerplate link blocks for years, and a site-wide footer with forty exact-match anchors reads as manipulation.
  • Automated interlinking plugins that insert links by keyword match. They create links that are technically present and contextually wrong, which is worse than no link because it adds noise to your anchor profile.
  • Exact-match anchor stuffing. If every link to your pricing page says "best pricing software," you have built a pattern, and patterns are what algorithms are good at spotting.

Re-audit quarterly if you publish actively, or after every 20 to 30 new posts if your cadence is irregular. Between audits, a five-minute monthly glance at Search Console's internal links report catches new orphans before they settle in. Internal link structure decays quietly: every new post is a page that might link nothing and be linked by nothing, so the drift is constant even when nothing is "wrong."

There is also a newer reason to keep this tight. The same crawlability and clear page hierarchy that decide how Google treats your pages determine whether AI assistants can find and quote your best answers. ChatGPT, Perplexity, and Google's AI Overviews all rely on being able to reach a page and understand what it is about, which is exactly what inlinks, depth, and anchor text communicate. If you are starting to optimize your site for ChatGPT search or thinking about helping AI crawlers understand your site, the internal link audit is the foundation those efforts sit on. Working on this problem across the brands I run growth for, the pattern that keeps repeating is that pages AI assistants cite are almost never deep or poorly linked; they are the pages the site structure already treats as important.

If you want to see where you stand on that side of things, AnswerRank's free GPT SEO Checker runs your site against the same readiness and sourcing signals and shows you what an AI engine can actually reach.

An internal linking audit is a two-to-four-hour process that turns "add more links" into a specific, ordered list: orphaned money pages first, then orphaned pages with impressions, then deep pages, then anchors. The next step is the smallest one in the article: export your Search Console links report and your sitemap today, sort by inlinks ascending, and look at the bottom ten rows. What you find there will tell you whether the rest of this is an afternoon of work or a quarter of it.

Frequently asked questions

How do I find orphaned pages on my website?

Export your full page list from your XML sitemap, then cross-reference it with internal link data from Google Search Console's Links report or a Screaming Frog crawl. Any URL with zero internal links pointing to it is orphaned. These pages are invisible to crawlers navigating your site and almost always underperform in search.

How do I do an internal linking audit?

Start by pulling your complete internal link data using Google Search Console's Links report and a Screaming Frog crawl. Build a spreadsheet with columns for URL, internal links in, internal links out, click depth, and anchor text. Flag orphaned pages, pages deeper than three clicks, and money pages with fewer than five inlinks. Fix in priority order: orphaned money pages first, then orphaned pages with existing impressions, then deep money pages, then anchor cleanup.

What tool can I use to see all my internal links?

Google Search Console's Links report shows your top linked pages internally for free. Screaming Frog's free version crawls up to 500 URLs and exports a complete 'All Inlinks' report showing every internal link and anchor text. For larger sites, Ahrefs Site Audit or Sitebulb provide full internal link analysis with visualizations.

How many internal links should a page have?

There's no universal number, but money pages should have at least five internal links pointing to them from relevant contexts. Pages with zero incoming links are orphaned and effectively invisible. Pages buried four or more clicks from the homepage are treated as unimportant by crawlers. Focus on whether your most valuable pages are reachable and well-linked, not hitting an arbitrary count.

Does internal linking help SEO?

Yes. Internal links help Google discover pages, understand site hierarchy, and distribute link equity to your most important content. Pages with more internal links are crawled more frequently and treated as more important. Descriptive anchor text helps search engines understand what the linked page is about. Poor internal linking hides your best pages and wastes the authority your site has already earned.

See if AI recommends your brand

AnswerRank shows whether ChatGPT, Perplexity and Google's AI name you, who they pick instead, and what to fix.

Start your free trial