Route changes
After navigation without a page load, the new view needs a meaningful title and the focus needs a sensible new place.
Applies to this website and is saved in your browser.
Good to know: this website is built to work well without these switches. They are personal preferences only: they do not change the code and do not replace accessibility, even though overlay widgets promise that. Why overlays do not help · Our accessibility statement
Tip: zoom (Ctrl/Cmd and +), contrast and read-aloud can also be set in your browser and operating system, then for every website.
Plain EnglishServices · Web apps
A web app changes constantly while people use it: panels open, lists update, routes switch without a page load. That is where accessibility breaks. Our reviewer tests your app the way keyboard and screen reader users work with it.

Our scanner sees what is reachable without logging in, and it never clicks or submits anything. That is deliberate: we do not change data on your system. For a web app this means the scan covers the public entry points, and the real product is tested by a person.
Before we start, we agree the scope: which journeys, which roles and which app version. You give us a test account in a test or staging environment. That exact scope and version appear on the certificate.
Single-page apps fail in typical ways: focus that stays on a button that has just disappeared, a new view that no screen reader announces, a custom dropdown that looks fine and says nothing. These are the things we look for first.
After navigation without a page load, the new view needs a meaningful title and the focus needs a sensible new place.
Focus moves into the dialog, stays there while it is open, and returns to the trigger when it closes. Escape closes it.
Search results, notifications, autosave and inline validation are announced as status messages without moving focus.
Tabs, menus, comboboxes, sliders and data grids follow the expected keyboard patterns and expose the right roles and states.
Data grids keep their headers for screen readers. Charts have the same information available as text.
Content that appears on hover or focus can be dismissed, stays while the pointer moves over it, and does not cover what you are working on.
Focus order must follow the meaning of the interface, also after content is added, removed or moved.
Rich text editors, embedded maps and modal dialogs must never trap the keyboard.
Name, role and state of every control must be available to assistive technology, for example “Filters, collapsed, button”.
Status messages such as “Changes saved” must be announced without the user losing their place.
Tooltips and hover cards must be dismissible, hoverable and persistent.
In multi-step flows, information already entered must not be asked for again unless it is essential.
Journeys, user roles and the app version to be tested, agreed in writing.
A test account with dummy data in a test or staging environment. We never need production data.
The reviewer works through each journey with keyboard and screen reader (NVDA or VoiceOver) and decides all 55 criteria.
Each finding names the component, the criterion, the location and a fix hint, so your team can fix it once in the component library.
A test environment, a test account for each role in scope, a short description of the key journeys and the version number. If parts of the app are behind a VPN or IP allowlist, tell us early: our scanner cannot reach them, and we agree with you before the audit whether and how the reviewer can get access.
No. We test the result in the browser, whether it is built with React, Vue, Angular, Svelte or plain JavaScript. The fix hints describe what the HTML and behaviour must be.
No. Monitoring uses the same scanner, which never logs in. It watches your public pages. For the logged-in product, plan a new audit when the interface changes significantly.
Products, tenders, apps
Findings with code fixes
See and practise focus
All 55 criteria, openly described