Was ist aria-label? - Barrierefreie Beschriftungen für Elemente
Informationen zum Artikel

Autor: Dmitry Dugarev
Das aria-label Attribut ist eines der bekanntesten und gleichzeitig am häufigsten missverstandenen Werkzeuge in der Welt der digitalen Barrierefreiheit. Richtig eingesetzt, ist es unglaublich mächtig, um die User Experience für Nutzer von assistiven Technologien (AT) wie Screenreadern zu verbessern. Falsch eingesetzt, kann es jedoch mehr schaden als nutzen. Lass uns gemeinsam tief eintauchen und klären, wie Du aria-label korrekt und effektiv einsetzt.
Was ist aria-label?
Die offizielle Spezifikation definiert aria-label wie folgt:
Defines a string value that labels the current element. [1]
Auf Deutsch bedeutet das: Es definiert einen String-Wert (eine Zeichenkette), der das aktuelle Element beschriftet.
Ausführliche Erklärung
Stell Dir vor, Du hast ein interaktives Element, zum Beispiel einen Button, der nur ein Icon enthält – wie das klassische "X" zum Schließen eines Fensters. Ein sehender Nutzer erkennt die Funktion sofort. Aber was hört ein Nutzer, der einen Screenreader verwendet? Ohne weitere Informationen hört er vielleicht nur "Button". Das ist nicht hilfreich.
Hier kommt aria-label ins Spiel. Es versorgt dieses Element mit einem "barrierefreien Namen" (Accessible Name). Dieser Name ist für sehende Nutzer unsichtbar, wird aber von assistiven Technologien ausgelesen. Im Falle unseres "X"-Buttons würdest Du aria-label="Schließen" hinzufügen. Der Screenreader-Nutzer hört dann "Schließen, Button" – und weiß sofort, was passiert, wenn er ihn aktiviert.
Das Wichtigste, was Du verstehen musst: aria-label hat eine hohe Priorität und überschreibt jeglichen sichtbaren Textinhalt des Elements für assistive Technologien. Wenn ein Button den Text "Mehr erfahren" hat und Du ihm ein aria-label="Klicke hier" gibst, wird der Screenreader "Klicke hier" vorlesen, nicht "Mehr erfahren". Das kann zu großer Verwirrung führen.
Der barrierefreie Name wird nach einer festgelegten Hierarchie ermittelt, die in der "Accessible Name and Description Computation" Spezifikation [2] definiert ist. aria-label steht in dieser Hierarchie weit oben.
Textbeschreibung für das Schema "Vereinfachte Hierarchie der Berechnung des barrierefreien Namens"
Dieses Flussdiagramm zeigt den vereinfachten Prozess, wie assistive Technologien den Namen eines Elements bestimmen.
- Zuerst wird geprüft, ob ein
aria-labelledbyAttribut vorhanden ist. Wenn ja, wird dessen Inhalt als Name verwendet. - Wenn nicht, wird geprüft, ob ein
aria-labelAttribut vorhanden ist. Wenn ja, wird dessen Wert als Name verwendet. - Wenn nicht, wird der sichtbare Textinhalt des Elements als Name verwendet.
- Als letzte Möglichkeit wird das
titleAttribut als Fallback herangezogen. - Wenn keine dieser Methoden einen Namen liefert, hat das Element keinen barrierefreien Namen, was ein Accessibility-Problem darstellt.
aria-labelüberschreibt also den sichtbaren Textinhalt.
Wofür wird es eingesetzt?
aria-label ist Dein Werkzeug der Wahl, wenn es keine sichtbare Beschriftung gibt oder die sichtbare Beschriftung nicht aussagekräftig genug ist.
Typische Anwendungsfälle sind:
- Icon-Buttons: Buttons, die nur ein Icon anzeigen (z. B. ein Zahnrad für "Einstellungen", eine Lupe für "Suche", ein "X" für "Schließen").
- Grafische Steuerelemente: Bedienelemente, deren Funktion rein visuell dargestellt wird.
- Eindeutige Benennung von Landmark-Regionen: Wenn Du mehrere Navigationselemente (
<nav>) auf einer Seite hast, kannst Du sie unterscheiden, z.B. mitaria-label="Hauptnavigation"undaria-label="Seitennavigation". - Klarstellung mehrdeutiger Links: Ein "Weiterlesen"-Link ist ohne Kontext unklar. Mit
aria-label="Weiterlesen über unser neues Produkt"wird er für Screenreader-Nutzer verständlich. (Obwohl es hier oft bessere Techniken gibt!)
Hier ist ein kleiner Entscheidungsbaum, der Dir hilft:
Textbeschreibung für das Schema "Entscheidungsbaum zur Verwendung von
aria-label"
aria-label"Dieses Diagramm hilft bei der Entscheidung, ob aria-label verwendet werden
sollte. 1. Frage: Hat das Element eine sichtbare Beschriftung? 2. Wenn nein:
aria-label ist eine ausgezeichnete Wahl. 3. Wenn ja, frage weiter: Ist die
sichtbare Beschriftung ausreichend? 4. Wenn ja: aria-label wird nicht
benötigt. 5. Wenn nein, frage weiter: Kann der sichtbare Text verbessert
werden? 6. Wenn ja: Verbessere den sichtbaren Text. Das ist die bevorzugte
Lösung. 7. Wenn nein: aria-label kann als letzte Option verwendet werden, um
den Kontext zu ergänzen, aber es ist Vorsicht geboten.
Beispiele aus der Praxis
- Gutes Beispiel
- Schlechtes Beispiel
<!--
Gutes Beispiel:
Ein Button ohne sichtbaren Text.
aria-label gibt ihm einen barrierefreien Namen.
-->
<button aria-label="Dialog schließen">
<svg aria-hidden="true" focusable="false" ...>
<!-- Icon-Grafik hier -->
<path
d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
></path>
</svg>
</button>
<!--
Schlechtes Beispiel:
Dieser Button hat bereits sichtbaren Text ("Suchen").
Das aria-label="Suche starten" überschreibt diesen Text.
Das führt zu einer Inkonsistenz.
-->
<button aria-label="Suche starten">Suchen</button>
Das schlechte Beispiel erzeugt ein Problem:
- Ein Screenreader-Nutzer hört "Suche starten, Button".
- Ein Nutzer von Spracherkennungssoftware sagt vielleicht "Klicke Suchen", was fehlschlägt, da der barrierefreie Name "Suche starten" lautet.
- Ein sehender Screenreader-Nutzer ist verwirrt, weil er "Suchen" liest, aber "Suche starten" hört.
Best Practices & Empfehlungen
- Verwende
aria-labelnur, wenn es keine sichtbare Beschriftung gibt. Das ist die goldene Regel. Wenn Text vorhanden ist, ist es fast immer besser, diesen Text so zu gestalten, dass er aussagekräftig ist. - Überschreibe niemals sichtbaren Text. Wenn ein Element sichtbaren Text hat, muss dieser Text Teil des barrierefreien Namens sein. Das ist eine direkte Anforderung des WCAG-Erfolgskriteriums 2.5.3 Label in Name. [3]
- Bevorzuge native HTML-Elemente. Für Formularfelder ist ein
<label>-Element, das mit demfor-Attribut verknüpft ist, immer die bessere, robustere und semantisch korrektere Lösung alsaria-labelauf einem<input>. [4] - Sei präzise und kurz. Der Inhalt von
aria-labelsollte wie eine echte, kurze Beschriftung sein, nicht wie ein Roman. Für längere Beschreibungen gibt esaria-describedby. - Verwende es nicht auf statischen Elementen wie
<div>oder<span>, es sei denn, sie haben eine spezifische ARIA-Rolle (z.B.role="navigation"oderrole="region"), die eine Beschriftung erfordert. Einaria-labelauf einem simplen<div>ohne Rolle wird von den meisten Screenreadern ignoriert. - Teste Deine Implementierung! Nichts ersetzt das Testen mit einem echten Screenreader (NVDA, VoiceOver, JAWS). So stellst Du sicher, dass die User Experience wirklich so ist, wie Du sie Dir vorstellst.
Häufige Missverständnisse
aria-label ist wie ein Tooltip
Das ist falsch. Das title-Attribut in HTML erzeugt einen Tooltip, der bei Maus-Hover erscheint. aria-label erzeugt keinerlei visuelle Ausgabe. Es ist ausschließlich für die API-Kommunikation mit assistiven Technologien gedacht. Während das title-Attribut manchmal als letzter Fallback für den barrierefreien Namen dient, ist es notorisch unzuverlässig und für mobile oder tastaturgesteuerte Nutzer oft gar nicht zugänglich. Verwechsle die beiden also nicht.
aria-label ist für lange Erklärungen gedacht
Nein, dafür ist es nicht geeignet. aria-label soll eine kurze, prägnante Beschriftung sein (der "Name"). Wenn Du zusätzliche Informationen oder Anweisungen geben möchtest (die "Beschreibung"), ist aria-describedby das richtige Werkzeug. Es verknüpft ein Element mit einem anderen Element auf der Seite, dessen Inhalt dann als Beschreibung vorgelesen wird.
Verwandte Begriffe
- Accessible Name
- aria-labelledby
- aria-describedby
- role (Attribut)
- WAI-ARIA
Häufig gestellte Fragen
Was ist der Unterschied zwischen aria-label und aria-labelledby?
aria-label verwendet einen einfachen String als Beschriftung, den Du direkt in das Attribut schreibst. aria-labelledby ist mächtiger: Es verwendet die id eines oder mehrerer anderer Elemente auf der Seite, um deren Inhalt als Beschriftung zu verketten. aria-labelledby hat Vorrang vor aria-label und ist oft die bessere Wahl, wenn die Beschriftung bereits als sichtbarer Text auf der Seite existiert.
Wann sollte ich aria-label NICHT verwenden?
Du solltest aria-label nicht verwenden, wenn ein Element bereits eine sichtbare und aussagekräftige Textbeschriftung hat. Außerdem solltest Du es nicht auf generischen, nicht-interaktiven Elementen wie <div>, <p> oder <span> ohne eine passende ARIA-Rolle verwenden, da es dort oft ignoriert wird.
Wirkt sich aria-label auf die SEO aus?
Nein, aria-label hat in der Regel keinen direkten Einfluss auf die Suchmaschinenoptimierung (SEO). Suchmaschinen-Crawler konzentrieren sich auf den sichtbaren Inhalt und die semantische Struktur des DOM. aria-label ist für die User Experience von AT-Nutzern gedacht, nicht für Suchmaschinen.
Können alle HTML-Elemente ein aria-label haben?
Technisch gesehen kannst Du das Attribut auf fast jedes HTML-Element setzen. Sinnvoll und wirksam ist es aber nur auf Elementen, die eine Beschriftung benötigen. Das sind in der Regel interaktive Elemente (wie button, a, input), Elemente mit einer Landmark-Rolle (wie nav, main) oder Widgets mit einer ARIA-Rolle (wie tab, dialog).
Hinweis
Die in diesem Artikel enthaltenen Informationen, insbesondere Bezüge auf gesetzliche Regelungen oder Normen wie die WCAG, dienen ausschließlich der allgemeinen Information und stellen keine Rechtsberatung dar. Bei spezifischen rechtlichen Fragen zur digitalen Barrierefreiheit solltest Du immer einen qualifizierten Anwalt konsultieren.