Skip to main content
SEO

Internal Linking Best Practices for Accessible Sites

Build an internal link architecture that passes PageRank, helps users navigate, and meets WCAG link-purpose criteria — all at the same time.

Why Internal Linking Is Both an SEO and Accessibility Issue

Internal links do three jobs simultaneously: they distribute PageRank (link equity) across a site, they help search engines discover and understand the relationship between pages, and they provide navigation pathways for users. For keyboard-only and screen reader users, links are the primary navigation tool — they move from link to link using Tab and navigate the links list in their screen reader. Poor internal linking harms both crawlability and usability.

Descriptive Anchor Text: The Core Requirement

WCAG 2.4.4 (Link Purpose in Context) requires that the purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined context. WCAG 2.4.9 (AAA) requires the purpose to be determinable from the link text alone, without context.

From an SEO perspective, Google uses anchor text as one of the most powerful signals for understanding the topic of the linked page. Generic anchor text like "click here" or "read more" provides zero topical signal. Descriptive anchor text like "WCAG keyboard navigation testing guide" tells Google and users exactly what they will find.

  • Use descriptive, keyword-relevant anchor text that describes the destination.
  • Avoid "click here", "read more", "learn more", "this article", "here" as standalone anchor text.
  • Keep anchor text concise — typically 3–8 words is ideal.
  • Vary anchor text naturally — multiple links to the same page with identical anchor text looks spammy to Google.
<!-- Bad: generic anchor text -->
<p>To learn about keyboard testing, <a href="/guides/keyboard-testing">click here</a>.</p>

<!-- Good: descriptive anchor text -->
<p>Our <a href="/guides/keyboard-testing">keyboard navigation testing guide</a> covers automated and manual techniques.</p>

<!-- Good: link purpose determinable from context -->
<p>Download the <a href="/reports/wcag-audit-2025.pdf">2025 WCAG audit report</a> (PDF, 2.3 MB).</p>

Link Visibility and Focus States

Links must be visually distinguishable from surrounding text (WCAG 1.4.1) and must have a visible focus indicator when focused by keyboard (WCAG 2.4.7, 2.4.11 in WCAG 2.2). The default browser underline for links satisfies 1.4.1, but many design systems remove underlines and rely on color alone — which fails for color-blind users.

Best practice: keep underlines on body text links, or use a combination of color + weight + border-bottom. Ensure the focus ring is visible in both light and dark modes with sufficient contrast (3:1 against adjacent colors per WCAG 2.4.11).

/* Accessible link styles */
a {
  color: #0057b7;
  text-decoration: underline;
  text-underline-offset: 3px;
}

a:hover {
  text-decoration-thickness: 2px;
}

a:focus-visible {
  outline: 3px solid #0057b7;
  outline-offset: 2px;
  border-radius: 2px;
}

Skip Links and Navigation Landmarks

A "skip to main content" link at the top of every page is an accessibility requirement (WCAG 2.4.1) and an indirect SEO benefit — it signals to search engines where the primary content begins. This link is typically visually hidden but becomes visible on keyboard focus.

<a href="#main-content" class="skip-link">Skip to main content</a>

<!-- In CSS -->
.skip-link {
  position: absolute;
  top: -100%;
  left: 1rem;
  background: #000;
  color: #fff;
  padding: 0.5rem 1rem;
  z-index: 9999;
  border-radius: 0 0 4px 4px;
}

.skip-link:focus {
  top: 0;
}

Breadcrumbs: Navigation, SEO, and Accessibility

Breadcrumb navigation benefits all three dimensions: it gives users a clear path back through the site hierarchy, it generates BreadcrumbList rich results in Google Search that improve click-through rate, and it provides screen reader users with orientation within the site structure. Implement breadcrumbs with an <nav aria-label="Breadcrumb"> wrapper, an <ol> list, and BreadcrumbList schema.

<nav aria-label="Breadcrumb">
  <ol>
    <li><a href="/">Home</a></li>
    <li><a href="/guides/">Guides</a></li>
    <li><a href="/guides/seo/">SEO Guides</a></li>
    <li aria-current="page">Internal Linking Best Practices</li>
  </ol>
</nav>

<!-- JSON-LD BreadcrumbList -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/"},
    {"@type": "ListItem", "position": 2, "name": "Guides", "item": "https://example.com/guides/"},
    {"@type": "ListItem", "position": 3, "name": "SEO Guides", "item": "https://example.com/guides/seo/"},
    {"@type": "ListItem", "position": 4, "name": "Internal Linking Best Practices"}
  ]
}
</script>

Link Depth and Crawl Budget

Pages more than 3–4 clicks from the homepage receive less crawl attention and accumulate less PageRank. For large knowledge bases or guide libraries, ensure that your most important guides are reachable within 2–3 clicks through a combination of: homepage featured guides, category landing pages, related guides sections within content, and XML sitemaps.

  • Create category index pages that link to all guides in that category.
  • Add "Related guides" sections at the bottom of every guide page.
  • Link to foundational guides from multiple places across the site.
  • Keep navigation hierarchies shallow — aim for max 3 levels deep.

Opening Links in New Tabs

Avoid opening internal links in new tabs (target="_blank"). It breaks the browser's back-button navigation, disorients users — particularly those with cognitive disabilities — and removes the page context. If you must open a link in a new tab (e.g., external resources), provide a clear warning in the link text or via an icon with alt text: "opens in a new tab".

<!-- Acceptable: external link opening in new tab with warning -->
<a href="https://webaim.org/techniques/links/" target="_blank" rel="noopener noreferrer">
  WebAIM: Links and Hypertext
  <svg aria-label="(opens in new tab)" role="img" ...></svg>
</a>

Resources