53 Accessibility Rules

Complete Accessibility Rules Reference

Comprehensive guide to web accessibility rules. Learn about WCAG compliance, discover practical solutions, and implement accessible web experiences.

53
Total Rules
17
Critical
27
Serious
9
Moderate

Engine coverage by WCAG criterion

Each success criterion is tagged to a primary engine: Axe-core, Ablelytics-core, Ablelytics-AI, or Manual review. Manual-only items require human validation.

SCTitleLevelEngine
1.1.1Non-text ContentAAxe-core
1.2.1Audio-only and Video-only (Prerecorded)AAblelytics-AI
1.2.2Captions (Prerecorded)AAblelytics-AI
1.2.3Audio Description or Media Alternative (Prerecorded)AAblelytics-AI
1.2.4Captions (Live)AAManual
1.2.5Audio Description (Prerecorded)AAAblelytics-AI
1.2.6Sign Language (Prerecorded)AAAAblelytics-AI
1.2.7Extended Audio Description (Prerecorded)AAAAblelytics-AI
1.2.8Media Alternative (Prerecorded)AAAAblelytics-AI
1.2.9Audio-only (Live)AAAManual
1.3.1Info and RelationshipsAAxe-core
1.3.2Meaningful SequenceAAxe-core
Show all criteria
SCTitleLevelEngine
1.3.3Sensory CharacteristicsAAblelytics-AI
1.3.4OrientationAAAxe-core
1.3.5Identify Input PurposeAAAxe-core
1.3.6Identify PurposeAAAAxe-core
1.4.1Use of ColorAAxe-core
1.4.2Audio ControlAAblelytics-core
1.4.3Contrast (Minimum)AAAxe-core
1.4.4Resize TextAAAxe-core
1.4.5Images of TextAAAxe-core
1.4.6Contrast (Enhanced)AAAAxe-core
1.4.7Low or No Background AudioAAAAblelytics-AI
1.4.8Visual PresentationAAAAblelytics-AI
1.4.9Images of Text (No Exception)AAAAxe-core
1.4.10ReflowAAAxe-core
1.4.11Non-text ContrastAAAxe-core
1.4.12Text SpacingAAAxe-core
1.4.13Content on Hover or FocusAAAxe-core
2.1.1KeyboardAAblelytics-core
2.1.2No Keyboard TrapAAblelytics-core
2.1.3Keyboard (No Exception)AAAAblelytics-core
2.1.4Character Key ShortcutsAAxe-core
2.2.1Timing AdjustableAAxe-core
2.2.2Pause, Stop, HideAAblelytics-core
2.2.3No TimingAAAManual
2.2.4InterruptionsAAAManual
2.2.5Re-authenticatingAAAManual
2.2.6TimeoutsAAAManual
2.2.7Dragging MovementsAAAblelytics-core
2.2.8Target Size (Minimum)AAAxe-core
2.3.1Three Flashes or Below ThresholdAAxe-core
2.3.2Three FlashesAAAAxe-core
2.3.3Animation from InteractionsAAAxe-core
2.4.1Bypass BlocksAAblelytics-core
2.4.2Page TitledAAxe-core
2.4.3Focus OrderAAblelytics-core
2.4.4Link Purpose (In Context)AAxe-core
2.4.5Multiple WaysAAAblelytics-AI
2.4.6Headings and LabelsAAAxe-core
2.4.7Focus VisibleAAAblelytics-core
2.4.8LocationAAAAblelytics-AI
2.4.9Link Purpose (Link Only)AAAAxe-core
2.4.10Section HeadingsAAAAxe-core
2.4.11Focus Not Obscured (Minimum)AAAblelytics-core
2.4.12Focus Not Obscured (Enhanced)AAAAblelytics-core
2.4.13Focus AppearanceAAAAxe-core
2.5.1Pointer GesturesAAblelytics-core
2.5.2Pointer CancellationAAblelytics-core
2.5.3Label in NameAAxe-core
2.5.4Motion ActuationAAblelytics-core
2.5.5Target Size (Enhanced)AAAAxe-core
2.5.6Concurrent Input MechanismsAAAAblelytics-core
2.5.7Dragging MovementsAAAblelytics-core
2.5.8Target Size (Minimum)AAAxe-core
3.1.1Language of PageAAxe-core
3.1.2Language of PartsAAAxe-core
3.1.3Unusual WordsAAAAblelytics-AI
3.1.4AbbreviationsAAAAblelytics-AI
3.1.5Reading LevelAAAAblelytics-AI
3.1.6PronunciationAAAAblelytics-AI
3.2.1On FocusAAxe-core
3.2.2On InputAAxe-core
3.2.3Consistent NavigationAAAblelytics-core
3.2.4Consistent IdentificationAAAblelytics-core
3.2.5Change on RequestAAAAblelytics-AI
3.2.6Consistent HelpAAblelytics-core
3.3.1Error IdentificationAAxe-core
3.3.2Labels or InstructionsAAxe-core
3.3.3Error SuggestionAAAxe-core
3.3.4Error Prevention (Legal, Financial, Data)AAAblelytics-AI
3.3.5HelpAAAAblelytics-AI
3.3.6Error Prevention (All)AAAAblelytics-AI
3.3.7Redundant EntryAAblelytics-AI
3.3.8Accessible Authentication (Minimum)AAAblelytics-AI
3.3.9Accessible Authentication (Enhanced)AAAAblelytics-AI
4.1.2Name, Role, ValueAAxe-core
4.1.3Status MessagesAAAxe-core

