Skip to main content

Reference · Scanner

Rule catalogue

Every rule the scanner reports by name: 287 of them, across 43 WCAG 2.2 success criteria. 17 of 287 rules have been seen firing in our own test runs; the rest are declared by the engine that owns them. 17 are rules we can generate a sandbox-validated fix for. Each row names the engines that emit it and where it runs, so you can check any entry against that engine's own documentation.

How a scan produces these

axe-core, IBM Equal Access and our own ARC engine test every page a scan visits. pa11y runs on every page too, except very large pages its browser cannot load safely. Lighthouse audits the start page only. In-house analyzers run alongside them, some on every page and some only where a plan or a setting switches them on; the Where it runs column says which. Rule metadata comes from axe-core 4.12.1 and Lighthouse 13.4.1, the versions the scanner runs.

Findings then pass through a filter chain before anything reaches a report: engine output is normalised to one field contract, elements are re-queried against the live DOM so a finding the page contradicts is dropped, invisible and framework-managed markup is tagged, per-page caps stop one repeated defect from burying the rest, and the same defect found by several engines is collapsed into a single row that carries every selector it was seen on.

That collapse is why a rule below can list more than one engine, and why the Same defect as column exists: two engines with different rule names for one problem fold into one row rather than counting twice. Rules with a fix class go on to patch generation, where the candidate fix is applied in a sandbox and re-scanned, and is only offered if it removes the finding without introducing a new one.

There is no branded name for this stack. It is five engines, a set of in-house per-page analyzers, and the filter chain between them and you.

Where the rules come from

Engines and in-house analyzers, with how many catalogued rules each can emit
EngineKindCatalogued rules
axe-coreEngine89
ibm-equal-accessEngine162
arc-styleEngine19
pa11yEngineNone with a stable id
lighthouseEngine66
alt-text-visionIn-house analyzer1
focus-graphIn-house analyzer2
form-behaviorIn-house analyzer3
keyboard-nav-testerIn-house analyzer1
language-checkIn-house analyzer2
mobile-accessibilityIn-house analyzer8
wcag-checksIn-house analyzer1

pa11y identifies a finding by an HTML_CodeSniffer code rather than a rule name, and the id it emits is a hash of the message, so it contributes findings but no stable rule ids to catalogue. It still votes on whether a finding is corroborated.

Counted in the score: 214 rules

At the default WCAG AA target, a finding from one of these rules lowers the score and can fail a CI build. The criterion shown is the one the owning engine declares; where another engine reports the same rule against a different criterion, that is shown too. One of these rules has no success criterion in the owning engine's metadata. We count it on purpose, against the criterion shown beside it: a skipped heading level misstates the page's structure, and our benchmark and many manual audits record it that way.

