1. Perceivable
20 criteriaAll non-text content has a text alternative that serves the equivalent purpose (alt text for images, labels for icons).
Prerecorded audio-only and video-only content has a text transcript or audio description.
Captions are provided for all prerecorded audio content in synchronized media.
An audio description or full text alternative is provided for prerecorded video content.
Captions are provided for all live audio content in synchronized media.
Audio descriptions are provided for all prerecorded video content.
Information, structure, and relationships conveyed through presentation are programmatically determinable (semantic HTML, ARIA roles).
Content reading sequence is correct when CSS is removed or read by a screen reader.
Instructions don't rely solely on shape, size, color, or location (e.g., not just 'click the red button').
Content doesn't restrict view to a single display orientation (portrait or landscape) unless essential.
Input fields collecting personal info use autocomplete attributes so assistive tech can identify their purpose.
Color is not the only visual means of conveying information (e.g., error states also have text or icons).
If audio plays automatically for more than 3 seconds, there is a mechanism to pause or stop it.
Normal text has a contrast ratio of at least 4.5:1. Large text (18pt+) requires 3:1.
Text can be resized up to 200% without assistive technology and without loss of content or functionality.
Text is used instead of images of text except where a specific visual presentation is essential.
Content can be presented without scrolling in two dimensions at 400% zoom (320px wide viewport).
UI components and graphical objects have a contrast ratio of at least 3:1 against adjacent colors.
No loss of content when letter, word, line spacing, and paragraph spacing are overridden by the user.
Content appearing on hover or focus is dismissible, hoverable, and persistent.
2. Operable
17 criteriaAll functionality is available using only a keyboard. No specific timing is required for individual keystrokes.
If keyboard focus can be moved to a component, it can also be moved away without requiring special steps.
Keyboard shortcuts using single characters can be turned off, remapped, or only activated on focus.
Time limits can be turned off, adjusted, or extended. At least 20-second extension with warning.
Moving or auto-updating content can be paused, stopped, or hidden if it lasts more than 5 seconds.
No content flashes more than 3 times per second (seizure prevention).
A skip navigation link or landmark structure lets users bypass repeated navigation to reach main content.
Every page has a descriptive title that identifies its topic or purpose.
Focus order preserves meaning and operability — components receive focus in a logical sequence.
Link purpose can be determined from the link text alone or from surrounding context (no 'click here').
More than one way exists to find a page (sitemap, search, navigation links).
Headings and labels are descriptive and clearly describe the topic or purpose.
Any keyboard operable UI has a visible focus indicator. Browser defaults removed via CSS must be replaced.
Functionality with multipoint or path-based gestures has a single-pointer alternative.
Down-events alone are not used to execute actions unless essential (to prevent accidental activation).
Controls with visible labels have that text included in the accessible name.
Functionality activated by device motion can also be operated by UI and motion response can be disabled.
3. Understandable
10 criteriaThe default human language of each page can be programmatically determined (lang attribute on <html>).
The language of each passage or phrase in the content can be programmatically determined.
Receiving focus on any component does not automatically trigger a context change.
Changing a UI component setting does not automatically trigger a context change without warning.
Navigation that repeats across pages appears in the same relative order each time.
Components with the same functionality are identified consistently across pages.
If an error is detected, the item in error is identified and the error described in text.
Labels or instructions are provided where content requires user input.
If an error is identified and suggestion is known without jeopardizing security, a suggestion is provided.
Submissions can be reversed, checked, or confirmed before finalizing for legal or financial transactions.
4. Robust
3 criteriaHTML elements have complete start/end tags, are properly nested, and IDs are unique.
All UI components have name, role, and state that can be programmatically determined (ARIA, semantic HTML).
Status messages can be programmatically determined so assistive technologies can announce them without focus change.
Skip the manual work
SiteArmor automatically checks 70+ WCAG 2.1 AA criteria in 30 seconds — including all the items on this list that can be detected programmatically.
Run a free automated scan →No signup · Instant results · AI code fixes for every issue