// guide

Accessible Links: Text, Purpose, and Common Mistakes

Links are the most common interactive element on the web and one of the most frequently broken for accessibility. This guide covers writing link text that makes sense out of context, when a link should be a button instead, warning users about new tabs and downloads, naming icon-only links, and making links visually distinguishable — everything WCAG's link criteria actually ask for.

beginner semantics

// 02 · write descriptive link text

Write Descriptive Link Text

The fix is almost always the same: move the meaningful words into the link. Instead of describing the destination in the sentence and linking a filler phrase, link the words that describe the destination.

Link text: before & after
<!-- Avoid: the link text says nothing on its own -->
<p>To see what we charge, <a href="/pricing">click here</a>.</p>
<p>Our new report is out. <a href="/report">Read more</a>.</p>

<!-- Prefer: the link text describes the destination -->
<p>See <a href="/pricing">our pricing plans</a>.</p>
<p>Read the <a href="/report">2026 accessibility report</a>.</p>

A few practical rules keep link text strong:

  • Front-load the meaning. "2026 accessibility report" beats "report on accessibility for 2026" — screen reader users often skim the first word or two.
  • Keep repeated links consistent. If two links go to the same place, give them the same text. If they go to different places, give them different text — never two "Learn more" links to different pages.
  • Do not paste raw URLs as link text. A screen reader will read the whole thing character by character. Use human words.
When the design demands "Read more" If a card layout really needs a short, repeated call to action, keep the visible "Read more" but extend the accessible name with visually hidden text: Read more<span class="visually-hidden"> about the 2026 report</span>. Sighted users see the tidy button; screen reader users hear the full destination.

// 04 · new tabs, downloads, and destination changes

New Tabs, Downloads, and Destination Changes

A link that behaves unexpectedly — opening a new tab, starting a download, launching an email client — can disorient users who cannot see the whole screen at once. The fix is not to forbid these, but to warn people before they activate the link.

Announcing an unusual destination
<!-- Opens a new tab: say so, and add rel="noopener" -->
<a href="https://example.com" target="_blank" rel="noopener">
  Annual report
  <span class="visually-hidden">(opens in a new tab)</span>
</a>

<!-- Downloads a file: name the type and size -->
<a href="/report.pdf" download>
  Download the 2026 report (PDF, 2.4 MB)
</a>

Prefer opening links in the same tab by default — it keeps the back button working and leaves control with the user. Reserve target="_blank" for the rare case where losing the current page would cost the user work (for example, a help link opened from a half-filled form), and always pair it with a visible or hidden "opens in a new tab" cue. Always include rel="noopener" on external new-tab links for security.

// 06 · making links look like links

Making Links Look Like Links

A link the user cannot see is a link they cannot use. Within a block of text, color alone is not enough to mark a link — WCAG 1.4.1 Use of Color requires a second visual cue, because users with low vision or color blindness may not perceive the color difference. In practice this means an underline on in-text links.

In-text links: color plus a non-color cue
/* In running text, keep the underline — color is not enough on its own */
.prose a {
  color: var(--link);
  text-decoration: underline;
}

/* A visible focus style is non-negotiable — never remove it outright */
a:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}

Navigation menus and buttons-styled-as-links are the exception: because their position and context already signal that they are interactive, they do not need an underline. The rule is specifically about links embedded in prose, where nothing else distinguishes them from surrounding text. And whatever you do, never remove the focus outline without replacing it — keyboard users rely on it to see where they are. See the focus management guide for accessible focus styling.

// 07 · common mistakes

Common Mistakes

  • "Click here" / "Read more" / "Learn more". Vague link text that fails out of context. Move the meaning into the link, or extend it with visually hidden text.
  • Ambiguous duplicate links. Several "Download" or "View" links on one page that go to different places. Each needs distinguishing text.
  • Fake links and fake buttons. <a href="#"> for an on-page action, or <div onclick> for anything. Use the element that matches the behavior.
  • Unannounced new tabs. target="_blank" with no warning. Add an "opens in a new tab" cue and rel="noopener".
  • Unnamed icon links. An icon or image link with no aria-label or alt. Give every link an accessible name.
  • Color-only links in text. No underline, so color-blind and low-vision users cannot spot them. Add a non-color cue.
  • Removed focus outlines. outline: none with no replacement. Keyboard users lose their place. Style focus, do not delete it.
Put it into practice Run these checks as part of a broader pass with the developer checklist, and verify link operability by tabbing through the page — every link should be reachable, clearly focused, and activate with Enter. The keyboard testing guide covers the procedure.

Frequently asked questions

What makes a link accessible?

An accessible link has three things: text that describes its destination even when read out of context, a genuine href so it is focusable and works with the Enter key, and a visible style that distinguishes it from surrounding text without relying on color alone. If a screen reader user pulls up a list of every link on the page, each one should still make sense on its own — that is the bar WCAG 2.4.4 sets.

Why is "click here" bad for accessibility?

Screen reader users often navigate by jumping between links, hearing each link's text in isolation with no surrounding sentence. A page full of "click here", "read more", and "learn more" becomes a meaningless list — the user cannot tell one destination from another. Put the meaningful words in the link: <a href="/pricing">View our pricing</a> instead of For pricing, <a>click here</a>. It reads better for everyone and it is better for SEO too.

Should a link open in a new tab?

Usually no — opening new tabs takes control away from the user and breaks the back button. When you genuinely must (for example, a link inside a form the user should not lose), warn them: add visible text or an icon plus an accessible label like "opens in a new tab", and use rel="noopener". An unannounced new tab is disorienting for screen reader and screen magnifier users, who may not notice the context switched.

When should I use a link versus a button?

Use a link (<a href>) when the action navigates to a new URL or a different place on the page. Use a button (<button>) when the action does something on the current page — submit, open a dialog, toggle, expand. They have different keyboard behavior (Enter for links; Enter and Space for buttons) and screen readers announce them differently, so the choice sets the right expectation. Never fake a button with a link (<a href="#">) or a link with a <div onclick>.

How do I make an icon-only link accessible?

An icon with no text has no accessible name, so screen readers announce nothing useful. Give it a name with an aria-label on the link (<a href="/settings" aria-label="Settings">) or with visually hidden text inside it, and mark the icon itself aria-hidden="true" so it is not read twice. The same applies to image links: the alt text on the image becomes the link's accessible name, so describe the destination, not the picture.