Web-Entwicklung · Formulare

Barrierefreie Formulare: Struktur, Logik und die einzelnen Elemente

Formulare sind eine der häufigsten Ursachen für Barrieren im Web. Diese Seite erklärt die drei Grundprinzipien und geht durch die acht Elemente, die jedes barrierefreie Formular ausmachen – von Labels bis zu Fehlermeldungen.

  • 14 Minuten Lesezeit
  • Stand: Mai 2026

Warum Formulare so wichtig sind

Formulare sind die häufigste Stelle, an der Nutzer:innen aktiv mit einer Website interagieren: Login, Kontaktanfrage, Bestellung, Buchung, Anmeldung. Genau hier scheitern viele Menschen mit Behinderung – und damit auch viele Geschäftsprozesse.

Wenn ein Formular nicht zugänglich ist, kommt es nicht nur zu einer schlechten Nutzungserfahrung, sondern oft auch zu einem konkreten Ausschluss: Wer den Pflichtfeld-Hinweis nicht hört, wer die Fehlermeldung nicht findet, wer das CAPTCHA nicht lösen kann, kann die Aufgabe nicht abschließen. Bei einem Kontaktformular ist das ärgerlich. Bei einem Online-Antrag, einer Behördenmeldung oder einer Bestellung kann es existenziell sein.

Die gute Nachricht: Wer drei Prinzipien verstanden hat und acht Elemente sorgfältig umsetzt, hat den größten Teil der Arbeit schon erledigt. Der Rest ist Übung.

Drei Grundprinzipien

Hinter allen Detail-Regeln stehen drei einfache Ideen. Wenn du diese verinnerlicht hast, kannst du auch bei neuen Komponenten gute Entscheidungen treffen.

  • 01

    Klare Zuordnung

    Jedes Eingabefeld muss eindeutig erkennbar machen, wozu es gehört. Label, Hinweis und Fehlermeldung sind technisch mit dem Feld verknüpft, nicht nur visuell daneben platziert.

  • 02

    Vorhersagbares Verhalten

    Felder verhalten sich, wie es Nutzer:innen erwarten. Keine spontanen Sprünge im Fokus, kein automatisches Absenden, keine verschwundenen Daten beim Rückwärts-Navigieren.

  • 03

    Gute Fehlerkommunikation

    Wenn etwas schiefgeht, ist sofort klar: welches Feld, was war falsch, was muss anders sein. Die Information erreicht auch Screenreader-Nutzer:innen und ist nicht nur farblich markiert.

Die acht Elemente eines Formulars

Die folgenden acht Bausteine kommen in fast jedem Formular vor. Pro Element bekommst du eine kurze Erklärung, die wichtigsten WCAG-Bezüge und die typische Stolperfalle.

01

Label – das wichtigste Element

Ein Label ist die Beschriftung eines Eingabefelds. Es muss programmatisch mit dem Feld verbunden sein – nicht nur räumlich daneben. Diese Verknüpfung passiert über das for -Attribut am Label, das auf die id des Felds zeigt. Alternativ kannst du das Feld in das Label hineinstecken – auch das verknüpft beide.

Wer ein Feld per Screenreader erreicht, hört dann den Label-Text vorgelesen und weiß, was einzutragen ist. Wer das Label per Mausklick antippt, springt automatisch ins Feld – das vergrößert die Klickfläche und hilft besonders Menschen mit motorischen Einschränkungen.

WCAG 1.3.1 · 3.3.2 · 4.1.2
02

Eingabefelder mit dem richtigen Typ

HTML kennt eine ganze Reihe von Eingabe-Typen jenseits des reinen Text-Felds: email , tel , url , date , number . Diese Typen tun zwei Dinge gleichzeitig: Sie signalisieren dem Browser eine Validierung, und sie sorgen auf Smartphones für die passende Bildschirm-Tastatur (Zahlen, E-Mail-Layout, Datums-Picker).

Ergänzend hilft das autocomplete -Attribut. Es verrät dem Browser und assistiven Technologien, welche Bedeutung ein Feld hat – etwa given-name , family-name , postal-code oder tel . Das ist nicht nur Komfort, sondern ein WCAG-AA-Kriterium (1.3.5).

