Home / Blog / How to Run an Internal Linking Audit

Guide

How to Run an Internal Linking Audit

Most internal linking audits count links and surface orphans. Learn the missing step—ranking them by lost traffic in Google Search Console—so you fix what matters first.

How to Run an Internal Linking Audit

Internal linking audits tell you which pages on your site lack the internal links they need to rank, which links are broken, and which anchor texts waste authority on low-value targets. Most guides count links and surface orphans—pages with zero inbound links. Useful, but incomplete. They miss the critical insight: not all orphans matter equally. A page losing 500 monthly impressions in Google Search Console represents a bigger problem than one losing 2 impressions. Yet many audits rank them by page depth, not traffic bleeding away.

This guide walks you through a 7-step repeatable audit that surfaces orphans, broken links, and anchor quality issues, then ranks them by lost impressions from Google Search Console. This way, you fix the page hemorrhaging the most traffic first.

recto's core differentiator is this GSC-impression weighting. Most tools show you orphans exist. recto ranks them by the traffic you could actually recover—turning audit busywork into a prioritized action list.

Begin by generating a complete internal-link map. You need to know which pages link to which, and from where.

Screaming Frog SEO Spider, Semrush Site Audit, Ahrefs Site Audit, OnCrawl, and SE Ranking are all effective crawl tools. For most sites under 50,000 pages, Screaming Frog's free version crawls up to 500 URLs; paid versions handle larger sites. Each tool has strengths—Screaming Frog excels at simplicity, Semrush adds Site Audit data, Ahrefs pulls from its backlink index.

Google's documentation on crawlable links emphasizes that the structure you define during crawl configuration directly affects how search engines discover and traverse your site. A well-configured crawl surfaces every page your users can reach—essential for audit completeness. The crawl mimics Google's own crawler behavior, respecting robots.txt and crawl-delay directives.

What to configure:

  • Crawl your live domain (not staging).
  • Set the crawl depth to 10–20 levels, matching your site structure.
  • Include all HTTP status codes (200, 30x, 40x, 50x) so you catch broken pages and redirects.
  • Extract internal links only; exclude external links for now.

Export the crawl as a CSV with columns like:

AddressTitleInlinksOutlinksStatus Code
example.com/page-aPage A35200
example.com/page-bPage B02200
example.com/page-cPage C10404

The Inlinks column is your starting point. Pages with 0 inlinks are orphans. Pages with 1 inlink are under-linked and vulnerable. Large sites often hide significant opportunity here—one Semrush audit revealed 3,498 orphaned pages on a single site, many silently ranking with low impressions.

Step 2: Find Orphans and Under-Linked Pages

From your crawl data, build a simple list showing URL, inlink count, and status code. Filter for 200 only; 404s and redirects are separate problems. Sort by inlink count ascending. Pages at the top—with 0 or 1 inlinks—are your orphans or under-linked pages.

Per Google's own documentation: "every page you care about should have a link from at least one other page on your site." Pages with zero inlinks violate this rule and risk being missed by crawlers on large, frequently-updated sites. Beyond crawlability, orphans also lose potential authority flow from your site's internal graph—authority that could help them rank higher.

Example:

URLInlinksStatus
/blog/post-10200
/blog/post-20200
/services/feature-x1200
/resources/guide3200

Save this list in your project files for comparison during re-audits—you'll want to see which orphans you've fixed and which new ones appeared. A running record of orphan counts tracked monthly shows whether your linking strategy is working.

HTTP status codes flagged by crawl tools tell the story. Watch for:

  • 404s: Pages returning 404 but appearing in your sitemap or navigation.
  • Redirect chains (3xx): Pages that redirect multiple times waste link equity and crawl budget; replace with 1-hop redirects.
  • 5xx errors: Temporary server errors (500, 502, 503) that block crawling.

Export the list of internal pages pointing to broken destinations:

From PageTo Page (broken)StatusAnchor Text
/blog/home/services/old-tool404"read about old-tool"
/help/faq/docs/feature-retired410"feature guide"

