Every button, link, and form field has an accessible name — the short
text that assistive technology announces when the control receives focus. When that
name is missing, vague, or out of sync with the visible label, people who navigate by
screen reader or by voice can’t tell what a control does. Voice-control users in
particular say a button’s visible words to click it, so a mismatched name leaves the
control unreachable. Getting the accessible name right is one of the highest-leverage
accessibility fixes you can make.
What you’ll learn
How to give an icon-only button a name, why “click here” link
text fails users who navigate by links, and how to keep a control’s visible label
and its accessible name in agreement so voice control still works.
Standards this lesson maps to
Standard
Criterion
Level
What it requires
WCAG 2.2
4.1.2 Name, Role, Value
A
Every interactive control exposes a name and role to assistive technology.
WCAG 2.2
2.4.4 Link Purpose (In Context)
A
The purpose of each link can be determined from its text or context.
WCAG 2.2
2.4.9 Link Purpose (Link Only)
AAA
The purpose of each link is clear from the link text alone.
WCAG 2.2
2.5.3 Label in Name
A
The accessible name contains the visible label text.
EN 301 549
9.4.1.2 (incorporates WCAG 4.1.2)
—
European harmonised standard; references the WCAG A/AA set.
Section 508
502.3 / 503.4 (incorporates WCAG A & AA)
—
US federal ICT must meet WCAG 2.0 Level A and AA, including name/role/value.
ADA Title II
WCAG 2.1 AA (DOJ rule)
AA
US state/local government web content must conform to WCAG 2.1 AA.
EAA
EN 301 549 → WCAG A & AA
AA
European Accessibility Act relies on EN 301 549, which references WCAG.
The three problems we’ll fix
The cards below each isolate one common naming defect. For every issue you get a
plain-language statement of the problem, a Bad example (shown as
escaped, non-running code so it can’t harm this page), a Good example,
the copyable Code, and an ordered fix.
Icon-only button with no name
WCAG 2.2 · 4.1.2AEN 301 549Section 508
A button whose only content is an icon or an SVG has
no text for assistive technology to announce. A screen reader reads it as just
“button”, and a voice-control user has no word to speak to activate it. The control
is visible but effectively nameless.
Bad
The button holds only an SVG. Nothing names it, so it is announced as a bare
“button”.
Add a real text label inside the button in a visually-hidden
span, or set aria-label on the button.
Mark the icon as decorative with aria-hidden="true" and
focusable="false" so it isn’t announced or focused.
Make the name match what a sighted user would call the control, so
voice-control commands work.
Verify with a screen reader or the browser’s accessibility tree that the
button is announced as “Open menu, button”.
Link text that says only “click here”
WCAG 2.2 · 2.4.4A2.4.9AAAEN 301 549
Screen reader users often pull up a list of every link
on the page to navigate. A list full of “click here”, “read more”, and “learn
more” is useless out of context — none of the entries say where they go. Link text
should describe its destination on its own.
Bad
Out of context this link reads as “click here” and nothing more.
bad-click-here.html
<p>
To download the report,
<a href="/report.pdf">click here</a>.
</p>
Good
The link text itself names the destination, so it makes sense in a links
list. This live link is named “Download the 2026 accessibility report (PDF)”.
If the design demands short visible text, extend the name with a
visually-hidden span so the full purpose still reaches assistive
technology.
visually-hidden-link.html
<a href="/report.pdf">
Read more
<span class="visually-hidden">
about the 2026 accessibility report
</span>
</a>
How to fix
Rewrite the link so its visible text describes the destination on its
own — name the page, document, or action.
Avoid generic phrases like “click here”, “read more”, and “learn more” as
the whole link.
When visible text must stay short, append context in a
visually-hidden span inside the link.
If a file type or size matters, include it in the text, e.g. “(PDF)”.
Visible label doesn’t match the accessible name
WCAG 2.2 · 2.5.3AEN 301 549ADA Title II
When a control’s visible text is “Search” but its
aria-label is “Submit query”, voice-control users who say “click
Search” get nothing — the spoken words aren’t in the accessible name. Label in
Name requires the accessible name to contain the visible label text, ideally at the
start.
Bad
The visible word is “Search” but aria-label overrides the name to
“Submit query”, which no longer contains “Search”.