Rules

The 37 composite WCAG Success Criterion rollups aren't listed here — they aren't individually configurable rules, they belong under Conformance instead. See how rules are organized for automatic vs. manual, how rule IDs are structured, and WCAG facets. The Questions column counts the questions a rule can leave to a person (cantTell); each comes with steps to answer it on the rule's page.

Automatic (86), can return fail

86 automatic rules
Rule IDTitleWCAG SCLevelQuestionsConfidenceSeverity
area-alt-present<area> must have an accessible name1.1.1A—highserious
aria-allowed-attraria-* attributes must be permitted for the element’s role4.1.2A3mediummoderate
aria-allowed-roleExplicit role must be permitted for its host element——1highmoderate
aria-braille-equivalentaria-braillelabel/aria-brailleroledescription must have a non-braille equivalent4.1.2A1highmoderate
aria-conditional-attraria-errormessage requires aria-invalid to be set to a non-false value4.1.2A1highmoderate
aria-deprecated-rolerole attribute should not use a deprecated or author-discouraged ARIA role4.1.2A2highmoderate
aria-hidden-bodyThe document <body> must not be aria-hidden1.3.1, 4.1.2A—highcritical
aria-hidden-focusARIA hidden elements must not be focusable4.1.2A2highserious
aria-owns-validaria-owns must give each element one owner, and never an ancestor of the owner1.3.1A1highserious
aria-prohibited-attrARIA naming attributes must not be used on roles that prohibit them4.1.2A3highmoderate
aria-prohibited-childrenContainer roles must not own a child with a disallowed role1.3.1A—mediummoderate
aria-required-attrRoles with a required ARIA state/property must carry it4.1.2A2highserious
aria-required-childrenContainer roles must own at least one required child role1.3.1A1mediummoderate
aria-required-parentRoles requiring a specific context role must be in that context1.3.1A—mediummoderate
aria-role-name-presentARIA roles that require an accessible name have one4.1.2A2highserious
aria-roles-validrole attribute must be a valid, non-abstract ARIA role1.3.1, 4.1.2A2highserious
aria-valid-attraria-* attributes must be real, defined ARIA attributes4.1.2A1highserious
aria-valid-attr-valuearia-* attribute values must match their declared type4.1.2A4highserious
autocomplete-validautocomplete attribute must be a valid autofill value1.3.5AA—highmoderate
avoid-inline-spacingInline style must not keep users from increasing text spacing1.4.12AA3highmoderate
binary-control-name-presentBinary controls have an accessible name4.1.2A1highserious
button-name-presentButtons have an accessible name4.1.2A3highserious
canvas-text-alternative-present<canvas> must provide a text alternative1.1.1A—highserious
click-handler-keyboard-operableClick handlers on elements that are not native controls must work by keyboard2.1.1, 2.1.3AAA5mediumserious
combobox-name-presentComboboxes have an accessible name4.1.2A1highserious
contrast-computableColor contrast is computable for rendered text1.4.3, 1.4.6AAA18highserious
contrast-enhancedText meets enhanced color contrast (AAA)1.4.6AAA4highserious
contrast-minimumText meets minimum color contrast (AA)1.4.3AA9highserious
css-orientation-lockCSS must not lock the page to a single orientation1.3.4AA3highserious
definition-list-children-validDescription lists must be structured correctly1.3.1A3highserious
deprecated-elements-not-usedScrolling <marquee> content must be possible to pause, stop, or hide2.2.2A1highserious
dialog-name-presentDialogs have an accessible name4.1.2A2highserious
dlitem-parent-validDescription-list items must be inside a description list1.3.1A1highserious
duplicate-idIDs must be unique4.1.1A2highmoderate
duplicate-id-ariaIDs referenced by ARIA must be unique4.1.2A1highserious
embed-text-alternative-present<embed> must provide a text alternative1.1.1A—highserious
empty-headingHeadings must not be empty——3highminor
focus-not-removed-by-scriptA script must not remove focus from an element as it receives it2.1.1, 2.4.7AA3mediumserious
form-control-programmatic-label-presentForm controls must have a programmatic label1.3.1, 3.3.2, 4.1.2A—mediumserious
form-control-single-labelForm controls should not have multiple labels3.3.2A2highmoderate
html-lang-attr-presentPage language is declared3.1.1A—highserious
html-xml-lang-mismatchlang and xml:lang must not disagree3.1.1A—highserious
identical-iframes-same-purposeFrames with the same name embed the same resource4.1.2A2mediummoderate
iframe-focusable-contentFrames with tabindex="-1" must not contain focusable content2.1.1A1highmoderate
iframe-name-presentFrames have an accessible name4.1.2A—highserious
iframe-title-uniqueFrame title uniqueness (deprecated) deprecated4.1.2A—highmoderate
img-alt-present<img> must have an alt attribute1.1.1A—highserious
input-image-alt-present<input type="image"> must have an alt attribute1.1.1, 4.1.2A1highserious
invalid-field-error-messageFields marked invalid should have a shown error message3.3.1A6highserious
label-in-nameLabel in Name: accessible name contains visible text2.5.3A4highserious
landmark-role-name-presentRegion and form roles must have an accessible name——1highminor
link-in-text-blockLinks in text blocks must be distinguishable from surrounding text without relying on color alone1.4.1A16highserious
link-name-presentLinks have an accessible name2.4.4, 2.4.9, 4.1.2AAA3highserious
list-children-validLists must only directly contain list items1.3.1A2highserious
listbox-name-presentListboxes have an accessible name4.1.2A1highserious
listitem-parent-validList items must be inside a list container1.3.1A2highserious
menuitem-name-presentMenu items have an accessible name4.1.2A3highserious
meta-refresh-no-exceptionsPage must not use a timed meta refresh (AAA)2.2.4, 3.2.5AAA—highmoderate
meta-refresh-timing-absentPage must not use a timed meta refresh2.2.1, 2.2.4, 3.2.5AAA—highserious
meta-viewport-zoom-enabledViewport meta tag must not disable zoom1.4.4AA1highserious
meter-name-presentMeters have an accessible name1.1.1A1highserious
nested-interactive-controls-absentInteractive controls must not be nested4.1.2A1highserious
object-text-alternative-present<object> must provide a text alternative1.1.1A—highserious
option-name-presentOptions have an accessible name4.1.2A3highserious
page-title-presentPage has a non-empty title2.4.2A—highserious
presentational-children-focusable-absentRoles with presentational children must not contain focusable content4.1.2A—highserious
progressbar-name-presentProgress bars have an accessible name1.1.1A1highserious
role-img-text-alternative-present[role="img"/"graphics-symbol"/"graphics-document"] must have an accessible text alternative1.1.1A1highserious
searchbox-name-presentSearchboxes have an accessible name4.1.2A1highserious
server-side-image-map-absentServer-side image maps must have a keyboard-operable alternative2.1.1A1highserious
slider-name-presentSliders have an accessible name4.1.2A1highserious
spinbutton-name-presentSpinbuttons have an accessible name4.1.2A1highserious
summary-name-presentSummary elements have an accessible name4.1.2A2highserious
svg-image-text-alternative-presentSVG <image> must have a text alternative1.1.1A—mediumserious
svg-text-alternative-present<svg> must provide a text alternative1.1.1A—highserious
tab-name-presentTabs have an accessible name4.1.2A3highserious
table-headers-attr-validTable cell "headers" attribute must reference valid header cells1.3.1A—highserious
table-th-has-data-cells<th> elements must describe at least one data cell1.3.1A1highmoderate
target-size-minimumPointer targets must be at least 24x24px large, or leave sufficient distance to other targets2.5.8AA2mediumserious
td-has-headerData cells in large tables must have an associated header1.3.1A1highserious
text-spacing-content-lossText stays readable when the user increases text spacing1.4.12AA8mediumserious
textbox-name-presentTextboxes have an accessible name4.1.2A1highserious
tooltip-name-presentTooltips have an accessible name4.1.2A4highserious
treeitem-name-presentTree items have an accessible name4.1.2A3highserious
valid-langElement lang attribute must be syntactically valid3.1.2AA—highmoderate
video-poster-text-alternative-present<video> poster must have a text alternative1.1.1A1mediumserious

