Definition: WAI-ARIA (Accessible Rich Internet Applications) ist eine Spezifikation des W3C mit Rollen, Zuständen und Eigenschaften, die als Attribute ins HTML geschrieben werden. Sie teilt assistiven Technologien mit, was ein Element ist und in welchem Zustand es sich befindet – dort, wo HTML allein das nicht ausdrücken kann. ARIA ändert nur die Bedeutung, nie das Verhalten [1].
Englisch: ARIA (WAI-ARIA) · Auch: ARIA-Attribute, ARIA-Rollen · Zuletzt geprüft: 27. September 2026
Was ARIA macht
ARIA liefert drei Arten von Information, die der Browser in den Accessibility Tree schreibt:
- Rollen sagen, was ein Element ist:
role="tab",role="dialog",role="switch". - Zustände sagen, wie es gerade ist:
aria-expanded="true",aria-checked,aria-selected. - Eigenschaften liefern Beziehungen und Namen:
aria-label,aria-labelledby,aria-describedby,aria-controls.
Ein Screenreader liest daraus zum Beispiel „Filter, Schaltfläche, reduziert“. Ohne ARIA hätte ein aufklappbares Menü aus <div>-Elementen keine Rolle und keinen Zustand.
Die erste Regel: kein ARIA, wo HTML reicht
Die W3C-Hinweise zum Einsatz von ARIA beginnen mit einer klaren Regel: Wenn es ein natives HTML-Element mit der gewünschten Bedeutung und dem passenden Verhalten gibt, nehmen Sie dieses Element [2]. Ein <button> ist fokussierbar, reagiert auf Enter und Leertaste und wird als Schaltfläche angesagt – ganz ohne ARIA. Der ARIA Authoring Practices Guide warnt ausdrücklich, dass falsches ARIA mehr schadet als fehlendes [3].
ARIA ist ein Versprechen an die Nutzenden. role="button" kündigt eine Schaltfläche an. Tastaturfokus, Enter, Leertaste und den aktuellen Zustand muss Ihr Code dann selbst liefern.
Im Code
<!-- Verspricht einen Button, hält es nicht -->
<div role="button" onclick="toggle()">
Filter
</div>
<!-- Besser: natives Element, Zustand per JS -->
<button type="button" aria-expanded="false"
aria-controls="filter">
Filter
</button>
<div id="filter" hidden>…</div>
Das Skript, das den Filter öffnet, setzt aria-expanded auf "true" und entfernt hidden. Nur so hört ein Screenreader, dass sich etwas geändert hat.
Häufige Fehler
- Rolle ohne Verhalten:
role="button"auf einem<div>ohnetabindexund ohne Tastenbehandlung. aria-hidden="true"auf fokussierbaren Elementen. Der Fokus landet auf etwas, das für den Screenreader nicht existiert.- Zustände, die nicht mitgehen:
aria-expandedbleibt"false", obwohl das Menü offen ist. - App-Rollen für Website-Navigation:
role="menu"verspricht Pfeiltasten-Bedienung wie in einer Desktop-Anwendung. Eine Hauptnavigation ist ein<nav>mit einer Liste von Links. - Erfundene Rollen und Tippfehler wie
role="botton"oderaria-labeledbymit einem „l“. Der Browser ignoriert sie stillschweigend.
Wie Reviseberg damit umgeht
Reviseberg prüft jede Seite mit allen axe-core-Regeln. Für ARIA sind das unter anderem aria-roles, aria-allowed-attr, aria-required-attr, aria-valid-attr-value, aria-required-children und aria-hidden-focus. Sie finden ungültige, unvollständige und widersprüchliche Angaben. Der Tastatur-Agent meldet keyboard:unreachable, wenn ein Element eine Bedien-Rolle wie button oder tab trägt, aber mit Tab nicht erreichbar ist – genau der Fall aus dem Beispiel oben. Ob eine Rolle zum Verhalten des Widgets passt, bleibt eine Frage des Urteils. Deshalb gilt WCAG 4.1.2 bei uns als teilweise automatisch prüfbar [4].
Verwandte Begriffe
Semantisches HTML · Zugänglicher Name · Accessibility Tree · Landmark · Live-Region