WCAG 1.3.5
03

Pflichtfeld-Kennzeichnung

Welche Felder ausgefüllt werden müssen, muss sichtbar und für Screenreader hörbar sein. Im HTML setzt du dazu das required -Attribut – damit erfährt der Screenreader, dass das Feld Pflicht ist, und der Browser blockiert das Absenden bei leeren Pflichtfeldern.

Visuell wird Pflicht meist mit einem Sternchen markiert. Wichtig: Das Sternchen am Label sollte für Screenreader ausgeblendet sein ( aria-hidden="true" ), weil required die Information bereits transportiert – sonst hörst du an jedem Pflichtfeld doppelt „Stern erforderlich". Ergänzend sollte irgendwo am Anfang des Formulars stehen, was das Sternchen bedeutet.

WCAG 3.3.2 · 4.1.2
04

Hilfstexte und Hinweise

Hinweise zu einem Feld – etwa „Bitte mit Vorwahl angeben", „Mindestens acht Zeichen" – müssen mit dem Feld verknüpft sein. Sonst hören Screenreader-Nutzer:innen den Hinweis nicht oder erst nach dem Feld, wenn es zu spät ist.

Das Standardwerkzeug dafür ist aria-describedby am Eingabefeld. Das Attribut bekommt die id des Hinweis-Elements als Wert. Beim Fokussieren des Felds liest der Screenreader Label und Hinweis nacheinander vor. Das funktioniert gleich gut für Hilfstexte und für Fehlermeldungen.

WCAG 3.3.2
05

Gruppierung mit Fieldset und Legend

Wenn mehrere Felder logisch zusammengehören – etwa eine Adresse, eine Gruppe von Radio-Buttons, eine Reihe von Checkboxen – fasse sie mit <fieldset> zusammen und gib der Gruppe mit <legend> eine Überschrift.

Das ist besonders wichtig bei Radio-Buttons und Checkbox-Gruppen, weil einzelne Labels nicht reichen: Eine Radio-Frage wie „Versandart" muss sowohl mit den Optionen verbunden sein (Express, Standard, Abholung) als auch als Gesamtfrage erkennbar. Genau das leistet Legend in Verbindung mit dem umgebenden Fieldset.

WCAG 1.3.1 · 3.3.2
06

Auswahlfelder – Radio, Checkbox, Select

Drei native Bausteine, drei klare Einsatzbereiche: Radio-Buttons für eine Auswahl aus mehreren sich ausschließenden Optionen. Checkboxen für unabhängige Ja/Nein-Entscheidungen oder Mehrfachauswahl. Select-Listen für längere Listen, in denen eine Option ausgewählt wird.

Die Faustregel: Bevorzuge native HTML-Elemente. Eigene Selects, die per JavaScript aus <div> -Konstruktionen nachgebaut werden, müssen sehr sorgfältig zugänglich gemacht werden – inklusive Tastatur-Navigation, ARIA-Rollen, Fokus-Management. Das gelingt selten gut. Die native Variante erfüllt diese Anforderungen ohne Zusatzaufwand.

WCAG 1.3.1 · 2.1.1 · 4.1.2
07

Buttons mit klarer Beschriftung

Der Absende-Button braucht eine Beschriftung, die die Aktion beschreibt. „Absenden" geht, „Nachricht senden" ist besser, „Termin verbindlich buchen" ist am klarsten. Vermeide nichtssagende Beschriftungen wie „OK" oder „Weiter" – sie verraten der Person nicht, was passieren wird, und werden außerhalb des Kontexts unverständlich.

Technisch nutze ein echtes <button type="submit"> oder <input type="submit"> . Beide sind nativ tastaturbedienbar, werden von Screenreadern als Schaltflächen angekündigt und übernehmen das Absende-Verhalten automatisch. Ein gestyltes <div> mit Klick-Handler kann das alles nicht.

WCAG 2.4.6 · 4.1.2
08

Fehlermeldungen

Wenn ein Feld nicht korrekt ausgefüllt ist, muss die Fehlermeldung drei Dinge leisten: Sie muss auffallen, sie muss verständlich erklären, was zu korrigieren ist, und sie muss mit dem Feld verknüpft sein, damit Screenreader-Nutzer:innen sie hören.