For each broken link, decide: fix the page (if it should exist), remove the link, or point elsewhere. Broken links waste crawl budget and frustrate users—fixing them is a quick win. Redirect chains like /old-page → /redirect-1 → /redirect-2 → /final-page should become /old-page → /final-page; they consume crawl budget without adding value.

Step 4: Audit Anchor Text Quality and Over-Optimization

The clickable link text—your anchor—should describe the target page, include keywords naturally, and vary across links to avoid over-optimization. Pull all anchor texts pointing to important pages (pillar pages, service pages, key resources) from your crawl. Look for:

  • Generic anchors ("click here", "read more", "link"): replace with descriptive text.
  • Over-optimized anchors (all links to /pricing say "affordable pricing SEO tool"): vary them—some say "pricing", others "our plans", "cost", etc.
  • Thin anchors (single-word anchors): add context where it fits naturally.

Example:

TargetAnchor TextsStatus
/pricing"affordable pricing tool", "pricing", "check pricing"Good variety
/blog/orphan-pages-seo"click here", "article", "blog post"Too generic—fix

Descriptive, varied anchors signal topic relevance to search engines and improve user experience. Over-optimized anchors can trigger spam signals if all instances repeat the exact same keyword-stuffed phrase. Natural variation—some anchors mention the topic, some mention the format (guide, checklist, template), and some are generic or brand-focused—is your goal.

Step 5: Cross-Reference With Google Search Console to Rank by Lost Impressions

This is where a basic audit becomes one that actually prioritizes work.

Search Console reveals which pages appear in search results and how many impressions (search result views) they generate. If an orphan page has 500 impressions but zero clicks, it's bleeding search traffic—a link from a relevant page could recover that traffic. A page with 2 impressions is less urgent.

One Semrush analysis found 3,498 orphaned pages on a single site—most low-impact and impossible to fix without prioritization data. Without GSC data, you'd chase hundreds of low-value fixes. With it, you fix the high-impact ones first and see traffic recovery much faster. The difference is dramatic: a ranked action list instead of a backlog.

Extract and match the data:

  1. Go to Google Search Console > Performance > Pages.
  2. Filter for pages with impressions but no clicks or low CTR (pages ranking at positions 10–30).
  3. Download the report (Page, Impressions, Clicks, CTR, Average Position).
  4. Match the URLs in your crawl data to the GSC data via spreadsheet join or script.

Create a new column: Lost Impressions = Impressions for pages with 0–1 inlinks.

URLInlinksGSC ImpressionsLost Impressions?
/blog/seo-tips0450450 (high priority)
/blog/old-post01212 (low priority)
/help/faq1230230 (high priority)

Pages with zero inlinks but non-zero impressions are your biggest wins. They rank in search but visitors can't easily reach them from your own site—a few internal links can help them climb. This is where audit transitions from inventory to strategy. A page with 450 lost impressions might recover 50–150 clicks per month with the right internal link placement—that's real traffic recovery worth pursuing immediately.

Step 6: Build Your Prioritized Fix List

Fold Steps 2–5 into one master list, ranked by impact:

PriorityURLIssueInlinksLost ImpressionsFix
1/blog/seo-tipsOrphan0450Link from /blog/home + /resources/guides
2/help/faqUnder-linked1230Add 2 more links from related pages
3/pricingBroken link from /about20Update link anchor text to "plans & pricing"
4/blog/old-postOrphan012Merge into newer post or add 1 internal link

Tackle rows 1–2 first (high lost impressions), then anchor-text fixes (row 3), then low-impact cleanups (row 4).

This ranking discipline separates busy audits from effective ones. You're solving the issues that move the needle. A strategic link addition to a high-impression orphan can recover hundreds of monthly clicks—far outweighing dozens of generic cleanups on low-traffic pages. Keep this prioritized list somewhere accessible—a shared doc or project management tool—so your team can reference it during content creation and editing.

Step 7: Re-Audit on a Cadence and Track Changes

