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
| Engine | Kind | Catalogued rules |
|---|---|---|
| axe-core | Engine | 89 |
| ibm-equal-access | Engine | 162 |
| arc-style | Engine | 19 |
| pa11y | Engine | None with a stable id |
| lighthouse | Engine | 66 |
| alt-text-vision | In-house analyzer | 1 |
| focus-graph | In-house analyzer | 2 |
| form-behavior | In-house analyzer | 3 |
| keyboard-nav-tester | In-house analyzer | 1 |
| language-check | In-house analyzer | 2 |
| mobile-accessibility | In-house analyzer | 8 |
| wcag-checks | In-house analyzer | 1 |
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.
| Rule id | Criterion | Engines | Where it runs | Same defect as | Verified fix | Evidence |
|---|---|---|---|---|---|---|
| alt-text-inaccurate | 1.1.1 A | alt-text-vision | Team and Business plans, not switched on yet | Declared | ||
| aria-meter-name | 1.1.1 A Reported as 4.1.2 A by lighthouse | axe-core, lighthouse | Every page | aria-input-field-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, label, select-name | Declared | |
| aria-progressbar-name | 1.1.1 A Reported as 4.1.2 A by lighthouse | axe-core, lighthouse | Every page | aria-input-field-name, aria-meter-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, label, select-name | Declared | |
| ibm-applet_alt_exists | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-application_content_accessible | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-area_alt_exists | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-imagebutton_alt_exists | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-imagemap_alt_exists | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-img_alt_decorative | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-img_alt_misuse | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-img_alt_null | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-img_alt_redundant | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-img_alt_valid | 1.1.1 A | ibm-equal-access | Every page | image-alt | Seen firing | |
| ibm-img_ismap_misuse | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-img_longdesc_misuse | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-media_alt_exists | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-object_text_exists | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-style_background_decorative | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-svg_graphics_labelled | 1.1.1 A | ibm-equal-access | Every page | svg-accessible-name, svg-img-alt | Seen firing | |
| image-alt | 1.1.1 A | axe-core, lighthouse | Every page | ibm-img_alt_valid | alt_text | Seen firing |
| input-image-alt | 1.1.1 A | axe-core, lighthouse | Every page | alt_text | Declared | |
| object-alt | 1.1.1 A | axe-core, lighthouse | Every page | Declared | ||
| role-img-alt | 1.1.1 A | axe-core | Every page | alt_text | Declared | |
| svg-accessible-name | 1.1.1 A | arc-style | Every page | ibm-svg_graphics_labelled, svg-img-alt | Declared | |
| svg-img-alt | 1.1.1 A | axe-core, lighthouse | Every page | ibm-svg_graphics_labelled, svg-accessible-name | alt_text | Seen firing |
| ibm-caption_track_exists | 1.2.2 A | ibm-equal-access | Every page | Declared | ||
| video-caption | 1.2.2 A | axe-core, lighthouse | Every page | Declared | ||
| aria-hidden-body | 1.3.1 A Reported as 4.1.2 A by lighthouse | axe-core, lighthouse | Every page | Declared | ||
| aria-required-children | 1.3.1 A Reported as 4.1.2 A by arc-style | arc-style, axe-core, lighthouse | Every page | Declared | ||
| aria-required-parent | 1.3.1 A | axe-core, lighthouse | Every page | Declared | ||
| definition-list | 1.3.1 A | axe-core, lighthouse | Every page | Declared | ||
| dlitem | 1.3.1 A | axe-core, lighthouse | Every page | Declared | ||
| ibm-aria_banner_label_unique | 1.3.1 A | ibm-equal-access | Every page | ibm-aria_contentinfo_label_unique, ibm-aria_main_label_unique, landmark-main-multiple, landmark-no-duplicate-banner, landmark-no-duplicate-contentinfo, landmark-no-duplicate-main | Declared | |
| ibm-aria_banner_single | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_complementary_label_unique | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_complementary_labelled | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_contentinfo_label_unique | 1.3.1 A | ibm-equal-access | Every page | ibm-aria_banner_label_unique, ibm-aria_main_label_unique, landmark-main-multiple, landmark-no-duplicate-banner, landmark-no-duplicate-contentinfo, landmark-no-duplicate-main | Declared | |
| ibm-aria_contentinfo_single | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_form_label_unique | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_hidden_nontabbable | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_main_label_unique | 1.3.1 A | ibm-equal-access | Every page | ibm-aria_banner_label_unique, ibm-aria_contentinfo_label_unique, landmark-main-multiple, landmark-no-duplicate-banner, landmark-no-duplicate-contentinfo, landmark-no-duplicate-main | Declared | |
| ibm-aria_navigation_label_unique | 1.3.1 A | ibm-equal-access | Every page | ibm-aria_region_label_unique, landmark-unique | Declared | |
| ibm-aria_parent_required | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_region_label_unique | 1.3.1 A | ibm-equal-access | Every page | ibm-aria_navigation_label_unique, landmark-unique | Declared | |
| ibm-aria_region_labelled | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-blockquote_cite_exists | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-fieldset_label_valid | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-form_label_unique | 1.3.1 A | ibm-equal-access | Every page | Seen firing | ||
| ibm-heading_markup_misuse | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-input_checkboxes_grouped | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-label_ref_valid | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-list_markup_review | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-table_caption_empty | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-table_caption_nested | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-table_headers_exists | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-table_headers_ref_valid | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-table_headers_related | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-table_scope_valid | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-table_structure_misuse | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-table_summary_redundant | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-text_block_heading | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-text_quoted_correctly | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| input-label-missing | 1.3.1 A | arc-style | Every page | aria-input-field-name, aria-meter-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-placeholder-only, label, select-name | Declared | |
| input-label-placeholder-only | 1.3.1 A | arc-style | Every page | aria-input-field-name, aria-meter-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, label, select-name | Seen firing | |
| landmark-main-multiple | 1.3.1 A | arc-style | Every page | ibm-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-main | Declared | |
| list | 1.3.1 A | axe-core, lighthouse | Every page | Declared | ||
| listitem | 1.3.1 A | axe-core, lighthouse | Every page | Declared | ||
| table-fake-caption | 1.3.1 A | lighthouse | Start page only | Declared | ||
| td-has-header | 1.3.1 A Reported as no criterion by lighthouse | lighthouse | Start page only | Declared | ||
| td-headers-attr | 1.3.1 A | axe-core, lighthouse | Every page | Declared | ||
| th-has-data-cells | 1.3.1 A | axe-core, lighthouse | Every page | Declared | ||
| ibm-dir_attribute_valid | 1.3.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-text_whitespace_valid | 1.3.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-text_sensory_misuse | 1.3.3 A | ibm-equal-access | Every page | Declared | ||
| ibm-element_orientation_unlocked | 1.3.4 AA | ibm-equal-access | Every page | Declared | ||
| mobile-orientation-locked | 1.3.4 AA | mobile-accessibility | Start page only, Business plan | Declared | ||
| autocomplete-valid | 1.3.5 AA Reported as no criterion by lighthouse | axe-core, lighthouse | Every page | Declared | ||
| ibm-input_autocomplete_valid | 1.3.5 AA | ibm-equal-access | Every page | Declared | ||
| ibm-form_font_color | 1.4.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-style_color_misuse | 1.4.1 A | ibm-equal-access | Every page | Declared | ||
| link-in-text-block | 1.4.1 A | axe-core, lighthouse | Every page | Declared | ||
| ibm-media_autostart_controllable | 1.4.2 A | ibm-equal-access | Every page | Declared | ||
| color-contrast | 1.4.3 AA | axe-core, lighthouse | Every page | color_contrast | Seen firing | |
| ibm-text_contrast_sufficient | 1.4.3 AA | ibm-equal-access | Every page | Declared | ||
| ibm-style_viewport_resizable | 1.4.4 AA | ibm-equal-access | Every page | Declared | ||
| meta-viewport | 1.4.4 AA | axe-core, lighthouse | Every page | mobile-viewport-zoom-blocked | Declared | |
| mobile-viewport-zoom-blocked | 1.4.4 AA | mobile-accessibility | Start page only, Business plan | meta-viewport | Declared | |
| mobile-horizontal-scroll | 1.4.10 AA | mobile-accessibility | Start page only, Business plan | Declared | ||
| avoid-inline-spacing | 1.4.12 AA | axe-core | Every page | Declared | ||
| ibm-text_spacing_valid | 1.4.12 AA | ibm-equal-access | Every page | Declared | ||
| ibm-style_hover_persistent | 1.4.13 AA | ibm-equal-access | Every page | Declared | ||
| button-keyboard | 2.1.1 A | arc-style | Every page | Declared | ||
| frame-focusable-content | 2.1.1 A | axe-core | Every page | Declared | ||
| ibm-aria_activedescendant_tabindex_valid | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_child_tabbable | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_keyboard_handler_exists | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-iframe_interactive_tabbable | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-media_keyboard_controllable | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-script_focus_blur_review | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-script_onclick_misuse | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-widget_tabbable_exists | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-widget_tabbable_single | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| scrollable-region-focusable | 2.1.1 A | axe-core | Every page | Declared | ||
| server-side-image-map | 2.1.1 A | axe-core | Every page | Declared | ||
| focus-trap-graph | 2.1.2 A | focus-graph | Every page | Declared | ||
| ibm-meta_refresh_delay | 2.2.1 A | ibm-equal-access | Every page | Declared | ||
| meta-refresh | 2.2.1 A | axe-core, lighthouse | Every page | Declared | ||
| blink | 2.2.2 A | axe-core | Every page | Declared | ||
| ibm-blink_css_review | 2.2.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-blink_elem_deprecated | 2.2.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-marquee_elem_avoid | 2.2.2 A | ibm-equal-access | Every page | Declared | ||
| marquee | 2.2.2 A | axe-core | Every page | Declared | ||
| bypass | 2.4.1 A | lighthouse | Start page only | Declared | ||
| ibm-aria_application_label_unique | 2.4.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_application_labelled | 2.4.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_document_label_unique | 2.4.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_toolbar_label_unique | 2.4.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-frame_src_valid | 2.4.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-html_skipnav_exists | 2.4.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-skip_main_described | 2.4.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-skip_main_exists | 2.4.1 A | ibm-equal-access | Every page | Declared | ||
| skip-link-broken | 2.4.1 A | keyboard-nav-tester | Every page | skip-link-missing | Declared | |
| skip-link-missing | 2.4.1 A | arc-style | Every page | skip-link-broken | Seen firing | |
| document-title | 2.4.2 A | axe-core, lighthouse | Every page | Declared | ||
| ibm-page_title_exists | 2.4.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-page_title_valid | 2.4.2 A | ibm-equal-access | Every page | Declared | ||
| tabindex-positive | 2.4.3 A | arc-style | Every page | tabindex | Declared | |
| area-alt | 2.4.4 A | axe-core | Every page | Declared | ||
| empty-button-link | 2.4.4 A | arc-style | Every page | Declared | ||
| ibm-a_text_purpose | 2.4.4 A | ibm-equal-access | Every page | link-name | Declared | |
| link-name | 2.4.4 A Reported as 4.1.2 A by lighthouse | axe-core, lighthouse | Every page | ibm-a_text_purpose | aria_label | Declared |
| ibm-element_tabbable_visible | 2.4.7 AA | ibm-equal-access | Every page | Declared | ||
| ibm-style_focus_visible | 2.4.7 AA | ibm-equal-access | Every page | Declared | ||
| ibm-element_tabbable_unobscured | 2.4.11 AA | ibm-equal-access | Every page | Declared | ||
| ibm-input_label_visible | 2.5.3 A | ibm-equal-access | Every page | Declared | ||
| ibm-label_name_visible | 2.5.3 A | ibm-equal-access | Every page | label-content-name-mismatch | Seen firing | |
| label-content-name-mismatch | 2.5.3 A | lighthouse | Start page only | ibm-label_name_visible | Declared | |
| ibm-draggable_alternative_exists | 2.5.7 AA | ibm-equal-access | Every page | Declared | ||
| ibm-target_spacing_sufficient | 2.5.8 AA | ibm-equal-access | Every page | Seen firing | ||
| mobile-target-size-aa-fail | 2.5.8 AA | mobile-accessibility | Start page only, Business plan | target-size | Declared | |
| target-size | 2.5.8 AA | axe-core, lighthouse | Every page | mobile-target-size-aa-fail | Seen firing | |
| html-has-lang | 3.1.1 A | axe-core, lighthouse | Every page | ibm-html_lang_exists | Declared | |
| html-lang-valid | 3.1.1 A | axe-core, lighthouse | Every page | ibm-html_lang_valid | Declared | |
| html-xml-lang-mismatch | 3.1.1 A | axe-core, lighthouse | Every page | Declared | ||
| ibm-html_lang_exists | 3.1.1 A | ibm-equal-access | Every page | html-has-lang | Declared | |
| ibm-html_lang_valid | 3.1.1 A | ibm-equal-access | Every page | html-lang-valid | Declared | |
| ibm-element_lang_valid | 3.1.2 AA | ibm-equal-access | Every page | Declared | ||
| lang-part-mismatch | 3.1.2 AA | language-check | Every page | Declared | ||
| lang-part-undeclared | 3.1.2 AA | language-check | Every page | Declared | ||
| valid-lang | 3.1.2 AA | axe-core, lighthouse | Every page | Declared | ||
| ibm-script_select_review | 3.2.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-form_interaction_review | 3.2.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-form_submit_button_exists | 3.2.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-input_onchange_review | 3.2.2 A | ibm-equal-access | Every page | Declared | ||
| form-error-association | 3.3.1 A | form-behavior | Every page | Declared | ||
| ibm-error_message_exists | 3.3.1 A | ibm-equal-access | Every page | Declared | ||
| form-field-multiple-labels | 3.3.2 A | axe-core, lighthouse | Every page | label_for | Declared | |
| ibm-input_label_after | 3.3.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-input_label_before | 3.3.2 A | ibm-equal-access | Every page | Declared | ||
| aria-allowed-attr | 4.1.2 A | axe-core, lighthouse | Every page | aria-prohibited-attr, ibm-aria_attribute_valid | Declared | |
| aria-command-name | 4.1.2 A | axe-core, lighthouse | Every page | aria_label | Declared | |
| aria-conditional-attr | 4.1.2 A Reported as no criterion by lighthouse | axe-core, lighthouse | Every page | Declared | ||
| aria-deprecated-role | 4.1.2 A | axe-core, lighthouse | Every page | Declared | ||
| aria-hidden-focus | 4.1.2 A | arc-style, axe-core, lighthouse | Every page | Declared | ||
| aria-hidden-focus-honeypot | 4.1.2 A | arc-style | Every page | Declared | ||
| aria-input-field-name | 4.1.2 A | axe-core, lighthouse | Every page | aria-meter-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, label, select-name | aria_label | Declared |
| aria-name-missing | 4.1.2 A | arc-style | Every page | button-name | Seen firing | |
| aria-prohibited-attr | 4.1.2 A Reported as no criterion by lighthouse | axe-core, lighthouse | Every page | aria-allowed-attr, ibm-aria_attribute_valid | Declared | |
| aria-required-attr | 4.1.2 A | arc-style, axe-core, lighthouse | Every page | Declared | ||
| aria-role-invalid | 4.1.2 A | arc-style | Every page | aria-roles | Declared | |
| aria-roles | 4.1.2 A | axe-core, lighthouse | Every page | aria-role-invalid | Declared | |
| aria-tab-name | 4.1.2 A | axe-core | Every page | Declared | ||
| aria-toggle-field-name | 4.1.2 A | axe-core, lighthouse | Every page | aria-input-field-name, aria-meter-name, aria-progressbar-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, label, select-name | aria_label | Declared |
| aria-tooltip-name | 4.1.2 A | axe-core, lighthouse | Every page | Declared | ||
| aria-valid-attr | 4.1.2 A | axe-core, lighthouse | Every page | Declared | ||
| aria-valid-attr-value | 4.1.2 A | arc-style, axe-core, lighthouse | Every page | ibm-aria_id_unique | aria_describedby_idref | Seen firing |
| button-name | 4.1.2 A | axe-core, lighthouse | Every page | aria-name-missing | aria_label | Declared |
| duplicate-id | 4.1.2 A Reported as no criterion by arc-style | arc-style | Every page | Seen firing | ||
| duplicate-id-aria | 4.1.2 A | lighthouse | Start page only | Declared | ||
| form-error-aria-invalid | 4.1.2 A | form-behavior | Every page | Declared | ||
| frame-title | 4.1.2 A | axe-core, lighthouse | Every page | Declared | ||
| frame-title-unique | 4.1.2 A | axe-core | Every page | Declared | ||
| ibm-aria_activedescendant_valid | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_attribute_allowed | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_attribute_conflict | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_attribute_exists | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_attribute_required | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_attribute_valid | 4.1.2 A | ibm-equal-access | Every page | aria-allowed-attr, aria-prohibited-attr | Declared | |
| ibm-aria_attribute_value_valid | 4.1.2 A | ibm-equal-access | Every page | Seen firing | ||
| ibm-aria_descendant_valid | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_eventhandler_role_valid | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_id_unique | 4.1.2 A | ibm-equal-access | Every page | aria-valid-attr-value | Declared | |
| ibm-aria_role_allowed | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_role_valid | 4.1.2 A | ibm-equal-access | Every page | aria-allowed-role | Declared | |
| ibm-aria_widget_labelled | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-combobox_active_descendant | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-combobox_autocomplete_valid | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-combobox_design_valid | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-combobox_focusable_elements | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-combobox_haspopup_valid | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-combobox_popup_reference | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-frame_title_exists | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-input_haspopup_conflict | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-input_label_exists | 4.1.2 A | ibm-equal-access | Every page | aria-input-field-name, aria-meter-name, aria-progressbar-name, aria-toggle-field-name, input-label-missing, input-label-placeholder-only, label, select-name | Declared | |
| ibm-label_content_exists | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-list_children_valid | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-table_aria_descendants | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| input-button-name | 4.1.2 A | axe-core, lighthouse | Every page | aria_label | Declared | |
| label | 4.1.2 A Reported as 3.3.2 A by lighthouse | axe-core, lighthouse | Every page | aria-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-name | form_label | Declared |
| nested-interactive | 4.1.2 A | axe-core | Every page | Declared | ||
| nested-role-<role> family | 4.1.2 A | arc-style | Every page | Declared | ||
| select-name | 4.1.2 A | axe-core, lighthouse | Every page | aria-input-field-name, aria-meter-name, aria-progressbar-name, aria-toggle-field-name, ibm-input_label_exists, input-label-missing, input-label-placeholder-only, label | form_label | Declared |
| summary-name | 4.1.2 A | axe-core | Every page | Declared | ||
| heading-order | None Reported as 1.3.1 A by arc-style, lighthouse | arc-style, axe-core, lighthouse | Every page | heading_hierarchy | Seen 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.
| Rule id | Criterion | Engines | Where it runs | Same defect as | Verified fix | Evidence |
|---|---|---|---|---|---|---|
| ibm-canvas_content_described advisory | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-embed_alt_exists advisory | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-figure_label_exists advisory | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-img_alt_background advisory | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-media_alt_brief advisory | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-noembed_content_exists advisory | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-style_highcontrast_visible advisory | 1.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-media_audio_transcribed advisory | 1.2.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-media_track_available advisory | 1.2.3 A | ibm-equal-access | Every page | Declared | ||
| ibm-media_live_captioned advisory | 1.2.4 AA | ibm-equal-access | Every page | Declared | ||
| ibm-aria_child_valid advisory | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_complementary_label_visible advisory | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_content_in_landmark advisory | 1.3.1 A | ibm-equal-access | Every page | region | Declared | |
| ibm-aria_contentinfo_misuse advisory | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_landmark_name_unique advisory | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_main_label_visible advisory | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-fieldset_legend_valid advisory | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-input_fields_grouped advisory | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-list_structure_proper advisory | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-select_options_grouped advisory | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-table_layout_linearized advisory | 1.3.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-meta_viewport_zoomable advisory | 1.4.4 AA | ibm-equal-access | Every page | Declared | ||
| color-contrast-enhanced | 1.4.6 AAA | axe-core | Every page when a scan targets AAA | color_contrast | Declared | |
| ibm-element_mouseevent_keyboard advisory | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| ibm-script_onclick_avoid advisory | 2.1.1 A | ibm-equal-access | Every page | Declared | ||
| focus-trap-graph-advisory advisory | 2.1.2 A | focus-graph | Every page | Declared | ||
| ibm-download_keyboard_controllable advisory | 2.1.2 A | ibm-equal-access | Every page | Declared | ||
| meta-refresh-no-exceptions | 2.2.4 AAA | axe-core | Every page when a scan targets AAA | Declared | ||
| ibm-heading_content_exists advisory | 2.4.6 AA | ibm-equal-access | Every page | Declared | ||
| identical-links-same-purpose | 2.4.9 AAA | axe-core, lighthouse | Start page only; every page when a scan targets AAA | Declared | ||
| mobile-target-size-aaa-advisory advisory | 2.5.5 AAA | mobile-accessibility | Start page only, Business plan | Declared | ||
| mobile-target-size-advisory advisory | 2.5.5 AAA | mobile-accessibility | Start page only, Business plan | Declared | ||
| mobile-target-size-spacing-exempt-advisory advisory | 2.5.5 AAA | mobile-accessibility | Start page only, Business plan | Declared | ||
| ibm-a_target_warning advisory | 3.2.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-element_accesskey_labelled advisory | 3.3.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-element_id_unique | 4.1.1 A Obsolete in WCAG 2.2 | ibm-equal-access | Every page | Declared | ||
| ibm-aria_accessiblename_exists advisory | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-aria_attribute_redundant advisory | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| ibm-element_tabbable_role_valid advisory | 4.1.2 A | ibm-equal-access | Every page | Declared | ||
| form-error-announcement-advisory advisory | 4.1.3 AA | form-behavior | Every page | Declared | ||
| accesskeys advisory | None | axe-core, lighthouse | Every page | Declared | ||
| aria-allowed-role advisory | None | axe-core, lighthouse | Every page | ibm-aria_role_valid | Declared | |
| aria-dialog-name advisory | None | axe-core, lighthouse | Every page | Declared | ||
| aria-text advisory | None | axe-core, lighthouse | Every page | Declared | ||
| aria-treeitem-name advisory | None | axe-core, lighthouse | Every page | Declared | ||
| empty-heading advisory | None | axe-core, lighthouse | Every page | Declared | ||
| empty-table-header advisory | None | axe-core | Every page | Declared | ||
| frame-tested advisory | None | axe-core | Every page | Declared | ||
| ibm-aria_article_label_unique advisory | None | ibm-equal-access | Every page | Declared | ||
| ibm-aria_attribute_deprecated advisory | None | ibm-equal-access | Every page | Declared | ||
| ibm-aria_role_redundant advisory | None | ibm-equal-access | Every page | Declared | ||
| ibm-element_accesskey_unique advisory | None | ibm-equal-access | Every page | Declared | ||
| ibm-element_attribute_deprecated advisory | None | ibm-equal-access | Every page | Declared | ||
| image-redundant-alt advisory | None | axe-core, lighthouse | Every page | Declared | ||
| label-title-only advisory | None | axe-core | Every page | Declared | ||
| landmark-banner-is-top-level advisory | None | axe-core | Every page | Declared | ||
| landmark-contentinfo-is-top-level advisory | None | axe-core | Every page | Declared | ||
| landmark-main-is-top-level advisory | None | axe-core | Every page | Declared | ||
| landmark-main-missing advisory | None | arc-style | Every page | landmark-one-main | Declared | |
| landmark-no-duplicate-banner advisory | None | axe-core | Every page | ibm-aria_banner_label_unique, ibm-aria_contentinfo_label_unique, ibm-aria_main_label_unique, landmark-main-multiple, landmark-no-duplicate-contentinfo, landmark-no-duplicate-main | Declared | |
| landmark-no-duplicate-contentinfo advisory | None | axe-core | Every page | ibm-aria_banner_label_unique, ibm-aria_contentinfo_label_unique, ibm-aria_main_label_unique, landmark-main-multiple, landmark-no-duplicate-banner, landmark-no-duplicate-main | Declared | |
| landmark-no-duplicate-main advisory | None | axe-core | Every page | ibm-aria_banner_label_unique, ibm-aria_contentinfo_label_unique, ibm-aria_main_label_unique, landmark-main-multiple, landmark-no-duplicate-banner, landmark-no-duplicate-contentinfo | Declared | |
| landmark-one-main advisory | None | axe-core, lighthouse | Every page | landmark-main-missing | Declared | |
| landmark-unique advisory | None | axe-core | Every page | ibm-aria_navigation_label_unique, ibm-aria_region_label_unique | Declared | |
| meta-viewport-large advisory | None | axe-core | Every page | Declared | ||
| mobile-target-unreachable-advisory advisory | None | mobile-accessibility | Start page only, Business plan | Declared | ||
| page-has-heading-one advisory | None | axe-core, wcag-checks | Every page | Declared | ||
| presentation-role-conflict advisory | None | axe-core, lighthouse | Every page | Declared | ||
| region advisory | None | axe-core | Every page | ibm-aria_content_in_landmark | Seen firing | |
| scope-attr-valid advisory | None | axe-core | Every page | Declared | ||
| skip-link advisory | None | axe-core, lighthouse | Every page | Declared | ||
| tabindex advisory | None | axe-core, lighthouse | Every page | tabindex-positive | Declared | |
| table-duplicate-name advisory | None | axe-core, lighthouse | Every page | Declared |
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.