Technical SEO / site architecture

Internal Linking Audit for Small Sites: Depth, Anchors, Routing

Map how readers and crawlers move through the site, then repair weak paths without turning raw link counts into a vanity score.

An operations planner reviewing a routing board with a simple internal link graph and three flagged route problems

Direct answer: audit internal links by exporting the site's important pages and every crawlable link between them, assigning each page a job, and then reviewing reachability, crawl depth, link direction, anchor text, link position, and destination health. Prioritize important pages with no contextual inlinks, useful pages reached only through weak routes, dead ends, links to redirects or errors, and missing paths from information or proof to the right commercial next step. Re-crawl after the edits. Do not turn the total number of links into a universal score.

This guide owns the sitewide distribution problem across pages that already exist. The focused orphan-page workflow covers the narrower job of finding URLs with no useful path from the main graph and deciding whether they should be reconnected, merged, excluded, or removed.

What an internal linking audit measures

SignalUseful questionImportant limitation
ReachabilityCan a crawler and reader reach the page through normal links?A sitemap or known URL can expose a page without repairing the internal route.
Crawl depthHow many followed links separate the chosen start page from this URL?The number depends on crawl start, scope, rendering, and how the tool counts redirects.
Unique inlinksHow many distinct pages link to the target?Sitewide navigation can inflate counts without adding much contextual guidance.
Link directionDoes the route move a reader to the next useful task, proof item, or buying step?More reciprocal links are not automatically better.
Anchor and contextCan someone understand the destination before following?Exact-match repetition is not a substitute for clear language.
Destination healthDoes the link resolve directly to the intended canonical page?A redirect can work while still hiding stale URLs and distorting tool depth.

There is no single healthy number for every page. A privacy page can be useful with only sitewide footer access. A core service page may need several contextual routes from guides and proof. A deep specialist article may be appropriate when its parent hub and related tasks make the route clear.

1. Define the scope and page jobs

Start with one preferred URL inventory. Include canonical, indexable HTML pages that users can reach, plus any redirecting, error, non-indexable, or duplicate destinations currently receiving internal links. Exclude assets, tracking URLs, logout routes, staging hosts, and parameter combinations that are outside the public site job.

Assign each important page one primary role:

This role map prevents a common audit mistake: treating every low-link page as broken. Importance comes from the page's job and current business model, not from its URL type or publication date alone.

2. Crawl the real navigation graph

Run a control crawl from the homepage or the true root of the section. Do not seed the first crawl with the sitemap, Search Console, analytics, or a saved URL list. Imported URLs are useful later, but they can make a disconnected page look reachable.

Google says it can generally crawl an internal link when it is an <a> element with an href, and it recommends placing descriptive anchor text inside the link. If important routes rely on JavaScript, compare raw and rendered HTML and use URL Inspection for a representative page.

Export at least these fields:

Record the crawl configuration. Start URL, subdomain rules, rendering mode, robots handling, canonicals, and redirect counting can change the output. A number without that context is not a stable baseline.

Keep one row per source-to-target relationship that needs review. The worksheet should preserve the observed route, the page roles, the issue, the decision, and the validation date. This makes a second review possible and stops a bulk link count from becoming the deliverable.

Audit date:
Start URL and crawl scope:
Rendering mode:
Included page roles:
Excluded URL classes:
Priority pages:

Source URL:
Target URL:
Source role:
Target role:
Link position:
Anchor text:
Target status / indexability / canonical:
Observed issue:
Decision: ADD / KEEP / REWRITE / MOVE / REMOVE / UPDATE TARGET / REVIEW PAGE
Owner:
Validation date:

4. Separate orphan, underlinked, deep, and dead-end pages

StateOperational testLikely next decision
Orphan candidateFound in an independent inventory but absent from the control crawlVerify scope, then reconnect, merge, exclude, or remove
UnderlinkedReachable, but important to the business and supported only by weak or template routesAdd a small number of relevant contextual inlinks
DeepRequires an unexpectedly long path from the chosen start page for its roleShorten the route from a real hub or relevant source
Dead endAnswers the current question but offers no useful onward route beyond generic navigationAdd the next task, evidence, support, or commercial path
OverlinkedReceives many repetitive or irrelevant routes that do not match reader needRemove noise and keep the most useful paths

Do not apply a universal “three clicks from the homepage” rule. Use depth as a review trigger. A critical service, category, or policy page should be easy to reach for its users. A narrow supporting article can sit deeper when its parent and sibling routes are clear.