Internal linking audits are not one-time tasks. Content publication, page deletion, and reorganization all shift your internal-link graph over time. Every new article or deleted page changes what needs linking.

Set a cadence:

  • Quarterly (every 3 months) for active sites (3+ new posts/pages per month).
  • Bi-annually (every 6 months) for slower-moving sites (0–3 new items per month).

Before each re-audit:

  1. Update your crawl data.
  2. Pull fresh GSC impressions.
  3. Check which fixes from the last audit actually landed.
  4. Identify new orphans and broken links.
  5. Adjust priorities based on current GSC data.

Document your fixes in a simple log:

DatePageAction TakenResult (recheck in GSC)
2026-06-15/blog/seo-tipsAdded 2 internal links from related postsTrack impressions + position
2026-06-15/help/faqChanged anchor to a descriptive phraseTrack clicks + CTR

Over time, tracking reveals which link placements move the needle and which don't. A page that climbs from position 25 to position 12 after a single internal link shows that this fix works on your site—replicate that pattern on similar pages. After 2–3 audits, you'll have enough data to predict which fixes yield the best ROI.

Use this checklist to track your audit completeness:

  • [ ] Crawled entire site (all pages, all status codes).
  • [ ] Extracted inlink counts per page.
  • [ ] Identified orphans (0 inlinks) and under-linked pages (1–2 inlinks).
  • [ ] Found broken internal links (404s, redirect chains, 5xx errors).
  • [ ] Reviewed anchor-text quality and over-optimization.
  • [ ] Pulled Google Search Console data (impressions, CTR, position).
  • [ ] Matched GSC data to crawl data.
  • [ ] Ranked fix list by lost impressions.
  • [ ] Assigned anchor candidates to fixes.
  • [ ] Scheduled next audit (3–6 months out).

FAQ

What is an internal linking audit? An internal linking audit is a systematic review of all links within your site. It surfaces orphan pages (zero inbound links), broken links, and low-quality anchors, then prioritizes fixes by impact—usually the traffic loss shown in Google Search Console.

How often should you audit internal links? Quarterly for active sites (3+ new pages/month); bi-annually for slower sites. After a major redesign or migration, run an audit immediately to catch broken links and newly orphaned pages.

How do you find broken internal links? Use a crawl tool like Screaming Frog, Semrush, or Ahrefs. Filter for pages returning 404, 410, or 5xx status codes, then identify which internal pages link to them. Server logs can also reveal 404 requests with valid referring URLs.

What are orphan pages and why do they matter? Orphan pages are pages with zero inbound internal links. They may rank in search but are cut off from internal traffic. If Google Search Console shows they have search impressions, adding internal links can improve their CTR and visibility.

Can you run an internal linking audit for free? Yes. Use Screaming Frog's free version (up to 500 URLs), the free recto audit at audit.rectoapp.com, or Google Search Console's own Performance report. For larger sites, paid crawlers like Semrush or Ahrefs offer free trials.

How does recto help with internal linking audits? In testing on a live WordPress blog, recto crawled 151 pages, surfaced 34 orphans, and inserted a verified internal link into a published post. recto ranks those orphans by Google Search Console impressions—so you fix the pages losing the most traffic first. It shows you the exact paragraph where each link belongs and pushes the link through the WordPress REST API. You approve before any link goes live.


An internal linking audit is only valuable if you act on it. Once you have your prioritized list, use <a href="/blog/internal-linking">internal linking best practices</a> to guide your placement, then verify each link lands correctly before moving to the next fix. Start with the pages losing the most traffic; you'll recover the quickest wins first. For a free audit of your orphan count, visit audit.rectoapp.com.

Sources

  1. every page you care about should have a link from at least one other page on your site — developers.google.com
  2. 3,498 orphaned pages on a single site — semrush.com
  3. In testing on a live WordPress blog, recto crawled 151 pages, surfaced 34 orphans, and inserted a verified internal link into a published post. — rectoapp.com