A11y Hell
LOWWCAG 4.1.2 A

Redundant ARIA

Native HTML semantics are overridden or repeated, increasing complexity without accessibility gains.

Try It Yourself

This simulator is intentionally broken. Recreate the failure path, capture evidence, and validate the fix with the same sequence.

Scenario

In a high-pressure workflow, Engineering teams try to complete a core task and hit this failure pattern.

Watch For

  • No user value added, but markup complexity increases.
  • Potential inconsistent announcements in edge AT combinations.

Done When

  • Native semantics are used first, with ARIA only when required.
  • Redundant role attributes are removed from semantic elements.

Scenario

A person in this audience group is trying to complete a core task quickly and encounters this failure pattern.

Engineering teamsAssistive technology users (in edge cases)

Guided Run Progress

0 / 5 steps marked

Track setup, action, and failure signals as you run the simulation.

Quick Run Checklist

Demo warning

Redundant ARIA can add noise and confusion for maintainers and sometimes for assistive technologies.

How to trigger the issue

Compare native semantic markup with the noisy ARIA-overloaded version to see unnecessary verbosity.

Rendered noisy markup

Native elements already expose these semantics. Added roles create noisy redundancy.

Broken code pattern

<button role="button">Save</button>
<nav role="navigation" aria-label="Primary navigation">...</nav>

Manual Testing Protocol

Follow this sequence to reproduce the failure consistently and verify the fix with the same workflow.

1. Setup

  • Open markup comparison panel.
  • Review native element behavior before checking ARIA-heavy variant.

2. Reproduction Steps

  1. Inspect duplicate roles on native semantic elements.
  2. Compare announcement output between native and redundant variants.
  3. Evaluate maintainability overhead in repetitive patterns.

3. Expected Failure Signals

  • No user value added, but markup complexity increases.
  • Potential inconsistent announcements in edge AT combinations.
  • Developers may copy ineffective patterns across codebase.

4. Fix Verification

  • Native semantics are used first, with ARIA only when required.
  • Redundant role attributes are removed from semantic elements.
  • Team patterns document when ARIA is truly necessary.

Evidence Capture Checklist

  • Record the exact user goal that fails (for example: submit form, complete checkout, navigate menu).
  • Capture screen recording + keyboard path from first interaction to failure state.
  • Map failure to WCAG 4.1.2 (Level A) and affected user groups.
  • Document business impact: conversion loss, support burden, legal/compliance risk, or trust damage.
Share evidence with Accessibility.build

The Impact

What Happens

  • Code maintenance burden increases
  • Team accessibility understanding erodes
  • Potential announcement duplication appears

Who Gets Hurt

Engineering teams
Assistive technology users (in edge cases)

The Broken Code

<button role="button" aria-pressed="false">Save</button>
<nav role="navigation" aria-label="Main navigation">
  ...
</nav>
<!-- Native semantics already provide these roles -->

WCAG 4.1.2: Reference

"For all user interface components, the name and role can be programmatically determined."

Level A - Clean semantic HTML should be the default. ARIA is a supplement, not decoration.

Related Low Issues

Explore neighboring failures in the same severity band.

View all low issues
Screen reader simulation closed. Audio disabled.

Screen Reader

Simulation Mode

Active — Tab to navigate

Currently Announcing

Focus on an element to see announcement

Announcement History

No announcements yet

Press Tab to start navigating

This simulates what screen reader users hear.
No visuals — just these announcements.
Shortcut: Shift + Alt + S