Produktfilter barrierefrei: Filter, Sortierung und Suche im Shop
Veröffentlicht am 25. Oktober 2026
Ein Produktfilter ist barrierefrei, wenn sich jede Facette, der Preisbereich, die Sortierung und die Suche allein mit der Tastatur bedienen lassen, jedes Bedienelement einen Namen hat und ein Screenreader nach jeder Änderung die neue Trefferzahl ansagt, ohne dass der Fokus springt. Drei Stellen sind besonders leicht zu übersehen: Die Trefferzahl wird nicht angesagt (WCAG 4.1.3), der Fokus landet nach dem Filtern am Seitenanfang, und der Preisregler lässt sich nur ziehen (WCAG 2.5.7).
Welche Teile Ihr Shopsystem mitbringt und welche Sie über Theme und Apps selbst verantworten, erklärt Barrierefreier Onlineshop: was Shopsysteme leisten und was Sie selbst tun müssen. Dieser Artikel geht für Kategorieseite, Filter und Suche in die Tiefe: was die WCAG je Bauteil verlangen, wohin der Fokus nach dem Filtern gehört, wie Sie das Muster für Suchvorschläge umsetzen und wie Sie das Ganze selbst prüfen.
Warum Filter und Suche unter das BFSG fallen
Ein Onlineshop für Verbraucher ist eine „Dienstleistung im elektronischen Geschäftsverkehr“ nach § 1 Abs. 3 Nr. 5 BFSG. § 12 Nr. 3 BFSGV verlangt, dass Webseiten einschließlich der zugehörigen Online-Anwendungen „auf konsistente und angemessene Weise wahrnehmbar, bedienbar, verständlich und robust gestaltet werden“. Nach unserer Lesart gehören Filter, Sortierung und Suche dazu, denn ohne sie finden Kundinnen und Kunden in einem größeren Sortiment kein Produkt. Das gilt auch, wenn der Filter aus einer App oder einem Plugin kommt.
Was die WCAG je Bauteil verlangen
Die Tabelle ordnet jedem Bauteil der Kategorieseite die Kriterien zu, die dafür am wichtigsten sind. Alle genannten Kriterien gehören zur Stufe A oder AA. Wie die WCAG 2.2 insgesamt auf einen Shop anzuwenden sind, zeigt WCAG 2.2 im Onlineshop.
| Bauteil | Was gelten muss | WCAG |
|---|---|---|
| Filtergruppe (Farbe, Größe, Marke) | Gruppe hat eine Überschrift oder Legende, jede Option ein Label | 1.3.1, 3.3.2 |
| Auf- und zuklappbare Gruppe | Ist ein Knopf und sagt, ob sie offen oder geschlossen ist | 4.1.2 |
| Checkbox, Farbfeld | Per Tastatur auswählbar, Zustand „ausgewählt“ wird angesagt, Farbfeld hat einen Namen | 2.1.1, 4.1.2, 1.1.1 |
| Ausgewählter Filter | Nicht nur an der Farbe erkennbar, sondern auch an Haken oder Text | 1.4.1 |
| Rahmen von Checkbox und Regler | Mindestens 3:1 gegen den Hintergrund | 1.4.11 |
| Klickfläche | Mindestens 24 mal 24 CSS-Pixel oder genug Abstand | 2.5.8 |
| Preisregler | Auch ohne Ziehen und per Tastatur einstellbar | 2.5.7, 2.1.1 |
| Trefferzahl | Wird angesagt, ohne den Fokus zu bewegen | 4.1.3 |
| Filtern und Sortieren | Löst keinen Kontextwechsel aus, ohne dass vorher darauf hingewiesen wird | 3.2.2 |
| Fokus nach dem Filtern | Bleibt an einer sinnvollen Stelle | 2.4.3 |
| Klebende Filterleiste, Cookie-Banner | Verdecken das fokussierte Element nicht ganz | 2.4.11 |
| Filter auf dem Smartphone | Bei 320 CSS-Pixel Breite ohne seitliches Scrollen bedienbar | 1.4.10 |
| Suchfeld | Hat ein sichtbares Label, nicht nur einen Platzhalter | 3.3.2, 4.1.2 |
Entscheidungstabelle: sofort filtern oder mit „Anwenden“
Die wichtigste Bauentscheidung ist, wann der Filter greift. WCAG 3.2.2 verbietet, dass das Ändern einer Einstellung „automatically cause a change of context“, es sei denn, Nutzer wurden vorher darauf hingewiesen. Das W3C stellt klar, dass eine bloße Inhaltsänderung kein Kontextwechsel sein muss; ein Fokuswechsel oder ein neues Fenster ist einer. Nach unserer Lesart ist ein kompletter Neuladen der Seite, nach dem der Fokus am Seitenanfang steht, ein Kontextwechsel.
| Wie Ihr Filter arbeitet | Bewertung nach unserer Lesart | Was Sie tun |
|---|---|---|
| Checkbox anklicken, Ergebnisse aktualisieren sich auf derselben Seite, Fokus bleibt auf der Checkbox | Gut, wenn die Trefferzahl angesagt wird | Statusmeldung einbauen (Abschnitt unten) |
| Checkbox anklicken, die ganze Seite lädt neu, Fokus springt nach oben | Kontextwechsel ohne Vorwarnung, Tastaturnutzer verlieren bei jeder Option ihren Platz | Auf Aktualisieren ohne Neuladen umstellen oder einen Knopf „Filter anwenden“ ergänzen |
| Mehrere Optionen wählen, dann „Anwenden“ drücken | Gut; der Kontextwechsel folgt auf eine bewusste Aktion | Nach dem Anwenden Fokus auf die Ergebnisüberschrift setzen |
| Filter im Dialog auf dem Smartphone, Knopf „24 Produkte anzeigen“ | Gut, wenn der Dialog den Fokus hält und beim Schließen zurückgibt | Dialog nach dem APG-Muster bauen (unten) |
| Ergebnisse aktualisieren sich bei jedem Schritt im Preisregler | Bei Tastaturbedienung lädt jeder Pfeiltastendruck neu, die Ansage wiederholt sich ständig | Erst nach dem Loslassen oder nach einer kurzen Pause aktualisieren, besser zwei Zahlenfelder mit „Anwenden“ |
Für kleine Shops ist der Knopf „Filter anwenden“ nach unserer Einschätzung die einfachste Lösung: Er funktioniert auch dann, wenn Ihr Theme die Seite neu lädt.
Filter, Facetten und Preisregler
Filtergruppen und Checkboxen
Jede Facette ist eine Gruppe von Checkboxen, die zu einem Merkmal gehören. Das W3C empfiehlt in der Technik H71, solche Gruppen mit fieldset und legend auszuzeichnen: „Grouping controls is most important for related radio buttons and checkboxes.“ Ein Screenreader sagt dann zum Beispiel „Farbe, Gruppe, Rot, Kontrollkästchen, nicht aktiviert“ statt nur „Rot“.
- Echte Checkboxen verwenden. Ein natives
input type="checkbox"mitlabelbringt Tastaturbedienung mit der Leertaste und den Zustand „aktiviert“ mit. Nachgebaute Checkboxen ausdivoder Links brauchen all das von Hand, und genau dabei geht leicht etwas verloren. - Label klickbar machen. Wenn das ganze Label die Checkbox umschaltet, wird die Klickfläche groß genug für 2.5.8.
- Farbfelder benennen. Ein farbiges Quadrat ohne Text ist für einen Screenreader leer. Geben Sie jedem Farbfeld den Farbnamen als Label, zum Beispiel „Olivgrün“, und zeigen Sie die Auswahl zusätzlich mit einem Haken (1.4.1).
- Zahlen in Klammern mitlesen lassen. „Rot (12)“ ist als Label in Ordnung. Ist eine Option ohne Treffer ausgegraut, sollte sie entweder deaktiviert und so angesagt werden oder ganz fehlen.
Auf- und zuklappbare Filtergruppen
Zeigt Ihr Shop Facetten als zugeklappte Gruppen, ist das passende Muster die Disclosure im WAI-ARIA Authoring Practices Guide (APG): Die Überschrift der Gruppe ist ein Knopf, Enter und Leertaste klappen auf und zu, und „When the content is visible, the element with role button has aria-expanded set to true.“ Ein natives details mit summary leistet im Wesentlichen dasselbe ohne eigenes Skript.
Preisregler
Ein Regler mit zwei Griffen für Mindest- und Höchstpreis ist im APG als Multi-Thumb Slider beschrieben, mit einer Preisspanne als Beispiel. Jeder Griff ist ein eigenes Element mit der Rolle slider, ist einzeln per Tab erreichbar und braucht einen Namen wie „Mindestpreis“ und „Höchstpreis“. Laut Slider-Muster ändern Pfeiltasten den Wert um einen Schritt, Pos1 und Ende springen auf den kleinsten und größten Wert. Mit aria-valuetext sagt der Screenreader „50 Euro“ statt „50“.
Tastaturbedienung allein reicht nicht. Das W3C schreibt zu 2.5.7, dass ein Tastatur-Äquivalent dieses Kriterium nicht automatisch erfüllt; wer mit Maus, Finger oder Kopfmaus bedient, muss den Wert auch ohne Ziehen ändern können. Als Lösungen nennt das W3C einen Klick auf die Reglerschiene und ein Eingabefeld neben dem Regler.
Unsere Empfehlung: Zwei beschriftete Zahlenfelder „Preis von“ und „Preis bis“ mit einem Knopf „Anwenden“. Sie erfüllen 2.1.1 und 2.5.7 ohne Zusatzaufwand, funktionieren auf dem Smartphone und lassen sich exakt eingeben. Den Regler können Sie als Zusatz daneben behalten.
Aktive Filter und Zurücksetzen
Zeigt Ihr Shop die gewählten Filter oberhalb der Ergebnisse als Chips mit einem Kreuz, braucht das Kreuz einen Namen, der den Filter nennt, zum Beispiel „Filter Rot entfernen“; ein bloßes „x“ oder „Schließen“ reicht nicht (4.1.2). Ergänzen Sie „Alle Filter zurücksetzen“ als echten Knopf.
Filter als Dialog auf dem Smartphone
Liegen die Filter auf kleinen Bildschirmen in einem Fenster, das über einen Knopf „Filter“ geöffnet wird, gilt dafür das Muster für modale Dialoge im APG: „When a dialog opens, focus moves to an element inside the dialog.“ Tab und Umschalt+Tab bleiben im Dialog, Escape schließt ihn, und beim Schließen kehrt der Fokus zum auslösenden Element zurück, es sei denn, ein anderes Ziel ist im Ablauf logischer. Der Schließen-Knopf braucht einen sichtbaren oder vorgelesenen Namen, und der Knopf „Ergebnisse anzeigen“ darf nicht von einer klebenden Leiste verdeckt sein (2.4.11).
Die Trefferzahl als Statusmeldung ansagen
Wer sieht, merkt sofort, dass aus 240 Produkten 18 geworden sind. Wer einen Screenreader nutzt, merkt nichts, solange der Shop die Änderung nicht ansagt. Genau dafür gibt es WCAG 4.1.3 Statusmeldungen: Statusmeldungen müssen sich so auszeichnen lassen, dass assistive Technologien sie „without receiving focus“ vorlesen. Das W3C nennt dort ausdrücklich Meldungen wie „18 results returned“ und „No results returned“ als Statusmeldungen. Die Ergebnisliste selbst ist laut W3C keine Statusmeldung; angesagt wird nur die kurze Zusammenfassung.
So setzen Sie das um:
- Einen Bereich mit
role="status"anlegen, zum Beispiel direkt über der Ergebnisliste. Laut der W3C-Technik ARIA22 muss dieser Bereich die Rolle schon haben, bevor die Meldung hineingeschrieben wird. Legen Sie ihn deshalb schon beim Laden der Seite an, zunächst leer. - Nach jeder Aktualisierung den Text ersetzen, etwa durch „18 Produkte gefunden“. Das W3C empfiehlt in ARIA22 zusätzlich
aria-atomic="true", damit der ganze Satz gelesen wird. - Den leeren Fall ansagen: „Keine Produkte gefunden. Entfernen Sie einen Filter.“ Ein stummes Nichts ist der schlimmste Fall.
- Zwischenzustände sparsam halten. „Lädt …“ und danach „18 Produkte gefunden“ ist in Ordnung; eine Ansage für jede einzelne Produktkachel ist es nicht.
Das gleiche Muster brauchen Sie im Warenkorb für „In den Warenkorb gelegt“; das beschreibt Barrierefreier Checkout.
Wohin der Fokus nach dem Filtern gehört
WCAG 2.4.3 verlangt eine Fokusreihenfolge, die Bedeutung und Bedienbarkeit erhält. Für Dialoge sagt das W3C dort, dass der Fokus beim Schließen zum auslösenden Knopf oder zum Element danach zurückkehrt. Für Filter gibt es keine eigene Regel; die folgenden Ziele sind unsere Empfehlung auf dieser Grundlage.
| Situation | Wohin der Fokus geht |
|---|---|
| Checkbox gewählt, Ergebnisse aktualisieren sich ohne Neuladen | Bleibt auf der Checkbox; die Trefferzahl wird über die Statusmeldung angesagt |
| Checkbox gewählt, Seite lädt trotzdem neu | Zurück auf dieselbe Checkbox; besser auf Aktualisieren ohne Neuladen umstellen |
| Knopf „Filter anwenden“ gedrückt | Auf die Ergebnisüberschrift, zum Beispiel „18 Produkte“ |
| Dialog „Filter“ auf dem Smartphone geschlossen | Auf den Knopf „Filter“ oder auf die Ergebnisüberschrift |
| Filter-Chip entfernt, der Chip verschwindet | Auf den nächsten Chip; ist keiner mehr da, auf die Ergebnisüberschrift |
| „Alle Filter zurücksetzen“ | Auf die Ergebnisüberschrift |
| Sortierung geändert | Bleibt auf dem Auswahlfeld |
| „Mehr laden“ gedrückt | Auf das erste neu geladene Produkt |
Verschwindet das fokussierte Element, ohne dass Ihr Shop den Fokus neu setzt, kann der Fokus verloren gehen, und die Tab-Reihenfolge beginnt je nach Browser wieder oben. Wer mit der Tastatur filtert, muss dann wieder durch Kopfbereich und Navigation tabben. Damit eine Überschrift den Fokus per Skript annehmen kann, braucht sie tabindex="-1"; in die normale Tab-Reihenfolge kommt sie dadurch nicht.
Sortierung
Ein natives select mit dem Label „Sortieren nach“ ist die robusteste Lösung. Mit der Tastatur wechseln Nutzer darin per Pfeiltaste die Optionen. Lädt Ihr Shop die Seite schon bei jeder Pfeiltaste neu, landet der Nutzer bei der ersten Option nach unten auf einer neuen Seite, ohne die übrigen gesehen zu haben. Nach unserer Lesart ist das ein Kontextwechsel im Sinne von 3.2.2. Abhilfe: entweder die Liste ohne Neuladen umsortieren und den Fokus auf dem Feld lassen, oder einen Knopf „Sortieren“ daneben setzen.
Ein selbstgebautes Aufklappmenü statt select muss Tastatur, Rolle und Zustand selbst liefern. Wenn Ihr Theme so eines verwendet, prüfen Sie es besonders gründlich mit dem Test unten.
Suchfeld mit Vorschlägen
Das Suchfeld braucht ein Label, das ein Screenreader vorliest, und ein sichtbares Zeichen, wofür es da ist. Ein Platzhalter wie „Suchen …“ verschwindet beim Tippen; nach unserer Lesart reicht er deshalb als Beschriftung nach 3.3.2 nicht aus. Die Lupe als Absende-Knopf braucht den Namen „Suchen“. Liegt das Formular in einem search-Element oder hat es role="search", finden Screenreader-Nutzer es über die Liste der Seitenbereiche.
Zeigt die Suche beim Tippen Vorschläge an, ist das eine Combobox nach dem Combobox-Muster im APG. Das passende Beispiel dort heißt „Editable Combobox With List Autocomplete“. Die Kernpunkte:
- Rollen und Zustände. Das Eingabefeld hat
role="combobox",aria-expandedzeigt, ob die Vorschlagsliste offen ist, undaria-controlsverweist auf die Liste.aria-autocomplete="list"sagt, dass Vorschläge erscheinen. - Fokus bleibt im Feld. Laut APG gilt: „DOM Focus is maintained on the combobox.“ Der markierte Vorschlag wird über
aria-activedescendantangesagt, so dass Nutzer weitertippen können. - Tastatur. Pfeil nach unten geht in die Vorschläge, Enter übernimmt den markierten Vorschlag, Escape schließt die Liste und lässt den Fokus im Feld. Ohne markierten Vorschlag sollte Enter nach unserer Empfehlung die Suche abschicken.
- Anzahl der Vorschläge ansagen. Nach unserer Empfehlung sagt ein Statusbereich „5 Vorschläge“, sobald die Liste erscheint, und „Keine Vorschläge“, wenn sie leer bleibt (4.1.3).
- Produktbilder in Vorschlägen. Steht der Produktname schon als Text daneben, ist das Bild dekorativ und bekommt ein leeres
alt.
Auf der Ergebnisseite nennt die erste Überschrift Suchbegriff und Anzahl, etwa „18 Ergebnisse für Rucksack“. Bei null Treffern zeigen Sie Hilfen an: Schreibweise prüfen, weniger Begriffe, beliebte Kategorien.
Kommt Ihre Suche aus einer App oder einem externen Dienst, gelten dieselben Anforderungen. Fragen Sie den Anbieter, ob die Vorschlagsliste nach dem APG-Combobox-Muster gebaut und mit Screenreadern getestet ist, und lassen Sie sich das schriftlich bestätigen.
Mehr laden, Seitenzahlen, endloses Scrollen
| Variante | Was zu beachten ist |
|---|---|
| Seitenzahlen | In einem nav-Bereich mit dem Namen „Seiten“; die aktuelle Seite mit aria-current="page" (WAI-ARIA 1.2); Pfeil-Links mit Namen wie „Nächste Seite“ statt nur „›“ |
| Knopf „Mehr laden“ | Ein echter Knopf; danach Fokus auf das erste neue Produkt und eine Statusmeldung wie „24 weitere Produkte geladen, 48 von 240“ |
| Endloses Scrollen | Nach unserer Lesart problematisch: Tastaturnutzer erreichen Fußzeile, Impressum und Barrierefreiheitserklärung kaum, weil beim Tabben ständig neue Produkte nachladen. Bieten Sie zusätzlich „Mehr laden“ oder Seitenzahlen an |
Behalten Sie die Filter in der Adresse der Seite (zum Beispiel ?farbe=rot). Dann führen der Zurück-Knopf und ein geteilter Link wieder zur selben Auswahl, und Nutzer müssen nach dem Besuch einer Produktseite nicht neu filtern.
So testen Sie Ihre Filter selbst
Sie brauchen dafür keine Spezialsoftware, nur Ihren Browser und einen Screenreader. Eine allgemeine Anleitung zum Tastaturtest finden Sie in Website auf Tastaturbedienbarkeit testen.
- Nur mit der Tastatur. Maus weglegen, die Kategorieseite öffnen und mit Tab bis zu den Filtern gehen. Eine Gruppe aufklappen, eine Checkbox mit der Leertaste wählen. Ist der Fokus jederzeit sichtbar? Steht er danach noch an derselben Stelle?
- Preis einstellen. Den Preisbereich mit Tab und Pfeiltasten ändern, dann mit der Maus nur per Klick, ohne zu ziehen.
- Sortieren. Das Sortierfeld mit Tab erreichen und mit den Pfeiltasten durch alle Optionen gehen. Lädt die Seite schon bei der ersten Pfeiltaste neu?
- Screenreader einschalten, etwa NVDA unter Windows oder VoiceOver auf dem Mac oder iPhone. Einen Filter wählen. Hören Sie die neue Trefferzahl? Hören Sie bei einem Filter ohne Treffer, dass nichts gefunden wurde?
- Suche. „Ruck“ ins Suchfeld tippen. Werden Vorschläge angesagt? Mit Pfeil nach unten einen wählen, mit Enter übernehmen, mit Escape schließen.
- Smartphone-Breite. Browserfenster auf etwa 320 Pixel verkleinern oder auf 400 Prozent zoomen, Filterdialog öffnen, mit Tab durchgehen. Bleibt der Fokus im Dialog? Kommt er beim Schließen zurück?
- Mehr laden. Den Knopf drücken. Wohin springt der Fokus?
Typische Fehler und ihre Behebung
| Fehler | WCAG | Behebung | Wer behebt |
|---|---|---|---|
Filteroptionen sind Links oder div ohne Rolle und Zustand | 4.1.2 | Native Checkboxen mit Label | Theme, Filter-App |
| Trefferzahl ändert sich nur sichtbar | 4.1.3 | Bereich mit role="status", der schon beim Laden der Seite da ist | Theme, Filter-App |
| Fokus springt nach jedem Filter an den Seitenanfang | 2.4.3, 3.2.2 | Aktualisieren ohne Neuladen oder Knopf „Anwenden“ | Theme, Filter-App |
| Preisregler nur per Ziehen bedienbar | 2.5.7, 2.1.1 | Zwei Zahlenfelder ergänzen | Theme, Filter-App |
| Farbfelder ohne Namen | 1.1.1, 4.1.2 | Farbname als Label | Sie (Merkmalsnamen), Theme |
| Gewählter Filter nur farbig hervorgehoben | 1.4.1 | Haken oder Text „ausgewählt“ | Theme |
| Hellgraue Checkbox-Rahmen | 1.4.11 | Rahmenfarbe mit mindestens 3:1 | Sie (Theme-Einstellungen) |
| Suchfeld nur mit Platzhalter beschriftet | 3.3.2 | Sichtbares Label oder dauerhaft sichtbare Lupe mit Namen | Theme |
| Suchvorschläge nicht per Pfeiltaste erreichbar | 2.1.1 | Combobox nach APG | Theme, Such-App |
| Filterdialog auf dem Smartphone lässt den Fokus hinaus | 2.4.3 | Dialog nach APG-Muster | Theme |
| Klebende Leiste verdeckt den fokussierten Filter | 2.4.11 | Abstand beim Scrollen (scroll-padding) oder Leiste verkleinern | Theme |
Wie Sie Kontraste von Rahmen und Text messen, zeigt Kontrast nach WCAG prüfen. Kommt der Fehler aus einer Filter- oder Such-App, schicken Sie dem Anbieter die Zeile aus der Tabelle mit dem WCAG-Link; ein Overlay-Widget behebt keinen dieser Fehler im Code der App.
Ihr nächster Schritt
Der kostenlose Scan prüft ohne Anmeldung Ihre Startseite, eine Produktseite und den Warenkorb automatisch gegen die WCAG-Regeln und zeigt, was zuerst behoben werden sollte. Ein automatischer Scan findet nur einen Teil der Barrieren: Ob die Trefferzahl angesagt wird, wohin der Fokus nach dem Filtern springt und ob die Suchvorschläge per Tastatur funktionieren, prüfen Sie mit dem Test oben selbst von Hand.
Dieser Ratgeber ist keine Rechtsberatung. Im Zweifel klären Sie Ihren Fall mit der Bundesfachstelle Barrierefreiheit oder einer Anwältin oder einem Anwalt.
Stand: 25.10.2026. Quellen gelesen am 25.10.2026.