Basic Web Accessibility Checklist for Engineers and Developers
Semantics and Structure
- When possible, are HTML tags used and applied for their native semantics?
- Can structure, information, and relationships conveyed through visual presentation (in headings, lists, menus, forms, etc.) be programmatically determined?
Readability
- Has the reading order been tested to confirm that all content on the page is available in a logical order for assistive technologies?
Images
- Do all linked, informative, and decorative
<img> elements have appropriate alternative text (e.g., alt attributes)? - Do all informative background images have alternative text that can be read by assistive technologies?
Keyboard and Navigation
- When interacting with a page with the keyboard, is focus always visible, is it managed when necessary, and does it follow a logical order?
- Can all functionality be accomplished using only the keyboard?
- Do all keyboard-only (and touchscreen) interactions follow expected patterns so users know how to interact with all widgets on the page?
- Can keyboard-only users always move focus without ever getting trapped?
Tables
- Are data tables marked up to convey the correct relationships between data cells and their associated column or row header cells?
- Do layout tables contain only
<td> cells and no other structural markup such as a <th> or <caption> tag?
Form Labels
- Do form controls have visible labels? Are the label and control programmatically associated?
- Are related fields grouped and associated with a common label (if present)?
Form Errors
- Are error descriptions programmatically associated with their form element?
- If an error is detected on form submission, are screen reader users made aware of it?
- If a validation error occurs during user input or when a user moves focus, is the error message spoken by a screen reader?
Custom Controls
- Do all custom controls, scripted components and widgets provide names and roles to mimic native HTML controls and are they programmatically determinable?
- For scrolling, moving, blinking, dynamic or auto-updating content, are mechanisms provided to stop, pause, hide, and control it?
Context Changes
- Has it been verified that when an element receives focus, for example by tabbing to it, no major change of context is automatically triggered?
- Has it been verified that when a person changes the setting of a user interface component, no major change of context is automatically triggered unless they have been notified beforehand?
Timing
- Can the time limit for completing a task be turned off, adjusted, or extended by the user — unless an exception applies?