Developer rule guides

Fix common axe-core accessibility errors

Short, practical pages for the rule IDs developers paste from automated accessibility scans. Each guide explains the impact, WCAG mapping, failing markup, fixed code, and what still needs human review.

20 reviewed guides ยท axe-core 4.12.1

color-contrastWCAG 1.4.3

Fix color-contrast axe errors

Text does not have enough contrast against its background for many low-vision users to read it comfortably.

Read rule guide
image-altWCAG 1.1.1

Fix image-alt axe errors

An image is missing an alternative-text decision, so a screen reader may lose the information or announce a raw filename.

Read rule guide
labelWCAG 4.1.2

Fix label axe errors

A form control has no programmatic label, so assistive technology cannot reliably announce what input is expected.

Read rule guide
button-nameWCAG 4.1.2

Fix button-name axe errors

A button has no accessible name, so assistive-technology users cannot tell which action it performs.

Read rule guide
link-nameWCAG 2.4.4, 4.1.2

Fix link-name axe errors

A link has no accessible name, leaving its destination or purpose unclear to assistive-technology users.

Read rule guide
aria-required-attrWCAG 4.1.2

Fix aria-required-attr axe errors

An ARIA role is missing state or value attributes required by that role, so the widget may be exposed incompletely.

Read rule guide
html-has-langWCAG 3.1.1

Fix html-has-lang axe errors

The document does not declare its default language, so assistive technology may choose the wrong pronunciation rules.

Read rule guide
document-titleWCAG 2.4.2

Fix document-title axe errors

The document has no non-empty title, making browser tabs, history and assistive navigation harder to understand.

Read rule guide
meta-viewportWCAG 1.4.4

Fix meta-viewport axe errors

The viewport configuration disables or restricts zoom, preventing some low-vision users from enlarging page content.

Read rule guide
aria-valid-attrWCAG 4.1.2

Fix aria-valid-attr axe errors

An attribute beginning with aria- is misspelled or not defined by ARIA, so browsers and assistive technology may ignore it.

Read rule guide
aria-allowed-attrWCAG 4.1.2

Fix aria-allowed-attr axe errors

An element uses an ARIA attribute that its current role does not support, so the intended state may not be exposed consistently.

Read rule guide
aria-hidden-focusWCAG 4.1.2

Fix aria-hidden-focus axe errors

Content hidden from the accessibility tree can still receive keyboard focus, creating a control that is focusable but not announced.

Read rule guide
aria-valid-attr-valueWCAG 4.1.2

Fix aria-valid-attr-value axe errors

An ARIA attribute contains a value outside the type or allowed tokens defined for that attribute.

Read rule guide
aria-required-childrenWCAG 1.3.1

Fix aria-required-children axe errors

A composite ARIA role does not contain the child roles required to expose its internal structure.

Read rule guide
aria-rolesWCAG 4.1.2

Fix aria-roles axe errors

A role attribute is empty, misspelled or contains no recognized ARIA role, so the element's intended semantics are not exposed.

Read rule guide
duplicate-id-ariaWCAG 4.1.2

Fix duplicate-id-aria axe errors

An ID used by a label or ARIA relationship is duplicated, so the browser may resolve the relationship to the wrong element.

Read rule guide
nested-interactiveWCAG 4.1.2

Fix nested-interactive axe errors

An interactive control contains another focusable control, creating ambiguous focus and activation behavior.

Read rule guide
select-nameWCAG 4.1.2

Fix select-name axe errors

A select element has no accessible name, so users cannot determine what choice the control represents.

Read rule guide
scrollable-region-focusableWCAG 2.1.1

Fix scrollable-region-focusable axe errors

A region with overflowing content cannot receive keyboard focus, so keyboard users may be unable to scroll it.

Read rule guide
autocomplete-validWCAG 1.3.5

Fix autocomplete-valid axe errors

A personal-data field uses an invalid or unsuitable autocomplete token, preventing browsers and assistive tools from identifying its purpose reliably.

Read rule guide