Skip to main content
Perceivly: Perceivly home

2.1.1 Keyboard

Level A · added in WCAG 2.0

Everything a user can do with a mouse must also work with a keyboard alone, without needing exact timing between keystrokes. The only exception is a function that depends on the path of movement, such as freehand drawing.

Who it helps

Many blind people, people with tremors and others who cannot use a mouse rely on the keyboard. Switch devices and voice input also act like a keyboard.

How to meet it

Examples

Fails:A clickable div cannot be reached with Tab or activated with Enter or Space
<div class="btn" onclick="addToCart()">Add to cart</div>
Fails:A submenu opens only on mouse hover
.nav .submenu { display: none; }
.nav li:hover .submenu { display: block; }
Passes:A native button is focusable and works with Enter and Space
<button type="button" class="btn" onclick="addToCart()">Add to cart</button>
Passes:The submenu also opens when focus moves inside its list item
.nav .submenu { display: none; }
.nav li:hover .submenu,
.nav li:focus-within .submenu { display: block; }

Can a scanner detect this?

Partly

Automated tools find a few specific problems: scrollable regions that cannot get focus, frames blocked with tabindex="-1", and server-side image maps. They cannot tell which elements have click handlers but no keyboard support. Test every task with the keyboard yourself.

axe-core rules that test it

Common mistakes

Official W3C explanation of 2.1.1

Check your own page

See which automated WCAG checks your page fails, with the failing elements and how to fix them.

Enter a page address, for example example.com/shop.

Reviewed November 2, 2026