On this page

Debugging Accessibility

Debug loop#

Flow

Symptom → fix

  1. Reproduce with keyboard or AT
  2. Inspect role / name / state
  3. Compare to intended native control
  4. Patch markup or behavior
  5. Retest the original path

Interactive demo

Inspect markup vs semantics

Choose an element

DOM / markup

<button type="button">Save</button>

Accessibility tree (conceptual)

Role
button
Name
"Save"
Notes
Native action control. Enter and Space activate. In the a11y tree as an interactive node.

Assistive technologies read the accessibility tree—not the painted pixels alone. Same look can yield very different nodes.

Common symptoms#

Start here

  1. Announces as ‘button’ with no name → naming
  2. Cannot Tab to control → focusability / tabindex / overlay
  3. Looks pressed but AT disagrees → state sync
  4. Focus disappears in dialog → focus management