Die technische Verknüpfung läuft über zwei Attribute am Eingabefeld: aria-invalid="true" signalisiert „dieses Feld ist gerade fehlerhaft", und aria-describedby verweist auf die id des Fehlermeldungs-Elements. Sobald die Person das Feld fokussiert, liest der Screenreader Label und Fehlertext nacheinander vor. Wichtig: Setze aria-invalid erst nach der Validierung, nicht von Anfang an – sonst hörst du beim ersten Tab durch das leere Formular „ungültig, ungültig, ungültig".

Visuell sollte die Fehlermeldung nicht ausschließlich farblich markiert sein. Ein farbiger Rahmen am Feld in Kombination mit einem Icon und Klartext ist eine zuverlässige Lösung – sie funktioniert auch für Menschen mit Farbsehschwäche.

WCAG 1.4.1 · 3.3.1 · 3.3.3 · 4.1.3

WCAG-Pflichten und Best Practices im Überblick

Die folgende Tabelle ordnet die wichtigsten WCAG-Kriterien für Formulare ein: was rechtlich Pflicht ist (BFSG, BITV verweisen über EN 301 549 auf WCAG 2.1 AA, demnächst 2.2 AA) und was darüber hinaus gute Praxis ist.

WCAG-Kriterien für Formulare nach Konformitätsstufe
Kriterium Was es fordert Stufe
1.3.1 Info und Beziehungen Strukturelle Beziehungen (Label zu Feld, Gruppen) sind programmatisch erkennbar. A
1.3.5 Eingabezweck Häufige Felder (Name, E-Mail, Adresse) sind mit autocomplete ausgezeichnet. AA
1.4.1 Verwendung von Farbe Information (z. B. Fehler) wird nicht nur durch Farbe vermittelt. A
2.4.6 Überschriften und Beschriftungen Labels beschreiben Thema oder Zweck eindeutig. AA
3.3.1 Fehlererkennung Fehler werden erkannt und in Textform beschrieben. A
3.3.2 Beschriftungen oder Anweisungen Eingabefelder haben sichtbare Beschriftungen oder Anleitungen. A
3.3.3 Fehler-Korrekturhinweis Bei erkanntem Fehler wird ein Vorschlag zur Korrektur angeboten. AA
3.3.4 Fehlervermeidung Bei rechtlichen, finanziellen oder Daten-Aktionen: Rücknahme oder Bestätigung möglich. AA
3.3.7 Redundante Eingabe (neu in 2.2) Bereits eingegebene Daten müssen im selben Vorgang nicht erneut eingetippt werden. A
3.3.8 Barrierefreie Authentifizierung (neu in 2.2) Login darf kein kognitives Rätsel sein (keine CAPTCHA-Pflicht ohne Alternative, Passwort-Manager erlauben). AA
4.1.2 Name, Rolle, Wert Alle Bedienelemente haben einen erreichbaren Namen, eine Rolle und einen Wert. A
4.1.3 Statusmeldungen Erfolgsmeldungen, Fehlerzusammenfassungen werden Screenreadern angekündigt (Live Regions). AA

Häufige Fehler – und wie du sie vermeidest

Die folgenden fünf Muster begegnen mir in Audits immer wieder. Sie sind nicht selten – sie sind die Regel. Wenn du nur diese fünf vermeidest, hast du den größten Teil typischer Formular-Barrieren ausgeräumt.

Placeholder als Label verwenden

