Barrierefreie Formulare: Labels und Validierung
Formulare sind der Punkt, an dem aus Besuchern Kontakte, Anmeldungen oder Kunden werden. Genau hier scheitern jedoch besonders viele Menschen mit Behinderungen: Der WebAIM Million Report (2024) hat 45,9% (WebAIM Million, 2024) aller untersuchten Startseiten mit fehlenden oder leeren Formular-Labels gefunden. Damit zählen Formulare zu den häufigsten Barrieren im Web. Mit dem Barrierefreiheitsstärkungsgesetz (BFSG) ist seit Juni 2025 für viele Anbieter verbindlich, dass Formulare nach den anerkannten Standards der WCAG 2.2 und EN 301 549 bedienbar sind. Dieser Leitfaden zeigt praxisnah, wie programmatische Labels, Pflichtfeld-Kennzeichnung, Fehlermeldungen, Inline-Validierung, Fokus-Management und barrierefreie Datumsfelder korrekt umgesetzt werden.
Warum Formulare so häufig Barrieren enthalten
Ein Formular vereint mehrere kritische Interaktionen auf engem Raum: Beschriftung, Eingabe, Validierung, Fehlerbehandlung und Absenden. Jeder dieser Schritte kann eine eigene Barriere erzeugen. Die häufigsten Probleme entstehen, weil visuelle Gestaltung und programmatische Struktur auseinanderlaufen. Ein Feld sieht beschriftet aus, weil daneben ein Text steht, aber dieser Text ist nicht als mit dem Feld verknüpft. Sehende Nutzer erkennen den Zusammenhang, ein Screenreader hingegen liest nur Eingabefeld vor.
Der WebAIM Million Report (2024) zeigt, dass 96,3% (WebAIM Million, 2024) aller untersuchten Startseiten mindestens einen automatisch erkennbaren WCAG-Verstoss aufweisen. Fehlende Formular-Labels stehen dabei seit Jahren konstant unter den Top-Fehlern. Hinzu kommt: Automatische Prüfwerkzeuge erkennen nur einen Teil aller Barrieren zuverlässig (W3C/WAI). Gerade bei Formularen sind manuelle Tests mit Tastatur und Screenreader unverzichtbar, weil die Bedienlogik und das Vorlese-Verhalten erst im realen Ablauf sichtbar werden.
Die Nielsen Norman Group (2023) beschreibt, dass unklare Fehlermeldungen und schlecht platzierte Hinweise zu den größten Frustfaktoren in Formularen gehören - für alle Nutzer, nicht nur für Menschen mit Behinderungen. Ein barrierefrei gebautes Formular ist deshalb fast immer auch ein nutzerfreundlicheres Formular mit niedrigeren Abbruchraten. Unsere Leistungen setzen genau an dieser Schnittstelle aus Barrierefreiheit und Conversion an. Besonders sichtbar wird das in den umfangreichen Bestell- und Adressformularen eines barrierefreien Shops.
Programmatische Labels: das Fundament
Jedes Eingabefeld braucht eine programmatisch verknüpfte Beschriftung. Der einfachste und robusteste Weg ist das -Element mit einem for-Attribut, das auf die id des Feldes verweist. Screenreader lesen dann beim Fokussieren des Feldes automatisch die Beschriftung vor, und ein Klick auf das Label setzt den Fokus ins Feld - das vergrößert nebenbei das Klickziel und hilft Menschen mit motorischen Einschränkungen. Das WCAG-2.2-Kriterium 3.3.2 (Labels or Instructions) und 4.1.2 (Name, Role, Value) verlangen genau diese Verknüpfung (W3C, 2023).
<!-- Empfohlen: sichtbares Label mit for/id -->
<label for="email">E-Mail-Adresse</label>
<input type="email" id="email" name="email"
autocomplete="email" aria-required="true" />
<!-- Alternative, wenn kein sichtbares Label möglich ist -->
<input type="search" id="q" name="q"
aria-label="Website durchsuchen" />
<!-- Falsch: Platzhalter ersetzt KEIN Label -->
<input type="email" placeholder="E-Mail" />Ein Platzhalter (placeholder) ist kein Ersatz für ein Label. Er verschwindet beim Tippen, wird von Screenreadern uneinheitlich behandelt und hat oft zu wenig Kontrast. Wenn aus Designgründen kein sichtbares Label möglich ist - etwa bei einem Suchfeld - kann aria-label oder aria-labelledby eingesetzt werden. Sichtbarer Text bleibt jedoch die beste Wahl, weil er allen Nutzern hilft, auch Menschen mit kognitiven Einschränkungen und Nutzern von Spracheingabe, die das sichtbare Label als Befehl ansprechen.
Sichtbares Label bevorzugen
. Nur wenn das Design es zwingend ausschliesst, weichen Sie auf aria-label aus. Niemals beides gleichzeitig setzen - sonst überschreibt aria-label den sichtbaren Text und die Sprachsteuerung findet das Feld nicht mehr.Pflichtfelder eindeutig kennzeichnen
Pflichtfelder müssen sowohl visuell als auch programmatisch erkennbar sein. Ein roter Stern allein genügt nicht, da seine Bedeutung nicht erklärt ist und Screenreader ihn nicht zuverlässig vorlesen. Robust ist die Kombination aus dem nativen HTML-Attribut required (das zugleich die Browser-Validierung aktiviert) und einem sichtbaren Hinweis. Zusätzlich sollte am Formularanfang erklärt werden, was die Markierung bedeutet, etwa: Mit Stern markierte Felder sind Pflichtfelder.
Wer den Stern nutzt, sollte ihn für Screenreader entweder vorlesbar machen oder per aria-hidden ausblenden und stattdessen aria-required="true" setzen. Wichtig ist Konsistenz: Entweder werden alle Pflichtfelder markiert oder - bei Formularen, in denen fast alles Pflicht ist - nur die optionalen Felder als optional gekennzeichnet. Doppelte oder widersprüchliche Hinweise verwirren mehr, als sie helfen.
Label mit for/id
Jedes Feld besitzt ein sichtbares , dessen for auf die id des Feldes zeigt. Klick aufs Label fokussiert das Feld.
Pflichtfeld doppelt markiert
Visuell (Stern plus Erklärung) und programmatisch via required bzw. aria-required. Einheitliche Kennzeichnung im ganzen Formular.
Fehler verknüpft
Fehlermeldung per aria-describedby an das Feld gebunden, Feld mit aria-invalid="true", Meldung in role="alert".
Tastaturbedienbar
Alle Felder, Optionen und Buttons per Tab erreichbar und ohne Maus bedienbar. Sichtbarer Fokus-Indikator auf jedem Element.
Autocomplete-Tokens
Standardisierte autocomplete-Werte für Name, E-Mail und Adresse erfüllen WCAG 1.3.5 und reduzieren die Eingabelast.
Fehler nicht nur per Farbe
Fehlerzustand zusätzlich durch Text, Icon und Rahmen kommunizieren. Kontrast von Text und Rahmen mindestens 4,5:1 bzw. 3:1.
Fehlermeldungen: identifizieren, beschreiben, lösen
Die WCAG 2.2 widmen Fehlern gleich mehrere Kriterien: 3.3.1 (Error Identification) verlangt, dass ein Fehler erkannt und in Textform benannt wird. 3.3.3 (Error Suggestion) fordert, dass nach Möglichkeit ein konkreter Korrekturvorschlag gemacht wird (W3C, 2023). In der Praxis heisst das: Eine gute Fehlermeldung beschreibt nicht nur das Problem, sondern auch die Lösung. Statt Ungültige Eingabe besser: Bitte geben Sie eine E-Mail-Adresse mit at-Zeichen ein, zum Beispiel name@beispiel.de.
Jede Fehlermeldung gehört direkt an das betroffene Feld - nicht nur in eine Zusammenfassung am Seitenanfang. Programmatisch wird das Feld mit aria-invalid="true" markiert und die Meldung über aria-describedby mit dem Feld verbunden. Beim Fokussieren liest der Screenreader dann Label und Fehlermeldung gemeinsam vor. Damit eine neu eingeblendete Meldung sofort angekündigt wird, sollte der Meldungscontainer ein role="alert" (oder aria-live="assertive") tragen.
<label for="email">E-Mail-Adresse</label>
<input type="email" id="email" name="email"
autocomplete="email"
aria-required="true"
aria-invalid="true"
aria-describedby="email-fehler" />
<p id="email-fehler" role="alert">
Bitte eine vollstaendige E-Mail-Adresse eingeben,
zum Beispiel name@beispiel.de.
</p>Bei serverseitiger Validierung, nach der die Seite neu geladen wird, sollte zusätzlich eine Fehlerzusammenfassung oberhalb des Formulars erscheinen. Diese listet alle Fehler als Links auf, die direkt zum jeweiligen Feld springen. Der Fokus wird nach dem Absenden programmatisch auf diese Zusammenfassung gesetzt, damit Screenreader- und Tastaturnutzer sofort erfahren, dass und wo etwas korrigiert werden muss. Das BITV-Prüfverfahren und die EN 301 549 bewerten genau diese Kombination aus Identifikation, Beschreibung und erreichbarer Korrektur (EN 301 549, 2021). Welche BFSG-Anforderungen im Detail gelten, hängt von der Art Ihres Angebots ab.
Inline-Validierung ohne neue Barrieren
Inline-Validierung prüft Eingaben bereits während des Ausfuellens und gibt sofort Rückmeldung. Richtig umgesetzt reduziert das Fehler und Abbrüche; falsch umgesetzt erzeugt sie neue Barrieren. Der häufigste Fehler ist die Validierung bei jedem Tastendruck: Sie meldet einen Fehler, während der Nutzer noch tippt, und ein role="alert" würde dann ständig dazwischenfunken. Die Nielsen Norman Group (2022) empfiehlt, erst beim Verlassen des Feldes (blur) zu validieren und positive Rückmeldungen sparsam einzusetzen.
Für Live-Rückmeldungen eignet sich eine Region mit aria-live="polite", die Änderungen ankündigt, ohne den aktuellen Vorgang zu unterbrechen. assertive beziehungsweise role="alert" ist nur für dringende, blockierende Meldungen reserviert. Wichtig ist, dass eine Meldung, die wieder verschwindet (etwa weil der Fehler behoben wurde), den Fokus nicht stiehlt und der Nutzer den Korrekturpfad nachvollziehen kann. Ein Passwortfeld, das Anforderungen live abhakt, sollte diese als Liste mit klaren Zuständen führen statt nur per Farbe.
| Aspekt | Barriere | Barrierefreie Lösung |
|---|---|---|
| Zeitpunkt | Validierung bei jedem Tastendruck | Validierung beim Verlassen des Feldes (blur), Korrekturen sofort anerkennen |
| Ankündigung | Stummes Einblenden oder Dauer-Alert | role=alert für Fehler, aria-live=polite für Statusmeldungen |
| Darstellung | Fehler nur durch rote Farbe | Text, Icon und Rahmen kombiniert, Kontrast mindestens 3:1 |
| Fokus | Fokus springt unkontrolliert | Fokus bleibt im Feld bzw. wandert kontrolliert zur Fehlerzusammenfassung |
Fokus-Management gezielt steuern
Fokus-Management entscheidet darüber, ob ein Formular per Tastatur und Screenreader nachvollziehbar bleibt. Grundregel: Die Tab-Reihenfolge folgt der visuellen Leserichtung, und jedes fokussierte Element hat einen deutlich sichtbaren Fokus-Indikator. Das mit WCAG 2.2 neu eingeführte Kriterium 2.4.11 (Focus Not Obscured) verlangt, dass das fokussierte Element nicht von Sticky-Headern, Cookie-Bannern oder Chat-Fenstern verdeckt wird (W3C, 2023).
Nach dem Absenden eines Formulars mit Fehlern wird der Fokus aktiv auf die Fehlerzusammenfassung oder das erste fehlerhafte Feld gesetzt. War das Absenden erfolgreich, sollte der Fokus auf die Erfolgsmeldung wandern, damit sie vorgelesen wird. Programmatisch gesetzter Fokus auf nicht-interaktive Elemente wie eine Überschrift erfordert ein tabindex="-1", damit das Element fokussierbar wird, ohne in die normale Tab-Reihenfolge zu rutschen. Sauberes Fokus-Management gehört für uns zur barrierefreien Webentwicklung dazu.
Fokus niemals unsichtbar machen
outline: none ohne sichtbaren Ersatz verstößt gegen WCAG 2.4.7 (Focus Visible). Mit WCAG 2.2 kommt 2.4.13 (Focus Appearance) hinzu, das eine ausreichend grosse und kontrastreiche Fokus-Darstellung empfiehlt. Entfernen Sie den Standard-Outline nur, wenn Sie einen mindestens gleichwertigen eigenen Indikator setzen.Autocomplete-Tokens richtig einsetzen
Das WCAG-Kriterium 1.3.5 (Identify Input Purpose) verlangt, dass der Zweck von Eingabefeldern, die persönliche Daten erfassen, programmatisch bestimmbar ist (W3C, 2023). Umgesetzt wird das über standardisierte autocomplete-Tokens wie given-name, family-name, email, tel, street-address, postal-code oder country-name. Browser und Hilfstechnologien können so gespeicherte Daten anbieten und Felder mit Symbolen anreichern - eine grosse Entlastung für Menschen mit motorischen oder kognitiven Einschränkungen.
<label for="vorname">Vorname</label>
<input id="vorname" name="vorname" autocomplete="given-name" />
<label for="plz">Postleitzahl</label>
<input id="plz" name="plz" inputmode="numeric"
autocomplete="postal-code" />
<label for="tel">Telefon</label>
<input id="tel" type="tel" name="tel"
inputmode="tel" autocomplete="tel" />Ergänzend steuert das inputmode-Attribut die Bildschirmtastatur auf mobilen Geräten: numeric für Postleitzahlen, email für E-Mail-Felder, tel für Telefonnummern. In Kombination mit dem korrekten type-Attribut entsteht eine Eingabe, die weniger Fehler produziert. Wer mehrere Formulare betreibt, profitiert hier doppelt, denn die gleichen Tokens lassen sich domainübergreifend wiederverwenden. Diese Details setzen wir in der barrierefreien Webentwicklung standardmäßig um.
Barrierefreie Datums- und Auswahlfelder
Datumsfelder gehören zu den schwierigsten Formularelementen. Das native ist oft die beste Wahl, weil es Tastaturbedienung, Lokalisierung und Screenreader-Unterstützung mitbringt. Wo ein eigenes Datepicker-Widget nötig ist, muss es das vollständige Tastaturmuster abbilden: Navigation per Pfeiltasten, Auswahl per Enter, Schliessen per Escape und korrekte ARIA-Auszeichnung als Dialog oder Grid. Wichtig ist immer ein zusätzliches Texteingabefeld als Alternative, denn nicht jeder kann ein Kalender-Raster bedienen.
Das erwartete Datumsformat muss klar kommuniziert werden, etwa per Hilfetext TT.MM.JJJJ, der über aria-describedby mit dem Feld verbunden ist. Felder, die in Teilfelder zerlegt sind (Tag, Monat, Jahr), benötigen je ein eigenes Label und sollten in ein mit gefasst werden. Für Auswahllisten gilt: Das native ist robust und tastaturfreundlich. Custom-Dropdowns müssen das combobox- oder listbox-Muster vollständig nachbilden, inklusive Type-Ahead bei langen Listen.
- Native Elemente (input type=date, select) bevorzugen, da sie Tastatur und Screenreader bereits unterstützen
- Erwartetes Format per aria-describedby kommunizieren (z. B. TT.MM.JJJJ)
- Zusammengehörige Felder in fieldset/legend gruppieren (Geburtsdatum, Adresse)
- Custom-Widgets vollständig per Tastatur bedienbar machen (Pfeiltasten, Enter, Escape)
- Eine Texteingabe als Alternative zum Kalender-Raster anbieten
- Auswahlzustände nicht nur per Farbe, sondern auch per Text oder Icon kennzeichnen
Authentifizierung und CAPTCHAs barrierefrei
Mit WCAG 2.2 ist 3.3.8 (Accessible Authentication) hinzugekommen: Anmeldevorgänge dürfen keinen kognitiven Funktionstest erfordern, bei dem Nutzer etwa Zeichen abtippen oder Rätsel lösen müssen, ohne dass eine einfachere Alternative existiert (W3C, 2023). Login-Felder sollten das Einfügen aus dem Passwortmanager erlauben und autocomplete="current-password" beziehungsweise new-password verwenden. Ein bild- oder textbasiertes CAPTCHA ohne barrierearme Alternative ist eine klassische Barriere.
Wo Spam-Schutz nötig ist, sind unsichtbare Verfahren wie Honeypot-Felder oder serverseitige Heuristiken einer Rätselaufgabe vorzuziehen. Falls ein interaktiver Test unvermeidbar ist, muss mindestens eine alternative Methode angeboten werden, etwa eine Bestätigung per E-Mail. So bleibt das Formular für Menschen mit Seh-, Hör- oder kognitiven Einschränkungen nutzbar, ohne dass der Schutz vor automatisierten Eingaben aufgegeben wird. Mehr zu den zugrunde liegenden ARIA-Mechanismen erklären wir im Beitrag zu ARIA-Rollen, Zuständen und Live-Regionen. Eine barrierearme Authentifizierung ist Teil unserer Leistungen.
Testen mit Tastatur und Screenreader
Kein Formular sollte ohne manuellen Test als barrierefrei gelten. Automatisierte Prüfwerkzeuge finden viele technische Fehler, doch nur etwa ein Drittel bis zur Hälfte der WCAG-Anforderungen lassen sich automatisiert prüfen (W3C/WAI). Der erste manuelle Test ist immer die reine Tastaturbedienung: Lasst sich jedes Feld per Tab erreichen, ist die Reihenfolge logisch, ist der Fokus jederzeit sichtbar und kein Element gefangen?
Der zweite Test läuft mit einem Screenreader. Hier zeigt sich, ob Labels, Pflichtfeldhinweise und Fehlermeldungen tatsächlich vorgelesen werden und ob die Reihenfolge der Ansagen Sinn ergibt. Aus unserer Projekterfahrung mit 50+ (Projekterfahrung) barrierefreien Webprojekten zeigt sich, dass die meisten verbleibenden Formularfehler erst im kombinierten Test aus Tastatur und Screenreader sichtbar werden - etwa eine Fehlermeldung, die zwar im Code steht, aber wegen falscher Live-Region nicht angekündigt wird. Welche Tests wir dabei durchlaufen, ist Teil unseres WCAG-Audits.
Ein Formular ist erst dann barrierefrei, wenn ein Mensch es allein mit Tastatur und Screenreader vollständig abschicken kann - nicht, wenn ein automatischer Test grün anzeigt.
Barrierefreie Formulare zahlen sich doppelt aus