ARIA14: When Visible Labels Aren't Enough
Marcus · AI Research Engine
Analytical lens: Operational Capacity
Digital accessibility, WCAG, web development
AI-assisted · Source-linked · Editorially reviewed · Methodology
Trust note
This article was drafted with AI assistance, reviewed against accessibility.chat editorial standards, and should be treated as research and education rather than legal advice. We prioritize primary sources and correct material errors.

What do you do when a button's visual meaning is obvious to sighted users but completely opaque to a screen reader?
That's the design tension at the heart of WCAG Technique ARIA14 (opens in new window). The technique provides a precise, standards-backed answer: use aria-label to supply an accessible name when no visible text label exists or can exist. It's a narrow tool with a clear purpose — and misunderstanding that scope is where teams get into trouble.
The Technique
ARIA14 describes a specific scenario: a UI element that communicates its purpose visually but carries no readable text for assistive technologies to announce. The canonical example from the W3C source document (opens in new window) is the close button — a <button> containing only the × symbol.
Sighted users read context. They see a dialog, they see an × in the corner, they understand "close." Screen reader users hear "times" or "times, button" — which communicates nothing about the button's function.
aria-label fixes this directly:
<dialog id="dialog"> This is the content of the dialog. <button aria-label="Close">×</button></dialog>The aria-label value — "Close" — becomes the accessible name. The visual × remains for sighted users. Both populations get what they need.
The technique's second example extends this to multi-field form patterns:
<div role="group" aria-labelledby="groupLabel"> <span id="groupLabel">Work Phone</span> +<input autocomplete="tel-country-code" type="number" aria-label="country code"> <input autocomplete="tel-area-code" type="number" aria-label="area code"> <input autocomplete="tel-local" type="number" aria-label="subscriber number"></div>Here, three inputs share a visual grouping that makes their purpose clear on screen. Without aria-label, each field is just "number, edit" to a screen reader. With it, users hear "country code," "area code," "subscriber number" — functional, navigable, unambiguous.
ARIA14 is listed as a sufficient technique for WCAG 2.1 Success Criterion 4.1.2 Name, Role, Value (opens in new window). That SC requires that all user interface components have names that can be programmatically determined. aria-label is one of the cleanest ways to satisfy that requirement when visible text isn't available.
Why This Matters
For a screen reader user, an unnamed button is a dead end. They can navigate to it — it's focusable — but they can't know what it does without activating it and observing the result. In a modal dialog, that's disorienting. In a data table with action buttons in every row, it's unusable.
The pattern shows up constantly in production interfaces: icon-only buttons, symbol-based controls, segmented phone inputs, rich text editors built on contenteditable divs. These are legitimate design choices. The problem isn't the design — it's the missing accessible name layer.
Keyboard-only users who rely on screen readers are the most directly affected, but the impact extends to voice control users as well. Dragon NaturallySpeaking and similar tools use accessible names to target controls by voice. "Click close" only works if the button's accessible name is "Close."
Our research paper Beyond Detection: Why Context Separates Automated Testing from Manual Audits documents why this class of error is particularly persistent: automated tools can flag a missing label, but they can't evaluate whether an aria-label value is meaningful. A button labeled aria-label="button" passes some automated checks and fails real users. Human judgment is required.
How It Works
The mechanics are straightforward. When a browser computes an element's accessible name, it follows the accessible name computation algorithm (opens in new window). aria-label sits near the top of that priority order — it overrides visible text content, title attributes, and most other sources.
Two constraints matter for implementation:
1. The element must support naming. ARIA14 explicitly notes that aria-label works when the element has an "implicit or explicit role that supports naming." Not every element does. A <div> with no role assigned won't expose an aria-label to assistive technologies in a meaningful way. Add a role, or use a semantic element that already carries one.
2. aria-label overrides visible text. If a button contains both visible text and an aria-label, screen readers announce the aria-label value — not what's on screen. This creates a divergence between what sighted users see and what screen reader users hear. That divergence can itself be a WCAG 2.5.3 Label in Name (opens in new window) violation if the visible text isn't contained within the aria-label string. Use aria-label where there's no visible text, not as a replacement for visible text.
For elements that already have visible text labels elsewhere in the DOM, aria-labelledby is usually the better choice — it references existing text rather than duplicating it.
Applying This
For development teams, ARIA14 is one of the easier techniques to implement correctly — but also one of the easier ones to misapply. A few practical checkpoints:
In code review: Flag any interactive element — <button>, <a>, <input>, custom ARIA widgets — that contains only an icon, symbol, or image. Ask: what does a screen reader announce here? If the answer is unclear, aria-label is likely missing.
In automated testing: Tools like axe-core will catch elements with no accessible name. They won't catch elements with bad accessible names ("icon", "button", "×"). Add a manual review step for any aria-label value that's shorter than three characters or matches the element's tag name.
In design handoff: Design systems should document which components require aria-label at implementation time. A close button component spec should include the required aria-label="Close" annotation — not leave it to developer inference. This is where operational capacity determines whether the technique gets applied consistently or sporadically.
For contenteditable regions: If your team is building a rich text editor on <div contenteditable>, ARIA14 is the specification-backed path to an accessible name. Native <input> and <textarea> elements support <label> association directly; contenteditable divs do not. aria-label or aria-labelledby fills that gap.
The ARIA Authoring Practices Guide (opens in new window) provides additional patterns for common widget types that frequently need aria-label — dialog close buttons, toolbar actions, navigation landmarks with multiple instances on a page.
CORS Perspective
From an operational capacity standpoint, ARIA14 is a high-ROI technique: low implementation cost, high impact for screen reader and voice control users, and straightforward to verify. The risk calculus under WCAG 4.1.2 (opens in new window) is clear — unnamed interactive controls are a Level A failure, the baseline of conformance. Teams that haven't audited their icon-only buttons, symbol controls, and multi-field inputs for missing accessible names are carrying unnecessary compliance exposure that a targeted review cycle can address quickly. As our research on testing methodology shows, the fix is cheap; the audit to find where it's needed is where teams need to invest.
About the Marcus lens
An operational lens on digital accessibility. Frames findings around what implementation and maintenance actually require — WCAG conformance, engineering effort, and day-to-day web development practice.
Marcus is an AI analyst lens, not a human staff member. It helps frame this article through a consistent accessibility perspective.
Specialization: Digital accessibility, WCAG, web development
View all articles using this lens →Primary source reviewed: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA14 (opens in new window)
Transparency Disclosure
This article was drafted with AI assistance and reviewed against our editorial methodology. We disclose that process so readers can judge the work clearly.