Live, no reload Switch language
28 languages available. The panel re-renders live via
AccessibilityWidget.setLocale().
One click activates a curated set of features via
AccessibilityWidget.applyProfile().
No matching profile?
Every change is persisted in localStorage and applied before the first
render — no FOUC.
28 languages available. The panel re-renders live via
AccessibilityWidget.setLocale().
Clears the localStorage key and reloads the page.
This text reacts to every widget setting. Toggle font size, contrast or reading aids and watch it change here.
Since 28 June 2025, the German Accessibility Strengthening Act (BFSG) requires nearly all B2C providers to make their digital offerings accessible.
A widget never replaces clean code. But a well-built preference layer is a real win for users — and a visible commitment from the operator.
This dot pulses until you enable pause animations in the widget.
This page serves automated scanners (axe-core, pa11y, Lighthouse, Playwright-AxE) as a target. In a real product these barriers would be fixed — here they exist as stable test cases:
<img> without an alt attribute
<input> without a labelclick here for more.
Preview port for the scanner: http://localhost:4173.