Der graue Text im leeren Feld („Ihre E-Mail-Adresse") verschwindet, sobald jemand tippt. Wer beim Korrigieren noch wissen muss, was in das Feld gehört, hat Pech – das Label ist weg. Zudem ist der Kontrast von Placeholder-Text in den meisten Browsern zu schwach (WCAG 1.4.3) und Screenreader behandeln Placeholder uneinheitlich.

Stattdessen Ein sichtbares Label über oder neben dem Feld. Placeholder kann zusätzlich ein Format-Beispiel zeigen („01.06.2026"), ersetzt aber kein Label.

Fehler nur durch Farbe markieren

Ein roter Rahmen am Feld reicht nicht. Wer eine Rot-Grün-Sehschwäche hat, sieht keinen Unterschied zum normalen Rahmen. Wer einen Screenreader nutzt, sieht ihn ohnehin nicht. Ohne Text-Erklärung bleibt unklar, was korrigiert werden soll.

Stattdessen Farbiger Rahmen plus Icon plus Klartext-Fehlermeldung, technisch verknüpft über aria-describedby und aria-invalid .

Automatisches Verhalten ohne Warnung

Felder, die nach drei Zeichen automatisch ins nächste Feld springen (z. B. bei Code-Eingaben). Selects, die beim Auswählen sofort absenden. Modale Dialoge, die spontan auftauchen. Solche Automatismen brechen die Erwartung – und stoßen Screenreader und Tastatur-Nutzer:innen besonders hart.

Stattdessen Felder reagieren nur auf Tastatureingabe, nicht auf Fokus-Wechsel. Aktionen werden durch einen expliziten Button ausgelöst, nicht durch Nebeneffekte (WCAG 3.2.1, 3.2.2).

CAPTCHAs ohne Alternative

„Wählen Sie alle Bilder mit Ampeln aus" ist für blinde Menschen nicht lösbar, für Menschen mit kognitiven Einschränkungen anstrengend bis unmöglich. Audio-Alternativen sind oft kaum verständlich. Mit WCAG 2.2 (Kriterium 3.3.8) ist Login per CAPTCHA als einziger Weg nicht mehr konform – es muss eine Alternative geben.

Stattdessen Honeypot-Felder (versteckte Felder, die nur Bots ausfüllen), Zeitprüfung, serverseitige Bot-Erkennung oder moderne Lösungen wie hCaptcha mit Privacy-Pass. Wenn ein CAPTCHA wirklich nötig ist, mindestens eine alternative Methode anbieten.

Custom-Selects statt nativem <select>

Aus optischen Gründen werden Auswahllisten oft als <div> -Konstruktionen nachgebaut. Das sieht schöner aus, ist aber technisch sehr aufwendig zugänglich zu machen: ARIA-Rollen, Tastatur-Navigation, Fokus-Management, Such-Funktion per Tastatur. In den meisten Fällen ist mindestens eines davon kaputt.

Stattdessen Native <select> mit CSS gestaltet. Wenn das nicht reicht: bewährte, dokumentiert getestete Bibliotheken nutzen (z. B. Combobox-Pattern aus dem ARIA Authoring Practices Guide). Eigene Implementierung nur, wenn dafür wirklich Ressourcen für Tests mit echten Hilfstechnologien eingeplant sind.

Spezialfälle kurz angerissen

Drei Themen, die jeweils einen eigenen Artikel verdienen würden – hier die Kurzfassung:

Mehrseitige Formulare

Bei langen Formularen, die über mehrere Seiten verteilt sind: eine Fortschrittsanzeige am Anfang („Schritt 2 von 4") gibt Orientierung. Eingaben aus früheren Schritten dürfen beim Zurückspringen nicht verlorengehen. WCAG 3.3.7 (neu in 2.2) verbietet ausdrücklich, bereits eingegebene Daten im selben Vorgang noch einmal abzufragen – „Versandadresse = Rechnungsadresse" muss als Checkbox vorhanden sein.

Live-Validierung

Validierung während der Eingabe ist verlockend, aber heikel. Wer beim ersten Tippen schon „ungültig" zu hören bekommt, fühlt sich angemeckert. Besser: Validierung beim Verlassen des Felds ( blur -Event) oder beim Absenden. Wenn doch live validiert wird, dann nur positiv bestätigend („Passwort stark genug") und Fehler erst nach erstmaliger Eingabe melden.

Barrierefreie Authentifizierung

WCAG 3.3.8 fordert seit Version 2.2, dass der Login-Vorgang keine kognitive Funktion abfragt (Erinnerung, Rätsel-Lösung), für die es keine Alternative gibt. Konkret heißt das: Passwort-Manager müssen funktionieren (kein Verbot von Kopieren-und-Einfügen ins Passwortfeld), und reine CAPTCHA-basierte Logins sind nicht mehr zulässig. Magic-Links per E-Mail, biometrische Anmeldung, Passkeys oder OAuth-Single-Sign-on sind gute Alternativen.