Barriers from Links with ARIA 🔗 **Source:** [Barriers from Links with ARIA](https://adrianroselli.com/2026/01/barriers-from-links-with-aria.html) > [!note]+ Document Notes > tags: [accessibility, aria, web-development] > author: Adrian Roselli > source: adrianroselli.com > reference: [https://adrianroselli.com/2026/01/barriers-from-links-with-aria.html] > date created: 2026-01-26 14:00 > > # 🏷️ Title: Barriers from Links with ARIA > <!-- deep-read:sections start --> ## 🧭 Table of Contents - [📝 Summary](#-summary) - [📖 Main Content](#-main-content) - [🗒️ Notes](#️-notes) - [📚 References](#-references) - [🗣️ Paraphrase](#️-paraphrase) - [📰 Newsletter](#-newsletter) - [✅ Action Items](#-action-items) - [🧪 Hypotheses](#-hypotheses) - [📊 Methodology](#-methodology) - [❓ Questions](#-questions) - [🔮 Future Research](#-future-research) - [💡 Implications](#-implications) - [🧠 Learning Styles Assessment](#-learning-styles-assessment) - [📊 Accessibility Assessment](#-accessibility-assessment) - [🌍 DEIB Assessment](#-deib-assessment) - [✅ Logical Validity](#-logical-validity) - [🛡️ DARVO Analysis](#-darvo-analysis) - [🎯 Conclusion](#-conclusion) ### 🔗 References - Include links cited in or relevant to the article. --- ## 📝 Summary - What happened: Adrian Roselli evaluates visually stylized links that rely on `aria-label`, `aria-hidden`, and letter-by-letter spans, prompted by a CSS example from Temani Afif. - Why it matters: Many browser text-to-speech and reader features ignore `aria-label` and respect `aria-hidden`, creating hidden or mislabeled links. - Key stakeholders: Users of browser reader modes and text-to-speech, designers, front-end devs, accessibility specialists. - Risks and tradeoffs: Over-reliance on ARIA can break links for non-screen-reader assistive features and fails some WCAG criteria. - Bottom line: Don’t use `aria-label` on links, don’t use `aria-hidden` inside links, and don’t split link text across multiple elements. --- ## 📖 Main Content - Core argument: The article compares a simple anchor (`<a href>Link</a>`) to a decorative version using `aria-label`, `aria-hidden`, and per-letter spans. Roselli shows that while these patterns can look fancy, they introduce barriers for browser-based assistive features that are not full screen readers. - Context and terms: - ARIA: Attributes that help define accessible names/roles; only some assistive tech actually uses them. - `aria-label`: Overrides the accessible name; can conflict with visible text and WCAG 2.5.3 (Label in Name). - `aria-hidden`: Hides content from the accessibility tree; when used inside links, it can hide the only visible text. - Accessible name: The label exposed to assistive tech; often built from visible text unless overridden. - Evidence from tests: - Letter-by-letter spans do not auto-translate. - Edge “Read Aloud” ignores `aria-label` and does not announce links whose content is `aria-hidden`. - Chrome and Firefox reader modes: - Ignore `aria-label` on links. - Visually hide links whose content is `aria-hidden`. - Firefox also restyles span-split links oddly (white instead of standard link colors). - Safari’s Speech: - Skips large parts of the page once it hits span-split letters. - Uses incorrect link text (Korean labels for English links) and ignores both `aria-label` and span-separated letters. - WCAG context: - Links using only `aria-label` intentionally fail 2.5.3 (Label in Name) in the test, making it easy to spot when `aria-label` is (not) exposed. - Links using `aria-hidden` with no other text intentionally fail 4.1.2 (Name, Role, Value); this helps show where browser features depend on visible text instead of ARIA. - Key uncertainty/nuance: - The tests focus on browser features and not full screen readers or voice control. - Support patterns may change as browsers evolve; the article is a snapshot and an invitation for others to test. --- ### 🗒️ Notes - Prompt: Temani Afif asks whether two link patterns (plain vs. ARIA-decorated, letter-split, and `aria-hidden`) are equivalent “considering all aspects” like accessibility and semantics. - Roselli notes a canned response: `aria-label` auto-translation is inconsistent, but he also wants to examine “something else” — the behavior of non-screen-reader assistive features. - Only some assistive technologies read ARIA attributes: - Screen readers: Primary ARIA consumers. - Voice control: Uses accessible names assembled by browsers. - Many other tools (e.g., browser reader modes and TTS) do not fully process ARIA. - He builds demo pages and investigates: - How browser text-to-speech and reader modes handle: - Links whose visible letters are split across multiple spans. - Links whose text is hidden with `aria-hidden`. - Links whose label is overridden with `aria-label` (using Korean words like “sandwich” and “hammer”). - Observations: - Letter-splitting: - Does not auto-translate in some environments. - Can cause Safari Speech to skip most of the page, then misannounce subsequent links with the wrong text. - `aria-label`: - Ignored by Edge Read Aloud, Chrome reader TTS, and Safari Speech when announcing links. - `aria-hidden`: - Links whose content is `aria-hidden` are skipped or visually hidden in Chrome and Firefox reader modes. - Text-to-speech tends to respect `aria-hidden`, so link text can vanish entirely from the reading stream. - Amelia Bellamy-Royds’s insight: Browser text-to-speech features generally respect `aria-hidden` but ignore `aria-label` and, by extension, the accessible name from the accessibility tree. - Roselli’s three takeaways: - Do not use `aria-label` on links (use visible text instead). - Do not use `aria-hidden` within links (it can hide essential link content). - Do not split the letters of a word across multiple elements (spans) for visual styling. - Testing details: - Uses Korean words as `aria-label` values to quickly detect if label text is exposed. - Intentionally violates: - WCAG 2.5.3 (Label in Name) with differing `aria-label` values. - WCAG 4.1.2 (Name, Role, Value) with `aria-hidden` and no other text. - Encourages others to build variations, test on different systems, and report where patterns break rather than where they work. --- ## 📚 References - Adrian Roselli, “Barriers from Links with ARIA” — https://adrianroselli.com/2026/01/barriers-from-links-with-aria.html - W3C WAI-ARIA Overview — https://www.w3.org/WAI/standards-guidelines/aria/ - WCAG 2.1 / 2.2 Success Criterion 2.5.3 Label in Name — https://www.w3.org/WAI/WCAG21/Understanding/label-in-name - WCAG 2.1 / 2.2 Success Criterion 4.1.2 Name, Role, Value — https://www.w3.org/WAI/WCAG21/Understanding/name-role-value/ --- ## 🗣️ Paraphrase - Paragraph A paraphrase: The article responds to a code example where a simple text link is replaced with an ARIA-labeled version whose characters are split across spans and hidden from accessibility APIs. Roselli argues that although this might look attractive visually, it behaves very differently for assistive technologies. - Paragraph B paraphrase: Roselli’s tests across multiple browsers show that text-to-speech and reader modes often ignore `aria-label` and fully honor `aria-hidden`, causing links to be skipped, mispronounced, or not translated. He concludes that designers should avoid ARIA tricks on links and instead keep link text visible, contiguous, and unhidden. --- ## 📰 Newsletter In this week’s WordPress dev digest, we’re zooming in on a subtle accessibility trap: “fancy” links built with ARIA and span-wrapped letters. Adrian Roselli’s latest article shows how `aria-label`, `aria-hidden`, and per-letter styling can break browser reader modes and text-to-speech. For WordPress builders, that means: theme typography tricks and animated links may silently disappear for users relying on built-in browser reading tools. Practical steps: - Audit your themes and plugins for links that: - Use `aria-label` instead of visible link text. - Wrap each letter of a link in separate spans. - Hide link text with `aria-hidden`. - Prefer simple, visible link text; enhance with CSS, not ARIA hacks. Helpful WordPress resources: - WP Accessibility Handbook: https://make.wordpress.org/accessibility/handbook/ - Theme accessibility guidelines: https://developer.wordpress.org/themes/functionality/accessibility/ - WP Accessibility plugin: https://wordpress.org/plugins/wp-accessibility/ --- ## ✅ Action Items #### DevRel - Clarify guidance in developer docs and talks: discourage `aria-label` on links and `aria-hidden` inside anchor tags; show safer alternatives. - Add accessibility-focused demos and workshops for CSS/JS-heavy link styling. - Update SDKs, starter themes, and code examples to use visible, contiguous link text. - Publish blog posts and videos explaining how browser reader modes differ from screen readers. - Run community surveys to collect real-world issues caused by ARIA on links. - Coordinate with product/docs/QA to align accessibility messaging and bug triage. #### OSPO - Add accessibility coding guidelines for ARIA usage to open source governance docs. - Ensure license-compliance scanning is complemented by accessibility linting where feasible. - Integrate vulnerability intake for accessibility-impacting patterns (e.g., hidden links, mislabeled controls). - Track key components and themes where ARIA misuse is likely; maintain an accurate inventory. - Offer office hours to help maintainers refactor problematic link patterns. - Support upstream accessibility projects and specs through funding or participation. - Include accessibility OKRs and reporting in open source program reviews. #### Community - Maintainers: Host roadmap clinics to prioritize removal of ARIA anti-patterns in links. - Contributors: Curate “good first issues” focused on cleaning up `aria-label` and `aria-hidden` misuse. - Sponsors: Fund audits and refactors of popular themes/plugins with known accessibility debt. - Ecosystem: Practice coordinated disclosure and shared playbooks for large cross-project accessibility issues. #### WordPress - Core: Enforce link accessibility principles in core UI patterns and coding standards. - Core Performance: Evaluate performance impact of complex DOM-heavy link styling and favor simpler patterns. - Core AI: Ensure generated content or code snippets don’t insert harmful ARIA patterns into links. - Core Program Team: Align teams on accessibility acceptance criteria for new components. - Mobile: Verify in-app readers and OS-level TTS announce links correctly; avoid ARIA-only labels. - Playground: Provide labs that demonstrate accessible vs. inaccessible link patterns. - Community: Encourage meetups/WordCamps to feature practical a11y talks based on these findings. - Training: Add lessons showing how ARIA misuse on links affects different assistive tools. - Marketing: Highlight accessibility-safe design as a differentiator for WordPress. - Support: Document common “fancy link” problems and offer step-by-step fixes. - Design: Perform UX audits specifically on link styling and readability. - Documentation: Update DevHub/HelpHub examples to embody correct ARIA practices. - Photos: Ensure link overlays in galleries retain simple, visible text. - TV: Provide captions/transcripts that mention code-level accessibility practices. - Polyglots: Watch for translation issues where visible text and `aria-label` diverge. - Accessibility: Maintain issue heatmaps around links and navigation components. - Meta: Ensure *.org sites don’t showcase problematic link behaviors. - CLI: Provide scaffolds that generate accessible link markup by default. - Hosting: Include basic accessibility checks (e.g., hidden link text) in hosting tools. - Tide: Incorporate ARIA misuse heuristics into quality scoring, with clear remediation guidance. - Openverse: Ensure attribution links remain visible and properly labeled. - Themes: Require accessible link patterns as part of review guidance. - Plugins: Strengthen reviews for ARIA misuse and hidden interactive content. #### The WPCC - Programs: Offer fellowships or stipends for accessibility maintainers focusing on navigation and links. - Projects: Run documentation and refactor sprints centered on accessible link design. - Funding experiments: Pilot grants for plugins that demonstrate exemplary ARIA usage and testing. ### FAIR - Technical independence: Encourage local tools to validate ARIA usage independent of vendor platforms. - Policies and covenants: Publish clear, public commitments about accessibility standards. - Productized governance artifacts: Distribute checklists and scorecards for ARIA practices and link design. --- ## 🧪 Hypotheses - H1: Links that rely solely on `aria-label` for their accessible name will be ignored or misannounced by mainstream browser reader modes and TTS features. - H2: Using `aria-hidden` on all visible link text will cause many browser reader modes to skip the link entirely. - H3: Splitting link text into multiple spans (one letter per span) reduces correct pronunciation and auto-translation rates compared to contiguous text. - H4: Developers overestimate how consistently ARIA attributes are consumed across different assistive technologies. --- ### 📊 Methodology - Study design: - Build a test page with multiple link variants: plain, `aria-label` only, `aria-hidden` content, span-split letters, and combinations. - Test across major browsers (Chrome, Edge, Firefox, Safari) on multiple OSes. - Data sources: - Browser native text-to-speech and reader modes. - Potential supplemental data from full screen readers and voice control tools. - Analyses: - Record whether each tool announces the link, what text it speaks, whether it auto-translates, and how it visually presents the link in reader mode. - Compare error rates and behaviors across patterns and platforms. --- ### ❓ Questions - How many users rely on browser TTS and reader modes versus full screen readers in real-world browsing? - Do mobile platforms (iOS/Android) exhibit the same ARIA behavior in their built-in readers? - Can browser vendors align on a more consistent interpretation of `aria-label` for links? - Which ARIA patterns are safe across most assistive technologies and which should be explicitly discouraged? --- ### 🔮 Future Research - Expanded testing matrix including mobile browsers, e-readers, and OS-level reading tools. - Quantitative studies on how often ARIA-based link tricks are used in popular sites and themes. - Investigating how other ARIA attributes (`aria-describedby`, `aria-labelledby`) fare in browser reader modes. - Examining impacts on non-visual cognitive tools (summarizers, auto-translation, automated note-takers). --- ### 💡 Implications - Practice: Front-end developers should favor simple link markup and avoid ARIA-only labeling or hidden link text. - Policy: Accessibility guidelines and design systems must address browser reader modes, not only screen readers. - Security: Hidden or misannounced links can be exploited for dark patterns or phishing-like experiences. - Education: Accessibility training should include demonstrations of how ARIA misuse harms non-screen-reader tools. - Funding: Support for accessibility testing infrastructure that includes browser-native assistive features. --- ### 🧠 Learning Styles Assessment - Reading level estimate: Around high-school to early college level; roughly Flesch–Kincaid Grade 11–12 based on sentence length and technical jargon. #### 👀 Visual learners - Present: Code patterns described conceptually; mental images of DOM structures. - Improve: Add annotated screenshots of browser reader modes, side-by-side “good vs. bad” link visuals, and simple diagrams of accessibility trees. #### 🔊 Aural learners - Present: Topic focuses on audio output behavior; easily mapped to spoken explanations. - Improve: Provide a short audio summary and recordings of how each browser TTS reads the different link patterns. #### 🗣️ Verbal learners - Present: Clear explanations, defined terms (ARIA, accessible name), concrete examples. - Improve: Add analogies (e.g., “labels on physical buttons”) and a mini glossary of ARIA-related terms. #### 🧩 Kinesthetic learners - Present: Encouragement to build and run one’s own tests. - Improve: Step-by-step labs (“create this HTML, then run Edge Read Aloud…”) and small hands-on challenges. #### 🧠 Logical learners - Present: Systematic test results and clear rules (“don’t use `aria-label` on links…”). - Improve: Tables summarizing behaviors by browser and link pattern; simple decision trees for link design. #### 🧑‍🤝‍🧑 Social learners - Present: Invitation to share test results and comment. - Improve: Structured discussion prompts, community testing sessions, and guided group audits. #### 🧘‍♀️ Solitary learners - Present: Self-paced reading and code experimentation. - Improve: Reflection prompts (“audit three pages you built; where did you use ARIA on links?”) and self-check quizzes. #### 🌿 Naturalistic learners - Present: Limited direct environmental framing. - Improve: Analogies to ecosystems (how different tools “feed” on the accessibility tree) and broader reflections on inclusive digital environments. --- ### 📊 Accessibility Assessment #### Screen reader semantics - Present: Focus on ARIA semantics, accessible names, and how browsers build the accessibility tree. - Improve: Stress that native semantics and visible text are primary; ARIA is a supplement, not a replacement. #### Keyboard navigation - Present: Not directly tested, but link patterns could affect focus visibility if misused. - Improve: Recommend verifying focus order and visible focus indicators for all link variants. #### Contrast and readability - Present: Notes that Firefox restyles span-split links (e.g., white text), potentially harming contrast. - Improve: Explicit guidance on maintaining color contrast and consistent link styling. #### Text resizing and reflow - Present: Not central, but span-heavy link text could behave oddly with zoom and wrapping. - Improve: Encourage testing zoom and responsive layouts for readability and link integrity. #### Media and captions - Present: Article is text-based; focus is on TTS behavior. - Improve: Provide video or audio demos with captions and transcripts of how each browser behaves. #### Forms and interactions - Present: Focus on links (interactive elements) and their accessible names. - Improve: Extend lessons to buttons and other controls, reinforcing consistent naming and visibility. #### Standards reference - Present: References WCAG 2.5.3 and 4.1.2 through intentional failures in test cases. - Improve: Map each observed failure to WCAG 2.2 AA success criteria with explicit callouts. --- ### 🌍 DEIB Assessment #### Cultural breadth - Present: Uses Korean words as `aria-label` examples, mainly as a technical signal. - Improve: Broader multilingual examples and explicit discussion of translation and localization impacts. #### Inclusive language - Present: Technical, respectful tone; minimal jargon without being exclusionary. - Improve: More plain-language summaries at key points to support non-expert readers. #### Neurodiversity support - Present: Clear structure and bullet-point summaries of results. - Improve: Increase use of headings, consistent patterns, and callout boxes for key rules. #### Representation - Present: Highlights contributions from another expert (Amelia Bellamy-Royds). - Improve: More explicit acknowledgement of diverse user needs and assistive technology use cases. #### Psychological safety - Present: Invites experimentation and corrections, acknowledges fallibility. - Improve: Provide clear guidance that mistakes are learning opportunities and encourage constructive feedback. --- ### ✅ Logical Validity #### Strong reasoning - Inductive strength: Systematically testing multiple link patterns across several browsers and summarizing consistent behaviors strengthens the general rule to avoid ARIA hacks on links. - Causal reasoning: Demonstrates that specific code patterns (e.g., `aria-hidden` on link text) cause links to disappear from reader modes, not just correlate with them. #### Fallacies - None obvious; the author does not claim universal coverage and explicitly invites more testing and corrections, which mitigates overgeneralization. #### Tone of voice - Tone: Pragmatic, slightly opinionated, and practitioner-focused. - Uses direct language (“Don’t use aria-label on links”) but grounds it in observed evidence and standards context. --- ### 🛡️ DARVO Analysis - Deny: No denial or minimization of accessibility problems; the article foregrounds them. - Attack: No personal attacks; critiques are aimed at patterns and tools, not people. - Reverse victim/offender: No attempt to present implementers of problematic patterns as victims; instead, the focus is on end users facing barriers. --- ## 🎯 Conclusion The article shows that visually fancy, ARIA-heavy link patterns can seriously undermine accessibility for users of browser-based reader and text-to-speech tools. Because these tools often ignore `aria-label` and respect `aria-hidden`, links can become invisible or mislabeled. Practical next steps: simplify link markup, keep link text visible and contiguous, avoid `aria-hidden` inside links, and test with multiple assistive technologies—not just screen readers. --- ## 🧱 Refactor Appendix (append after 🎯 Conclusion) ### 📚 Literature Split Pad - Purpose: Stage Konik CEE units that become per-source Literature notes. - Split level: H3. - Include verbatim quotes under 25 words and a [view highlight] link. ### [H1] ARIA-heavy links often break browser readers > [!quote] [Barriers from Links with ARIA](https://adrianroselli.com/2026/01/barriers-from-links-with-aria.html) by [[Adrian Roselli]] via [[adrianroselli.com]]. Published 2026-01-22. Accessed 2026-01-26. > “The text-to-speech features seem to respect the aria-hidden but ignore the aria-label.” Used to show that browser-native assistive tools differ from screen readers in ARIA handling. [view highlight](https://adrianroselli.com/2026/01/barriers-from-links-with-aria.html#H1) #xref #articleseed ID:rw_[MISSING] ### [H2] Avoid aria-label and aria-hidden on links > [!quote] [Barriers from Links with ARIA](https://adrianroselli.com/2026/01/barriers-from-links-with-aria.html) > “Don’t use aria-label on links; Don’t use aria-hidden within links; Don’t split the letters of a word across elements.” Captures Roselli’s three core prescriptive rules for accessible link patterns. [view highlight](https://adrianroselli.com/2026/01/barriers-from-links-with-aria.html#H2) #xref ID:rw_[MISSING] --- ### 🔖 Atomic Split Pad (Zettel Candidates) #### [Z1] ARIA-heavy link patterns harm accessibility - Links that depend on `aria-label` or `aria-hidden` for their text often fail in browser reader modes. - Pointer: Roselli (2026), “Barriers from Links with ARIA”. - Links: [[Accessible-Links]] [[Assistive-Technology-Variability]] #### [Z2] Browser TTS and screen readers use ARIA differently - Browser text-to-speech frequently ignores `aria-label` but respects `aria-hidden`, unlike many screen readers. - Pointer: Roselli (2026), multi-browser tests. - Links: [[Assistive-Technology-Variability]] [[ARIA-Limitations]] --- ### ✏️ Fleeting Queue (Extract by Selection) - [F1] Audit my projects for links using aria-label instead of visible text — context/https://adrianroselli.com/2026/01/barriers-from-links-with-aria.html #fleeting #inbox - [F2] Build a small test page reproducing Roselli’s link patterns and run them through my browsers’ reader modes — context/https://adrianroselli.com/2026/01/barriers-from-links-with-aria.html #fleeting #inbox - [F3] Update my accessibility guidelines to explicitly warn against aria-hidden inside links — context/https://adrianroselli.com/2026/01/barriers-from-links-with-aria.html #fleeting #inbox <!-- deep-read:sections end -->