Back to reviews and guides

WCAG 2.1.3 Keyboard (No Exception): What AAA Keyboard Accessibility Means

WCAG 2.1.3 Keyboard (No Exception) describes a strict keyboard accessibility expectation: every function must be reachable and operable without a pointer. This guide lists the behaviours to test, gives a practical keyboard testing checklist, common failures with fixes, and implementation patterns that work.

WCAG 2.1.3 Keyboard (No Exception): quick definition

WCAG 2.1.3 Keyboard (No Exception) refers to the expectation that all functionality on a web page can be operated from a keyboard alone. The phrase is used by designers and auditors to describe a strict keyboard requirement often discussed at the AAA accessibility level. This article explains what that expectation means in practice and how to test for it.

Why strict keyboard access matters

Many people rely on keyboards or keyboard-like input. This includes people with motor disabilities, people who use screen readers, and anyone who cannot use a pointer device. If any feature is unusable from a keyboard, those people cannot complete tasks, use controls, or access content.

Scope: what “no exception” covers

  • All interactive controls: links, buttons, form fields, menus, and custom widgets
  • Modal dialogs, overlays and lightboxes
  • Embedded widgets such as maps or custom players
  • Actions implemented only by pointer gestures or drag operations
  • Keyboard shortcuts and modifier-key requirements

Key behaviours to expect from a keyboard-only interface

1. Every control is reachable

All interactive elements must receive keyboard focus. The Tab key or logical navigation keys should reach the element. Focus order must match visual reading order.

2. Every control is operable

Once focused, the control must be usable with keyboard keys. Typical activations include Enter or Space for buttons and links. Menus and custom widgets must accept Arrow keys or other logical keys where needed.

3. No keyboard traps

Keyboard focus must not become stuck inside an element. Users must be able to move focus away with standard keys such as Tab and Shift+Tab. If scripts move focus, they must provide a way back.

4. Visible focus

The focused element must have a clear visible indicator. The indicator must be sufficient for people with low vision to see where focus is.

5. Avoid exclusive modifier requirements

A control that requires a combination of modifier keys that are unavailable to some users is a failure. If a shortcut needs a modifier, ensure an alternative activation exists.

Practical keyboard testing checklist

  1. Turn off the mouse. Use the keyboard only.
  2. Navigate the page using Tab and Shift+Tab. Check that each interactive element receives focus in a logical order.
  3. Activate each focused control with Enter and Space. For menus and widgets try Arrow keys, Home, End.
  4. Open and close dialogs using keyboard. Ensure focus returns to a sensible place after close.
  5. Try actions that normally require dragging or multi-touch. Confirm a keyboard alternative exists.
  6. Try keyboard shortcuts. If they conflict with browser or assistive tech shortcuts, provide an on-screen alternative or a toggle to disable site shortcuts.
  7. Use a screen reader (NVDA or VoiceOver) with keyboard navigation. Confirm controls announce meaningful names and states.
  8. Check focus visibility across common browsers and at 200% zoom.

Common failures and how to fix them

  • Interactive elements are not focusable: Replace clickable non-semantic elements with native button or link elements, or add tabindex=“0” plus keyboard handlers.
  • Custom widgets respond only to mouse events: Bind keyboard event handlers and follow WAI-ARIA Authoring Practices for roles and keyboard mappings.
  • Focus order is illogical: Do not use tabindex greater than 0 to force order. Reorder DOM or use CSS for layout instead.
  • Keyboard traps in overlays: Ensure overlays set initial focus and provide a keyboard method to close. Return focus to the element that opened the overlay.
  • Invisible focus: Do not remove default focus outlines without replacing them with an accessible visible indicator.

Implementation patterns that work

  • Prefer semantic HTML elements for controls. Browsers provide keyboard behaviour and focus by default.
  • For custom controls follow the WAI-ARIA Authoring Practices patterns and match the keyboard scheme used there.
  • Keep tabindex usage minimal. Use tabindex=“0” for elements that must be focusable. Avoid tabindex positive values.
  • Manage focus programmatically when dialogs open or content changes. Move focus to the first logical control and provide a clear escape key such as Esc to close.
  • Provide keyboard alternatives for drag or gesture interactions. For example provide move-by-step controls or arrow-key movement.

Testing with assistive technologies

Keyboard testing should include at least one screen reader. NVDA on Windows and VoiceOver on macOS are common choices. Confirm that control names, roles and states are exposed correctly. Use keyboard navigation patterns a real user would use. Automated tools can find some issues, but manual keyboard testing finds most keyboard failures.

When full keyboard parity is hard

Some specialised content makes strict parity difficult. If a keyboard alternative is not technically possible, provide a documented, accessible alternative pathway. For example a text-based control panel or an API endpoint that a keyboard user can use. Document the alternative in your accessibility statement and fix the gap in future releases.

Quick remediation checklist for developers

  • Use semantic controls where possible
  • Ensure all interactive elements are reachable by Tab or expected keys
  • Implement keyboard event handlers for activation and navigation
  • Provide visible focus styles and test at different zoom levels
  • Provide alternatives for drag and gesture-only features

Next steps

Start with a keyboard-only audit of a critical user journey such as signing in, completing a form, and making a purchase. Fix the easiest failures first: missing focus, non-button click handlers, and trapped focus. Then address custom widgets and shortcuts. Repeat testing with assistive tech after each major change.

WCAG 2.1.3 Keyboard (No Exception) is less about a single number and more about a mindset: if a task can be done with a pointer it should also be achievable with a keyboard. Treat keyboard access as core functionality, not an add-on.