Rules whose findings count in the score at the default WCAG AA target
Rule idCriterionEnginesWhere it runsSame defect asVerified fixEvidence
alt-text-inaccurate 1.1.1 A alt-text-visionTeam and Business plans, not switched on yetDeclared
aria-meter-name 1.1.1 A Reported as 4.1.2 A by lighthouseaxe-core, lighthouseEvery pagearia-input-field-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, label, select-nameDeclared
aria-progressbar-name 1.1.1 A Reported as 4.1.2 A by lighthouseaxe-core, lighthouseEvery pagearia-input-field-name, aria-meter-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, label, select-nameDeclared
ibm-applet_alt_exists 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-application_content_accessible 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-area_alt_exists 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-imagebutton_alt_exists 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-imagemap_alt_exists 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-img_alt_decorative 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-img_alt_misuse 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-img_alt_null 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-img_alt_redundant 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-img_alt_valid 1.1.1 A ibm-equal-accessEvery pageimage-altSeen firing
ibm-img_ismap_misuse 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-img_longdesc_misuse 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-media_alt_exists 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-object_text_exists 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-style_background_decorative 1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-svg_graphics_labelled 1.1.1 A ibm-equal-accessEvery pagesvg-accessible-name, svg-img-altSeen firing
image-alt 1.1.1 A axe-core, lighthouseEvery pageibm-img_alt_validalt_textSeen firing
input-image-alt 1.1.1 A axe-core, lighthouseEvery pagealt_textDeclared
object-alt 1.1.1 A axe-core, lighthouseEvery pageDeclared
role-img-alt 1.1.1 A axe-coreEvery pagealt_textDeclared
svg-accessible-name 1.1.1 A arc-styleEvery pageibm-svg_graphics_labelled, svg-img-altDeclared
svg-img-alt 1.1.1 A axe-core, lighthouseEvery pageibm-svg_graphics_labelled, svg-accessible-namealt_textSeen firing
ibm-caption_track_exists 1.2.2 A ibm-equal-accessEvery pageDeclared
video-caption 1.2.2 A axe-core, lighthouseEvery pageDeclared
aria-hidden-body 1.3.1 A Reported as 4.1.2 A by lighthouseaxe-core, lighthouseEvery pageDeclared
aria-required-children 1.3.1 A Reported as 4.1.2 A by arc-stylearc-style, axe-core, lighthouseEvery pageDeclared
aria-required-parent 1.3.1 A axe-core, lighthouseEvery pageDeclared
definition-list 1.3.1 A axe-core, lighthouseEvery pageDeclared
dlitem 1.3.1 A axe-core, lighthouseEvery pageDeclared
ibm-aria_banner_label_unique 1.3.1 A ibm-equal-accessEvery pageibm-aria_contentinfo_label_unique, ibm-aria_main_label_unique, landmark-main-multiple, landmark-no-duplicate-banner, landmark-no-duplicate-contentinfo, landmark-no-duplicate-mainDeclared
ibm-aria_banner_single 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_complementary_label_unique 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_complementary_labelled 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_contentinfo_label_unique 1.3.1 A ibm-equal-accessEvery pageibm-aria_banner_label_unique, ibm-aria_main_label_unique, landmark-main-multiple, landmark-no-duplicate-banner, landmark-no-duplicate-contentinfo, landmark-no-duplicate-mainDeclared
ibm-aria_contentinfo_single 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_form_label_unique 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_hidden_nontabbable 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_main_label_unique 1.3.1 A ibm-equal-accessEvery pageibm-aria_banner_label_unique, ibm-aria_contentinfo_label_unique, landmark-main-multiple, landmark-no-duplicate-banner, landmark-no-duplicate-contentinfo, landmark-no-duplicate-mainDeclared
ibm-aria_navigation_label_unique 1.3.1 A ibm-equal-accessEvery pageibm-aria_region_label_unique, landmark-uniqueDeclared
ibm-aria_parent_required 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_region_label_unique 1.3.1 A ibm-equal-accessEvery pageibm-aria_navigation_label_unique, landmark-uniqueDeclared
ibm-aria_region_labelled 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-blockquote_cite_exists 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-fieldset_label_valid 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-form_label_unique 1.3.1 A ibm-equal-accessEvery pageSeen firing
ibm-heading_markup_misuse 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-input_checkboxes_grouped 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-label_ref_valid 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-list_markup_review 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-table_caption_empty 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-table_caption_nested 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-table_headers_exists 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-table_headers_ref_valid 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-table_headers_related 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-table_scope_valid 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-table_structure_misuse 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-table_summary_redundant 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-text_block_heading 1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-text_quoted_correctly 1.3.1 A ibm-equal-accessEvery pageDeclared
input-label-missing 1.3.1 A arc-styleEvery pagearia-input-field-name, aria-meter-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-placeholder-only, label, select-nameDeclared
input-label-placeholder-only 1.3.1 A arc-styleEvery pagearia-input-field-name, aria-meter-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, label, select-nameSeen firing
landmark-main-multiple 1.3.1 A arc-styleEvery pageibm-aria_banner_label_unique, ibm-aria_contentinfo_label_unique, ibm-aria_main_label_unique, landmark-no-duplicate-banner, landmark-no-duplicate-contentinfo, landmark-no-duplicate-mainDeclared
list 1.3.1 A axe-core, lighthouseEvery pageDeclared
listitem 1.3.1 A axe-core, lighthouseEvery pageDeclared
table-fake-caption 1.3.1 A lighthouseStart page onlyDeclared
td-has-header 1.3.1 A Reported as no criterion by lighthouselighthouseStart page onlyDeclared
td-headers-attr 1.3.1 A axe-core, lighthouseEvery pageDeclared
th-has-data-cells 1.3.1 A axe-core, lighthouseEvery pageDeclared
ibm-dir_attribute_valid 1.3.2 A ibm-equal-accessEvery pageDeclared
ibm-text_whitespace_valid 1.3.2 A ibm-equal-accessEvery pageDeclared
ibm-text_sensory_misuse 1.3.3 A ibm-equal-accessEvery pageDeclared
ibm-element_orientation_unlocked 1.3.4 AA ibm-equal-accessEvery pageDeclared
mobile-orientation-locked 1.3.4 AA mobile-accessibilityStart page only, Business planDeclared
autocomplete-valid 1.3.5 AA Reported as no criterion by lighthouseaxe-core, lighthouseEvery pageDeclared
ibm-input_autocomplete_valid 1.3.5 AA ibm-equal-accessEvery pageDeclared
ibm-form_font_color 1.4.1 A ibm-equal-accessEvery pageDeclared
ibm-style_color_misuse 1.4.1 A ibm-equal-accessEvery pageDeclared
link-in-text-block 1.4.1 A axe-core, lighthouseEvery pageDeclared
ibm-media_autostart_controllable 1.4.2 A ibm-equal-accessEvery pageDeclared
color-contrast 1.4.3 AA axe-core, lighthouseEvery pagecolor_contrastSeen firing
ibm-text_contrast_sufficient 1.4.3 AA ibm-equal-accessEvery pageDeclared
ibm-style_viewport_resizable 1.4.4 AA ibm-equal-accessEvery pageDeclared
meta-viewport 1.4.4 AA axe-core, lighthouseEvery pagemobile-viewport-zoom-blockedDeclared
mobile-viewport-zoom-blocked 1.4.4 AA mobile-accessibilityStart page only, Business planmeta-viewportDeclared
mobile-horizontal-scroll 1.4.10 AA mobile-accessibilityStart page only, Business planDeclared
avoid-inline-spacing 1.4.12 AA axe-coreEvery pageDeclared
ibm-text_spacing_valid 1.4.12 AA ibm-equal-accessEvery pageDeclared
ibm-style_hover_persistent 1.4.13 AA ibm-equal-accessEvery pageDeclared
button-keyboard 2.1.1 A arc-styleEvery pageDeclared
frame-focusable-content 2.1.1 A axe-coreEvery pageDeclared
ibm-aria_activedescendant_tabindex_valid 2.1.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_child_tabbable 2.1.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_keyboard_handler_exists 2.1.1 A ibm-equal-accessEvery pageDeclared
ibm-iframe_interactive_tabbable 2.1.1 A ibm-equal-accessEvery pageDeclared
ibm-media_keyboard_controllable 2.1.1 A ibm-equal-accessEvery pageDeclared
ibm-script_focus_blur_review 2.1.1 A ibm-equal-accessEvery pageDeclared
ibm-script_onclick_misuse 2.1.1 A ibm-equal-accessEvery pageDeclared
ibm-widget_tabbable_exists 2.1.1 A ibm-equal-accessEvery pageDeclared
ibm-widget_tabbable_single 2.1.1 A ibm-equal-accessEvery pageDeclared
scrollable-region-focusable 2.1.1 A axe-coreEvery pageDeclared
server-side-image-map 2.1.1 A axe-coreEvery pageDeclared
focus-trap-graph 2.1.2 A focus-graphEvery pageDeclared
ibm-meta_refresh_delay 2.2.1 A ibm-equal-accessEvery pageDeclared
meta-refresh 2.2.1 A axe-core, lighthouseEvery pageDeclared
blink 2.2.2 A axe-coreEvery pageDeclared
ibm-blink_css_review 2.2.2 A ibm-equal-accessEvery pageDeclared
ibm-blink_elem_deprecated 2.2.2 A ibm-equal-accessEvery pageDeclared
ibm-marquee_elem_avoid 2.2.2 A ibm-equal-accessEvery pageDeclared
marquee 2.2.2 A axe-coreEvery pageDeclared
bypass 2.4.1 A lighthouseStart page onlyDeclared
ibm-aria_application_label_unique 2.4.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_application_labelled 2.4.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_document_label_unique 2.4.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_toolbar_label_unique 2.4.1 A ibm-equal-accessEvery pageDeclared
ibm-frame_src_valid 2.4.1 A ibm-equal-accessEvery pageDeclared
ibm-html_skipnav_exists 2.4.1 A ibm-equal-accessEvery pageDeclared
ibm-skip_main_described 2.4.1 A ibm-equal-accessEvery pageDeclared
ibm-skip_main_exists 2.4.1 A ibm-equal-accessEvery pageDeclared
skip-link-broken 2.4.1 A keyboard-nav-testerEvery pageskip-link-missingDeclared
skip-link-missing 2.4.1 A arc-styleEvery pageskip-link-brokenSeen firing
document-title 2.4.2 A axe-core, lighthouseEvery pageDeclared
ibm-page_title_exists 2.4.2 A ibm-equal-accessEvery pageDeclared
ibm-page_title_valid 2.4.2 A ibm-equal-accessEvery pageDeclared
tabindex-positive 2.4.3 A arc-styleEvery pagetabindexDeclared
area-alt 2.4.4 A axe-coreEvery pageDeclared
empty-button-link 2.4.4 A arc-styleEvery pageDeclared
ibm-a_text_purpose 2.4.4 A ibm-equal-accessEvery pagelink-nameDeclared
link-name 2.4.4 A Reported as 4.1.2 A by lighthouseaxe-core, lighthouseEvery pageibm-a_text_purposearia_labelDeclared
ibm-element_tabbable_visible 2.4.7 AA ibm-equal-accessEvery pageDeclared
ibm-style_focus_visible 2.4.7 AA ibm-equal-accessEvery pageDeclared
ibm-element_tabbable_unobscured 2.4.11 AA ibm-equal-accessEvery pageDeclared
ibm-input_label_visible 2.5.3 A ibm-equal-accessEvery pageDeclared
ibm-label_name_visible 2.5.3 A ibm-equal-accessEvery pagelabel-content-name-mismatchSeen firing
label-content-name-mismatch 2.5.3 A lighthouseStart page onlyibm-label_name_visibleDeclared
ibm-draggable_alternative_exists 2.5.7 AA ibm-equal-accessEvery pageDeclared
ibm-target_spacing_sufficient 2.5.8 AA ibm-equal-accessEvery pageSeen firing
mobile-target-size-aa-fail 2.5.8 AA mobile-accessibilityStart page only, Business plantarget-sizeDeclared
target-size 2.5.8 AA axe-core, lighthouseEvery pagemobile-target-size-aa-failSeen firing
html-has-lang 3.1.1 A axe-core, lighthouseEvery pageibm-html_lang_existsDeclared
html-lang-valid 3.1.1 A axe-core, lighthouseEvery pageibm-html_lang_validDeclared
html-xml-lang-mismatch 3.1.1 A axe-core, lighthouseEvery pageDeclared
ibm-html_lang_exists 3.1.1 A ibm-equal-accessEvery pagehtml-has-langDeclared
ibm-html_lang_valid 3.1.1 A ibm-equal-accessEvery pagehtml-lang-validDeclared
ibm-element_lang_valid 3.1.2 AA ibm-equal-accessEvery pageDeclared
lang-part-mismatch 3.1.2 AA language-checkEvery pageDeclared
lang-part-undeclared 3.1.2 AA language-checkEvery pageDeclared
valid-lang 3.1.2 AA axe-core, lighthouseEvery pageDeclared
ibm-script_select_review 3.2.1 A ibm-equal-accessEvery pageDeclared
ibm-form_interaction_review 3.2.2 A ibm-equal-accessEvery pageDeclared
ibm-form_submit_button_exists 3.2.2 A ibm-equal-accessEvery pageDeclared
ibm-input_onchange_review 3.2.2 A ibm-equal-accessEvery pageDeclared
form-error-association 3.3.1 A form-behaviorEvery pageDeclared
ibm-error_message_exists 3.3.1 A ibm-equal-accessEvery pageDeclared
form-field-multiple-labels 3.3.2 A axe-core, lighthouseEvery pagelabel_forDeclared
ibm-input_label_after 3.3.2 A ibm-equal-accessEvery pageDeclared
ibm-input_label_before 3.3.2 A ibm-equal-accessEvery pageDeclared
aria-allowed-attr 4.1.2 A axe-core, lighthouseEvery pagearia-prohibited-attr, ibm-aria_attribute_validDeclared
aria-command-name 4.1.2 A axe-core, lighthouseEvery pagearia_labelDeclared
aria-conditional-attr 4.1.2 A Reported as no criterion by lighthouseaxe-core, lighthouseEvery pageDeclared
aria-deprecated-role 4.1.2 A axe-core, lighthouseEvery pageDeclared
aria-hidden-focus 4.1.2 A arc-style, axe-core, lighthouseEvery pageDeclared
aria-hidden-focus-honeypot 4.1.2 A arc-styleEvery pageDeclared
aria-input-field-name 4.1.2 A axe-core, lighthouseEvery pagearia-meter-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, label, select-namearia_labelDeclared
aria-name-missing 4.1.2 A arc-styleEvery pagebutton-nameSeen firing
aria-prohibited-attr 4.1.2 A Reported as no criterion by lighthouseaxe-core, lighthouseEvery pagearia-allowed-attr, ibm-aria_attribute_validDeclared
aria-required-attr 4.1.2 A arc-style, axe-core, lighthouseEvery pageDeclared
aria-role-invalid 4.1.2 A arc-styleEvery pagearia-rolesDeclared
aria-roles 4.1.2 A axe-core, lighthouseEvery pagearia-role-invalidDeclared
aria-tab-name 4.1.2 A axe-coreEvery pageDeclared
aria-toggle-field-name 4.1.2 A axe-core, lighthouseEvery pagearia-input-field-name, aria-meter-name, aria-progressbar-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, label, select-namearia_labelDeclared
aria-tooltip-name 4.1.2 A axe-core, lighthouseEvery pageDeclared
aria-valid-attr 4.1.2 A axe-core, lighthouseEvery pageDeclared
aria-valid-attr-value 4.1.2 A arc-style, axe-core, lighthouseEvery pageibm-aria_id_uniquearia_describedby_idrefSeen firing
button-name 4.1.2 A axe-core, lighthouseEvery pagearia-name-missingaria_labelDeclared
duplicate-id 4.1.2 A Reported as no criterion by arc-stylearc-styleEvery pageSeen firing
duplicate-id-aria 4.1.2 A lighthouseStart page onlyDeclared
form-error-aria-invalid 4.1.2 A form-behaviorEvery pageDeclared
frame-title 4.1.2 A axe-core, lighthouseEvery pageDeclared
frame-title-unique 4.1.2 A axe-coreEvery pageDeclared
ibm-aria_activedescendant_valid 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-aria_attribute_allowed 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-aria_attribute_conflict 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-aria_attribute_exists 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-aria_attribute_required 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-aria_attribute_valid 4.1.2 A ibm-equal-accessEvery pagearia-allowed-attr, aria-prohibited-attrDeclared
ibm-aria_attribute_value_valid 4.1.2 A ibm-equal-accessEvery pageSeen firing
ibm-aria_descendant_valid 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-aria_eventhandler_role_valid 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-aria_id_unique 4.1.2 A ibm-equal-accessEvery pagearia-valid-attr-valueDeclared
ibm-aria_role_allowed 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-aria_role_valid 4.1.2 A ibm-equal-accessEvery pagearia-allowed-roleDeclared
ibm-aria_widget_labelled 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-combobox_active_descendant 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-combobox_autocomplete_valid 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-combobox_design_valid 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-combobox_focusable_elements 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-combobox_haspopup_valid 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-combobox_popup_reference 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-frame_title_exists 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-input_haspopup_conflict 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-input_label_exists 4.1.2 A ibm-equal-accessEvery pagearia-input-field-name, aria-meter-name, aria-progressbar-name, aria-toggle-field-name, input-label-missing, input-label-placeholder-only, label, select-nameDeclared
ibm-label_content_exists 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-list_children_valid 4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-table_aria_descendants 4.1.2 A ibm-equal-accessEvery pageDeclared
input-button-name 4.1.2 A axe-core, lighthouseEvery pagearia_labelDeclared
label 4.1.2 A Reported as 3.3.2 A by lighthouseaxe-core, lighthouseEvery pagearia-input-field-name, aria-meter-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, select-nameform_labelDeclared
nested-interactive 4.1.2 A axe-coreEvery pageDeclared
nested-role-<role> family 4.1.2 A arc-styleEvery pageDeclared
select-name 4.1.2 A axe-core, lighthouseEvery pagearia-input-field-name, aria-meter-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, labelform_labelDeclared
summary-name 4.1.2 A axe-coreEvery pageDeclared
heading-order None Reported as 1.3.1 A by arc-style, lighthousearc-style, axe-core, lighthouseEvery pageheading_hierarchySeen firing

