Reference
Every check we run
60 rules, each with what it means for the people it affects and what to change. These are the same words that appear in a Statement, because they come from the same place.
ARIA
- aria-allowed-attr WCAG 4.1.2 Level A
An ARIA attribute is not allowed on this role, so it is ignored or misreported.
- aria-hidden-body WCAG 4.1.2 Level A
The page body is hidden from assistive technology, so screen reader users get an empty page.
- aria-required-attr WCAG 4.1.2 Level A
This role needs attributes that are missing, so its state is not announced.
- aria-required-children WCAG 1.3.1 Level A
This role must contain particular child roles, and they are missing.
- aria-required-parent WCAG 1.3.1 Level A
This role must sit inside a particular parent role, and it does not.
- aria-roles WCAG 4.1.2 Level A
An element uses a role that is not valid, so assistive technology falls back to whatever the element was originally.
- aria-valid-attr WCAG 4.1.2 Level A
An aria- attribute is misspelled, so it does nothing.
- aria-valid-attr-value WCAG 4.1.2 Level A
An ARIA attribute has a value it does not accept, or points at an element that does not exist.
- presentation-role-conflict WCAG 4.1.2 Level A
An element is marked as presentational but is still focusable or has a global ARIA attribute, so the roles conflict.
Audio and video
- audio-caption WCAG 1.2.1 Level A
The audio has no transcript or captions.
- no-autoplay-audio WCAG 1.4.2 Level A
Audio plays automatically, which covers a screen reader's own speech and leaves the user unable to hear it.
- video-caption WCAG 1.2.2 Level A
The video has no captions, so anyone who is deaf or hard of hearing gets no access to the audio.
Colour and contrast
- color-contrast WCAG 1.4.3 Level AA
The text does not stand out enough from its background. People with low vision, and anyone in bright light, will struggle to read it.
- contrast-over-gradient WCAG 1.4.3 Level AA
The text sits on a gradient and drops below the required contrast at the pale end.
- contrast-over-image WCAG 1.4.3 Level AA
The text sits on a background image, so contrast changes with the image and cannot be measured automatically.
- link-in-text-block-style WCAG 1.4.1 Level A
Links are separated from text by colour alone.
Forms and controls
- aria-input-field-name WCAG 4.1.2 Level A
A custom input built from ARIA has no accessible name.
- aria-toggle-field-name WCAG 4.1.2 Level A
A custom checkbox, radio, or switch has no accessible name.
- button-name WCAG 4.1.2 Level A
This button has no text, so a screen reader announces "button" with no indication of what it does.
- form-field-multiple-labels WCAG 3.3.2 Level A
The field has more than one label. Different screen readers announce different ones, so users get inconsistent instructions.
- input-button-name WCAG 4.1.2 Level A
This button has no name, so it is announced only as "button".
- label WCAG 3.3.2 Level A
This field has no label, so a screen reader announces it as an unnamed edit box. The user has to guess what to type.
- select-name WCAG 4.1.2 Level A
This dropdown has no accessible name, so its purpose is not announced.
General
- accessibility-overlay-detected
An overlay widget is installed. Overlays are marketed as a fix, but they cannot repair the underlying HTML, and they do not remove legal exposure.
- meta-refresh WCAG 2.2.1 Level A
The page refreshes or redirects on a timer, which can move people away mid-task.
- meta-viewport WCAG 1.4.4 Level AA
Zoom is disabled, so anyone who needs to enlarge the text cannot.
Images
- area-alt WCAG 1.1.1 Level A
An image map region has no name, so its link is announced with no destination.
- image-alt WCAG 1.1.1 Level A
A screen reader announces this image by its file name, or skips it. Someone who cannot see the image gets nothing from it.
- input-image-alt WCAG 1.1.1 Level A
This image is a button. Without a name, a screen reader announces it as "button" with no indication of what it does.
- object-alt WCAG 1.1.1 Level A
Embedded content has no text alternative, so anyone who cannot see it gets nothing.
- role-img-alt WCAG 1.1.1 Level A
An element marked as an image has no accessible name.
Keyboard
- aria-hidden-focus WCAG 4.1.2 Level A
An element is hidden from screen readers but can still be reached by keyboard, so focus disappears into content that is not announced.
- clickable-not-focusable WCAG 2.1.1 Level A
This element responds to a mouse click but cannot be reached with a keyboard, so keyboard and screen reader users cannot use it at all.
- nested-interactive WCAG 4.1.2 Level A
One control is nested inside another. Screen readers announce this inconsistently and the inner control is often unreachable.
- no-focus-styles WCAG 2.4.7 Level AA
No focus styling was found. A keyboard user cannot see where they are on the page.
- no-skip-link WCAG 2.4.1 Level A
There is no way to skip repeated navigation, so keyboard users tab through it on every page.
- positive-tabindex WCAG 2.4.3 Level A
A positive tabindex pulls this element out of the natural reading order, so the tab sequence no longer matches what is on screen.
- scrollable-region-focusable WCAG 2.1.1 Level A
A scrollable area cannot be reached or scrolled by keyboard.
Language
- html-has-lang WCAG 3.1.1 Level A
The page does not say what language it is in, so a screen reader may read it with the wrong pronunciation rules.
- html-lang-valid WCAG 3.1.1 Level A
The language code is not valid, so it is ignored.
- html-xml-lang-mismatch WCAG 3.1.1 Level A
The lang and xml:lang attributes disagree, so the language announced depends on the tool.
- valid-lang WCAG 3.1.2 Level AA
A lang attribute inside the page uses an invalid code.
Links and navigation
- bypass WCAG 2.4.1 Level A
A keyboard user has to tab through the whole navigation on every page before reaching the content.
- link-in-text-block WCAG 1.4.1 Level A
This link is distinguished from surrounding text by colour alone. Anyone who cannot separate those colours cannot tell it is a link.
- link-name WCAG 2.4.4 Level A
This link has no text. Screen reader users often navigate by pulling up a list of links; this one appears blank in that list.
- skip-link WCAG 2.4.1 Level A
The skip link's target does not exist, so activating it does nothing.
Page structure
- definition-list WCAG 1.3.1 Level A
A definition list has content that breaks its structure, so term and definition pairings are announced incorrectly.
- dlitem WCAG 1.3.1 Level A
A definition term or description sits outside a definition list.
- document-title WCAG 2.4.2 Level A
The page has no title. Browser tabs, bookmarks, and screen reader page lists all show nothing useful.
- duplicate-id-aria WCAG 4.1.2 Level A
Two elements share an id that ARIA references, so the reference resolves to the wrong element.
- frame-title WCAG 4.1.2 Level A
An iframe has no name, so it is announced only as "frame" when a user moves into it.
- heading-order WCAG 1.3.1 Level A
Heading levels skip a step. Screen reader users navigate by heading level, so a gap makes the page structure read as though content is missing.
- landmark-one-main WCAG 1.3.1 Level A
The page has no main landmark, so screen reader users cannot jump straight to the content.
- list WCAG 1.3.1 Level A
A list contains elements that are not list items, so the count announced to screen reader users is wrong.
- listitem WCAG 1.3.1 Level A
A list item is not inside a list, so it is not announced as part of one.
- page-has-heading-one WCAG 1.3.1 Level A
The page has no top-level heading, so there is no clear starting point when navigating by headings.
- region WCAG 1.3.1 Level A
Some content sits outside any landmark, so it is missed when navigating by region.
- table-duplicate-name WCAG 1.3.1 Level A
The table's caption and summary say the same thing, which is announced twice.
- td-headers-attr WCAG 1.3.1 Level A
A table cell points at headers that do not exist, so the relationship announced is wrong.
- th-has-data-cells WCAG 1.3.1 Level A
A table header describes no cells, which usually means the table is used for layout.
These rules are not the whole standard
Every rule here is something automation can check. Most of WCAG is not. All 55 success criteria, and which ones a person has to judge.