If a candidate is missing from the crawl entirely, stop this broad audit and use the orphan-page comparison workflow. It brings in sitemap, Search Console, analytics, logs, and CMS inventories without confusing discovery with a healthy internal route.

Review whether each page sends a reader to the next reasonable decision. A small site usually needs several deliberate directions:

FromToReader reason
Hub or broad guideSpecific task pageMove from orientation into implementation
Task guideRelated taskContinue diagnosis, implementation, or validation
Informational guideService or productOffer help when the reader is ready to act
Service or productProof or methodologySupport a buying claim with inspectable evidence
Proof pageRelevant serviceConnect the demonstrated result to the available offer
Support or policyRelevant action pageResolve a trust question and return the user to the task

The topic-cluster planning guide defines page jobs before publication. This audit checks whether those intended routes exist on the live site. Do not force a service link into every article. Add it only where the next step is honest and useful.

Google recommends anchor text that is descriptive, reasonably concise, and relevant to both the source and destination. W3C guidance also requires that a link's purpose can be understood from the link text or its programmatically determined context.

Inspect placement as well as wording. One contextual link inside a relevant explanation can serve a different reader need from the same target repeated across every navigation or footer template.

7. Fix broken, redirecting, and conflicting destinations

Filter the internal edge export for destinations that return 3xx, 4xx, or 5xx; canonicalize elsewhere; use an unintended hostname or protocol; or point to a fragment whose target element no longer exists. A fragment that jumps to a valid section is not a broken internal link. Treat fragments as a separate architecture problem when the site uses them to load a different primary content state; Google advises against using fragments to change page content. Also inspect links present on desktop but missing from the mobile version.

A redirecting internal link is not the same as a broken link, but it can preserve stale URLs, add latency, and change a crawler's reported depth. Update the source to the final canonical destination when that destination is known and appropriate. Do not bulk-replace a redirect until you confirm that path and query behavior remain correct.

If two live pages blur the same job, do not try to solve the conflict by adding more links to both. Use the Search Console cannibalization workflow to decide whether they should stay separate, merge, redirect, or be repositioned.

8. Prioritize a small repair batch

Rank fixes by page importance, route weakness, relevance of the proposed source, user benefit, and edit risk. A short reviewable batch is safer than adding links sitewide from a script.

PatternDecisionReason
Important page has no relevant contextual inlinkAdd one or two links from pages that naturally lead to itRepairs both discovery and reader movement
Page has many template links but no useful contextAdd a relevant body link, not another sitewide repetitionClarifies why the destination matters here
Low-value page is a merge or removal candidateDecide the page firstMore links can preserve unnecessary content debt
Link points through a known redirectUpdate to the final URL after validating behaviorRemoves stale routing and an avoidable hop
Page links to every service regardless of topicRemove irrelevant routesReduces choice noise and misleading next steps
Useful page ends without a next actionAdd the next task, proof item, or support routeRepairs a real dead end

Do not describe this as PageRank sculpting. The practical objective is a logical, crawlable structure that lets people understand where they are, what the destination does, and what action makes sense next.

9. Validate the new routes

  1. Re-run the crawl with the same start point, scope, and rendering settings.
  2. Confirm the intended source-to-target edges now exist in rendered HTML.
  3. Click the routes manually on desktop and mobile, including navigation that changes at breakpoints.
  4. Verify that targets resolve directly, remain indexable where intended, and declare the expected canonical.
  5. Compare depth, unique contextual inlinks, dead ends, and broken destinations against the baseline.
  6. Record the implementation and validation dates in the worksheet.

Use the Search Console Links report as corroboration, not as a complete crawl export. Google says the report groups pages by canonical URL, combines duplicates, limits tables, and shows a sample rather than every link. A missing row therefore does not prove that an internal link is absent.

Ranking or traffic changes can take time and can have other causes. Validate the graph first. Then compare equivalent Search Console periods for the affected pages and queries without claiming that one link edit caused every movement.

What not to do

Internal linking audit checklist

Evidence basis

Link behavior, reporting limits, and accessibility guidance were checked on August 31, 2026. The page-role map, routing matrix, review worksheet, and repair-priority method are FloxoLab audit frameworks.

Need the link graph turned into a repair list?

FloxoLab can crawl the site, separate real routing gaps from harmless low counts, and map a small batch of changes that readers and a second reviewer can verify.

Explore the SEO audit