Screen reader users frequently navigate pages by cycling through links alone, hearing each link text in isolation without surrounding paragraph context. When links read "Click here", "Read more", or "Download" repeatedly, users cannot distinguish between them or understand where each leads. WCAG 2.2 SC 2.4.4 (Level A) requires link purpose to be determinable from the link text or its programmatic context; SC 2.4.9 (Level AA) tightens this to link text alone. Section 508 2018 Refresh 502.3.7 requires textual information to be available to AT. Generic link text also harms SEO, compounding both accessibility and discovery failures.
Medium because non-descriptive link text impairs screen reader navigation and SEO but does not prevent users from accessing the linked content after identifying it through surrounding context.
Replace every instance of generic link text with text that describes the destination or action. In blog listing components and card components, update the link text directly:
{/* Before */}
<a href={post.slug}>Read more</a>
{/* After */}
<a href={post.slug}>Read more about {post.title}</a>
For icon-only links, add aria-label:
<a href="/contact" aria-label="Contact support">
<EnvelopeIcon aria-hidden="true" />
</a>
For PDF downloads and external files, describe the destination and file type:
<a href="/files/q3-report.pdf">
Download Q3 2024 Financial Report (PDF, 1.8 MB)
</a>
Audit by searching src/ for >read more<, >click here<, >learn more<, and >download< in isolation.
gov-section-508.keyboard-assistive.link-textmedium<a> tags and <Link> components. Examine the link text (the visible text between opening and closing tags). Look for generic text like "click here", "read more", "link", "learn more" without surrounding context. Links should be understandable to screen reader users who navigate by reading only the link text."12 'Read More' links appear on the blog listing page with no context about which post they link to. Links to PDFs use just 'Download' instead of 'Download Q3 2024 Financial Report.' Footer links include one that says 'here' in the sentence 'Details are available here.'"// Poor
<a href="/blog/post-1">Read more</a>
// Good
<a href="/blog/post-1">Read more about our Q4 roadmap</a>
// Good with aria-label for icon links
<a href="/contact" aria-label="Contact support">
<ContactIcon />
</a>