ARIA

9 rules
Critical

ARIA attributes must be allowed for the element's role

An element has ARIA attributes that are not allowed for its role. This can confuse assistive technologies and provide incorrect information to users.

4.1.2 Name, Role, Value
Serious

ARIA Role Must Be Appropriate for Element

The `role` attribute must be appropriate for the HTML element on which it is used. Some ARIA roles are not allowed on certain HTML elements because the element's native semantics conflict with or override the ARIA role, or because the combination creates invalid or nonsensical accessibility information.

4.1.2 Name, Role, Value
Serious

ARIA Hidden Elements Must Not Contain Focusable Elements

Elements with `aria-hidden="true"` must not contain focusable elements. When an element is hidden from assistive technologies using `aria-hidden="true"`, any focusable descendants within it create a confusing experience where keyboard users can focus on elements that screen readers cannot perceive or announce.

4.1.2 Name, Role, Value
Critical

Elements with ARIA roles must have all required attributes

An element with an ARIA role is missing one or more required ARIA attributes. Assistive technologies cannot properly interpret the element without these required attributes.

4.1.2 Name, Role, Value
Critical

Elements with ARIA Roles Must Have Required Children

Certain ARIA roles require specific child roles to be present to create valid accessibility structures. For example, a `listbox` must contain `option` elements, a `tablist` must contain `tab` elements, and a `menu` must contain `menuitem`, `menuitemcheckbox`, or `menuitemradio` elements. Missing required children breaks the accessibility tree and prevents assistive technologies from correctly interpreting the interface.

4.1.2 Name, Role, Value
Critical

Elements with ARIA Roles Must Have Required Parent

Certain ARIA roles can only be used as children of specific parent roles. For example, `option` must be contained in a `listbox` or `combobox`, `tab` must be in a `tablist`, and `menuitem` must be in a `menu` or `menubar`. Using these child roles without their required parent roles breaks the accessibility tree and prevents assistive technologies from correctly interpreting the widget structure.

4.1.2 Name, Role, Value
Critical

ARIA roles must be valid

An element has an invalid or non-existent ARIA role. Assistive technologies cannot interpret invalid roles, leading to broken accessibility.

4.1.2 Name, Role, Value
Critical

ARIA roles must conform to valid values

An ARIA attribute has an invalid value. Screen readers and assistive technologies cannot interpret invalid ARIA values, breaking accessibility features.

4.1.2 Name, Role, Value
Critical

ARIA Attributes Must Be Valid

ARIA (Accessible Rich Internet Applications) attributes used in HTML elements must be valid attributes that are defined in the ARIA specification. Using invalid or misspelled ARIA attributes can cause assistive technologies to ignore or misinterpret the intended accessibility information.

4.1.2 Name, Role, Value

Forms & Inputs

5 rules

Images & Media

6 rules

Document Structure

7 rules
Serious

Documents must have a title element

The document does not have a `<title>` element in the `<head>`, or the title is empty. Users need page titles to identify and navigate between pages.

2.4.2 Page Titled
Critical

IDs must be unique

Two or more elements on the page have the same `id` attribute value. Duplicate IDs break assistive technologies, form labels, ARIA relationships, and JavaScript functionality.

4.1.1 Parsing
Serious

Headings must have discernible text

A heading element (h1-h6 or role="heading") is empty or has no accessible text. Empty headings confuse screen reader users and break document structure.

2.4.6 Headings and Labels
Moderate

Heading levels should only increase by one

Heading levels skip one or more levels (e.g., jumping from `<h1>` to `<h3>`, skipping `<h2>`). This breaks the document outline and confuses screen reader users navigating by headings.

1.3.1 Info and Relationships
Serious

HTML element must have a lang attribute

The `<html>` element does not have a `lang` attribute. Screen readers and assistive technologies need this to pronounce content correctly and apply appropriate language-specific rules.

3.1.1 Language of Page
Serious

html element must have a valid lang attribute value

The `<html>` element has a `lang` attribute with an invalid value. Screen readers and browsers cannot determine the correct language for pronunciation and processing.

3.1.1 Language of Page
Moderate

Page must have a level-one heading

The page does not contain a level-one heading (`<h1>`). Screen reader users rely on heading structure to understand page content and navigate efficiently.

1.3.1 Info and Relationships

Lists & Landmarks

6 rules

Need Help with Accessibility?

Our automated accessibility checker can scan your website and identify issues based on these rules.

Start Your Free Trial