Reported, not counted: 73 rules

Advisory rules, best-practice rules with no success criterion, AAA criteria above the default target, and 4.1.1, which WCAG 2.2 made obsolete. They are in the report because they are worth fixing, but at the default target they never lower the score or fail a build.

Rules that are reported but never counted in the score at the default WCAG AA target
Rule idCriterionEnginesWhere it runsSame defect asVerified fixEvidence
ibm-canvas_content_described advisory1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-embed_alt_exists advisory1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-figure_label_exists advisory1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-img_alt_background advisory1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-media_alt_brief advisory1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-noembed_content_exists advisory1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-style_highcontrast_visible advisory1.1.1 A ibm-equal-accessEvery pageDeclared
ibm-media_audio_transcribed advisory1.2.1 A ibm-equal-accessEvery pageDeclared
ibm-media_track_available advisory1.2.3 A ibm-equal-accessEvery pageDeclared
ibm-media_live_captioned advisory1.2.4 AA ibm-equal-accessEvery pageDeclared
ibm-aria_child_valid advisory1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_complementary_label_visible advisory1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_content_in_landmark advisory1.3.1 A ibm-equal-accessEvery pageregionDeclared
ibm-aria_contentinfo_misuse advisory1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_landmark_name_unique advisory1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-aria_main_label_visible advisory1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-fieldset_legend_valid advisory1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-input_fields_grouped advisory1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-list_structure_proper advisory1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-select_options_grouped advisory1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-table_layout_linearized advisory1.3.1 A ibm-equal-accessEvery pageDeclared
ibm-meta_viewport_zoomable advisory1.4.4 AA ibm-equal-accessEvery pageDeclared
color-contrast-enhanced 1.4.6 AAA axe-coreEvery page when a scan targets AAAcolor_contrastDeclared
ibm-element_mouseevent_keyboard advisory2.1.1 A ibm-equal-accessEvery pageDeclared
ibm-script_onclick_avoid advisory2.1.1 A ibm-equal-accessEvery pageDeclared
focus-trap-graph-advisory advisory2.1.2 A focus-graphEvery pageDeclared
ibm-download_keyboard_controllable advisory2.1.2 A ibm-equal-accessEvery pageDeclared
meta-refresh-no-exceptions 2.2.4 AAA axe-coreEvery page when a scan targets AAADeclared
ibm-heading_content_exists advisory2.4.6 AA ibm-equal-accessEvery pageDeclared
identical-links-same-purpose 2.4.9 AAA axe-core, lighthouseStart page only; every page when a scan targets AAADeclared
mobile-target-size-aaa-advisory advisory2.5.5 AAA mobile-accessibilityStart page only, Business planDeclared
mobile-target-size-advisory advisory2.5.5 AAA mobile-accessibilityStart page only, Business planDeclared
mobile-target-size-spacing-exempt-advisory advisory2.5.5 AAA mobile-accessibilityStart page only, Business planDeclared
ibm-a_target_warning advisory3.2.2 A ibm-equal-accessEvery pageDeclared
ibm-element_accesskey_labelled advisory3.3.2 A ibm-equal-accessEvery pageDeclared
ibm-element_id_unique 4.1.1 A Obsolete in WCAG 2.2 ibm-equal-accessEvery pageDeclared
ibm-aria_accessiblename_exists advisory4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-aria_attribute_redundant advisory4.1.2 A ibm-equal-accessEvery pageDeclared
ibm-element_tabbable_role_valid advisory4.1.2 A ibm-equal-accessEvery pageDeclared
form-error-announcement-advisory advisory4.1.3 AA form-behaviorEvery pageDeclared
accesskeys advisoryNone axe-core, lighthouseEvery pageDeclared
aria-allowed-role advisoryNone axe-core, lighthouseEvery pageibm-aria_role_validDeclared
aria-dialog-name advisoryNone axe-core, lighthouseEvery pageDeclared
aria-text advisoryNone axe-core, lighthouseEvery pageDeclared
aria-treeitem-name advisoryNone axe-core, lighthouseEvery pageDeclared
empty-heading advisoryNone axe-core, lighthouseEvery pageDeclared
empty-table-header advisoryNone axe-coreEvery pageDeclared
frame-tested advisoryNone axe-coreEvery pageDeclared
ibm-aria_article_label_unique advisoryNone ibm-equal-accessEvery pageDeclared
ibm-aria_attribute_deprecated advisoryNone ibm-equal-accessEvery pageDeclared
ibm-aria_role_redundant advisoryNone ibm-equal-accessEvery pageDeclared
ibm-element_accesskey_unique advisoryNone ibm-equal-accessEvery pageDeclared
ibm-element_attribute_deprecated advisoryNone ibm-equal-accessEvery pageDeclared
image-redundant-alt advisoryNone axe-core, lighthouseEvery pageDeclared
label-title-only advisoryNone axe-coreEvery pageDeclared
landmark-banner-is-top-level advisoryNone axe-coreEvery pageDeclared
landmark-contentinfo-is-top-level advisoryNone axe-coreEvery pageDeclared
landmark-main-is-top-level advisoryNone axe-coreEvery pageDeclared
landmark-main-missing advisoryNone arc-styleEvery pagelandmark-one-mainDeclared
landmark-no-duplicate-banner advisoryNone axe-coreEvery pageibm-aria_banner_label_unique, ibm-aria_contentinfo_label_unique, ibm-aria_main_label_unique, landmark-main-multiple, landmark-no-duplicate-contentinfo, landmark-no-duplicate-mainDeclared
landmark-no-duplicate-contentinfo advisoryNone axe-coreEvery pageibm-aria_banner_label_unique, ibm-aria_contentinfo_label_unique, ibm-aria_main_label_unique, landmark-main-multiple, landmark-no-duplicate-banner, landmark-no-duplicate-mainDeclared
landmark-no-duplicate-main advisoryNone axe-coreEvery pageibm-aria_banner_label_unique, ibm-aria_contentinfo_label_unique, ibm-aria_main_label_unique, landmark-main-multiple, landmark-no-duplicate-banner, landmark-no-duplicate-contentinfoDeclared
landmark-one-main advisoryNone axe-core, lighthouseEvery pagelandmark-main-missingDeclared
landmark-unique advisoryNone axe-coreEvery pageibm-aria_navigation_label_unique, ibm-aria_region_label_uniqueDeclared
meta-viewport-large advisoryNone axe-coreEvery pageDeclared
mobile-target-unreachable-advisory advisoryNone mobile-accessibilityStart page only, Business planDeclared
page-has-heading-one advisoryNone axe-core, wcag-checksEvery pageDeclared
presentation-role-conflict advisoryNone axe-core, lighthouseEvery pageDeclared
region advisoryNone axe-coreEvery pageibm-aria_content_in_landmarkSeen firing
scope-attr-valid advisoryNone axe-coreEvery pageDeclared
skip-link advisoryNone axe-core, lighthouseEvery pageDeclared
tabindex advisoryNone axe-core, lighthouseEvery pagetabindex-positiveDeclared
table-duplicate-name advisoryNone axe-core, lighthouseEvery pageDeclared