Manual (59), never fail

59 manual rules
Rule IDTitleWCAG SCLevelQuestionsConfidenceSeverity
accesskeysaccesskey values must be unique——1mediumminor
area-alt-quality<area> text alternative must be appropriate (manual review)1.1.1A1mediumminor
aria-checked-state-mismatchNative checkbox/radio aria-checked should match its actual state4.1.2A1mediummoderate
aria-expanded-state-mismatcharia-expanded should match whether the controlled content is shown4.1.2A2mediummoderate
aria-textrole="text" elements should have no focusable descendants——1mediumminor
bypass-blocks-presentPage must provide a way to bypass repeated blocks2.4.1A1mediummoderate
canvas-text-alternative-quality<canvas> text alternative must be appropriate (manual review)1.1.1A1mediumminor
control-name-title-onlyA button or link should not take its name only from its title——1mediumminor
css-focus-indicator-suppressedFocus indicator must not be removed without a replacement2.4.7AA1mediumserious
css-hidden-focusFocusable elements must not be visually hidden2.4.7AA2lowserious
embed-text-alternative-quality<embed> text alternative must be appropriate (manual review)1.1.1A1mediumminor
empty-table-headerTable header cells must not be empty——2mediumminor
focus-order-semanticsElements added to the tab order should have interactive semantics——1mediumminor
form-control-label-qualityForm field labels should be descriptive and distinguishable2.4.6AA3mediumminor
form-control-programmatic-label-qualityForm controls should have a label shown on screen3.3.2A4mediummoderate
heading-orderHeading levels must not skip a level——1mediumminor
heading-qualityHeading text should be descriptive, not a placeholder2.4.6AA3mediumminor
identical-links-same-purposeLinks with the same accessible name should lead to the same destination2.4.9AAA1lowminor
image-of-textText should be real text, not an image of text1.4.5AA2lowmoderate
image-redundant-altImage alt text must not duplicate adjacent visible text——1mediumminor
img-alt-decorativeExcluded <img>/<canvas>/<svg> must be decorative (manual review)1.1.1A2mediumminor
img-alt-quality<img> alt text must be appropriate (manual review)1.1.1A2mediumminor
input-image-alt-decorative<input type="image"> with alt="" must be appropriate (manual review)1.1.1A1mediumminor
input-image-alt-quality<input type="image"> text alternative must be appropriate (manual review)1.1.1A1mediumminor
label-for-validA label’s for attribute should name a control it can label——2mediumminor
label-title-onlyTitle-only form labels (deprecated) deprecated———mediumminor
landmark-banner-is-top-levelBanner landmark must be top-level——1mediumminor
landmark-complementary-is-top-levelComplementary landmark must be top-level——1mediumminor
landmark-contentinfo-is-top-levelContentinfo landmark must be top-level——1mediumminor
landmark-main-is-top-levelMain landmark must be top-level——1mediumminor
landmark-no-duplicate-bannerPage must not have more than one banner landmark——1mediumminor
landmark-no-duplicate-contentinfoPage must not have more than one contentinfo landmark——1mediumminor
landmark-no-duplicate-mainPage must not have more than one main landmark——1mediumminor
landmark-one-mainPage should have a main landmark——1mediumminor
landmark-uniqueLandmarks with the same role must have unique names——1mediumminor
link-name-qualityLink text should be descriptive, not generic2.4.4, 2.4.9AAA2mediumminor
live-region-announcementsLive regions should be able to announce status messages4.1.3AA4mediummoderate
manual-reviewManual review: keyboard navigation and focus order2.1.1, 2.4.3, 2.4.7AA1mediummoderate
media-alternative-transcript-evidenceTime-based media: transcript or text alternative evidence1.2.1A2lowmoderate
meta-viewport-largeViewport meta tag should allow zooming up to 500%——1mediumminor
mouse-only-event-handlersPointer-only event handlers should have a keyboard-reachable equivalent2.1.1, 2.1.3AAA2lowmoderate
moving-content-pausableContent that moves by itself should be possible to pause, stop or hide2.2.2A2lowmoderate
no-autoplay-audioAutoplaying audio should provide a pause/stop or volume-control mechanism1.4.2A3lowmoderate
object-text-alternative-quality<object> text alternative must be appropriate (manual review)1.1.1A1mediumminor
p-as-headingText styled to look like a heading should probably be a real heading1.3.1A4lowminor
page-has-heading-onePage should have a level-one heading——1mediumminor
page-title-patternsPage title patterns that may be insufficiently descriptive2.4.2A6mediumminor
password-paste-enabledAuthentication fields must not block pasting3.3.8AA2mediumserious
presentation-role-conflictPresentational role must not conflict with a global ARIA attribute or focusability——1mediumminor
regionPage content should be inside a landmark region——1mediumminor
scope-attr-validscope attribute must have a valid value——1mediumminor
scrollable-region-focusableScrollable regions with no focusable content should be keyboard-focusable2.1.1, 2.1.3AAA1lowmoderate
skip-linkSkip link must have a resolvable, usable target——2mediumminor
svg-text-alternative-quality<svg> text alternative must be appropriate (manual review)1.1.1A2mediumminor
tabindextabindex should not be greater than 0——1mediumminor
table-duplicate-nameTable caption must not duplicate its summary attribute——1mediumminor
table-fake-captionA table's first row should not stand in for a real <caption>1.3.1A1lowminor
video-captionPrerecorded video should provide complete captions1.2.2A3lowmoderate
widget-keyboard-focusableWidgets should be reachable with the keyboard2.1.1A4mediumserious