Skip to content
2.1.1 · Level A · WCAG 2.0 · Operable → Keyboard Accessible

Keyboard

Every interactive control — links, buttons, menus, custom widgets — is operable using only a keyboard.

Why it matters

Screen reader users, switch-device users, and many motor-impaired users never touch a mouse. A <div onclick> that looks like a button but has no keyboard handler and isn't in the tab order simply does not exist for them.

Automatically detected

axe-core flags misuse of positive tabindex values, but a <div> with a click handler and no role or keyboard binding isn't reliably catchable by static analysis — whether the resulting tab sequence actually works end-to-end needs the tab-order trace from the judgement pass.

Related axe-core rules: tabindex

Fails

<div class="dropdown-toggle" onclick="toggleMenu()">Options</div>

A <div> with a click handler has no keyboard event, no focusability, and no role — pressing Tab skips right past it.

Passes

<button type="button" aria-expanded="false" onclick="toggleMenu()">Options</button>

A real <button> is natively focusable, fires on both Enter and Space, and exposes its expanded state to assistive technology.

Openwell finds violations like this one across your whole site, clusters them by the component that caused them, and generates a fix that's re-validated before you see it.

Scan your site free
WCAG 2.1.1 Keyboard — what it requires and how to fix it — Openwell