What this list does not tell you

A rule list is not coverage. Automated testing finds roughly a third of WCAG problems. The rest need a person: whether captions are accurate, whether a focus order preserves meaning, whether an error message actually explains the error. We report which criteria were evaluated on each scan and mark the rest as not tested, rather than counting them as passes. No scan, ours included, can tell you a site conforms.

Seen firing and declared are different claims. 17 of 287 rules have been seen firing in our own test runs, against broken markup committed to this repository. The other 270 are declared by the engine that owns them, in its own rule metadata, and we have not yet watched them fire ourselves. The fix guides are where that demonstration lives.

Not every rule runs on every scan. 17 rules do not run on every page: Lighthouse audits the start page only, the mobile sweep runs on the start page and only on some plans, a few rules run only when a scan targets AAA, and a check that is built but not switched on yet says so. The Where it runs column assumes the default WCAG AA target; a scan that targets Level A skips the AA rules.

Rules are not the whole scanner. Contrast measurement, focus-graph analysis and the keyboard walk report through the same field but are measurements rather than named rules, so they are represented here only where they stamp a rule id. Engine-level accuracy is measured separately on the benchmark and in the field audits.

Using a rule id

The ids above are the ones the report, the SARIF output and the CI gate all print, so you can silence one finding class in a build without turning off the scan. The GitHub Action reference documents the ignore-rules input, and the developer overview covers how a scan runs in a pull request.