ARIA Attribute Issues: Missing Required Attributes and Invalid Values
An explanation of missing required ARIA attributes and invalid ARIA attribute values, why they break assistive technology, and how the WAI-ARIA role-to-attribute contract works.
Last updated 02/08/2026
ARIA attribute issues fall into two categories: missing required attributes for a given role, and attribute values that do not match the WAI-ARIA specification. Both create a gap between what the interface presents visually and what assistive technology can communicate to users. A custom checkbox without aria-checked, or an element with aria-hidden set to 'yes' instead of 'true', produces a control that looks correct but behaves unpredictably for screen readers.
What ARIA attribute issues are
WAI-ARIA defines a contract between roles and their attributes. Each role requires specific attributes to communicate state and behavior to assistive technology. When a role is assigned without its required attributes, the browser exposes an incomplete accessibility object. When an attribute is present but its value falls outside the specification, the browser either ignores it or interprets it unpredictably. Both patterns violate WCAG 4.1.2, which requires that user interface components expose their name, role, and state programmatically.
Where teams usually encounter this
Custom interactive components are the primary source. A team builds a toggle, accordion, or menu using divs and spans, assigns an ARIA role, and stops there. The component works visually. Manual testing confirms the interaction. But the role contract is incomplete. The component never communicates its current state to anything that cannot see the screen.
Missing required attributes
The WAI-ARIA specification maps each role to a set of required attributes. role="checkbox" requires aria-checked. role="slider" requires aria-valuenow, aria-valuemin, and aria-valuemax. role="combobox" requires aria-expanded. These are not suggestions. Without them, the role declaration is structurally incomplete. A screen reader encounters a checkbox that cannot report whether it is checked. A slider that cannot report its position. The role creates an expectation the implementation does not fulfill.
Invalid attribute values
ARIA attributes accept specific value types: true/false, tristate, ID references, token lists. Common mistakes include setting aria-hidden to 'yes' instead of 'true', using aria-checked with a freeform string instead of 'true', 'false', or 'mixed', or setting aria-live to a value other than 'off', 'polite', or 'assertive'. Browsers handle invalid values inconsistently. Some ignore the attribute entirely. Others fall back to a default. The result varies by browser and assistive technology combination, which makes the failure intermittent and difficult to reproduce.
Why this happens as codebases grow
ARIA is often added as a remediation step rather than a design constraint. A component ships without ARIA. An audit flags the missing semantics. A developer adds a role without reviewing the full attribute contract for that role. The fix addresses the audit finding without addressing the specification requirement. Over time, partial ARIA implementations accumulate. Each one passes visual review. Each one breaks for users who depend on the programmatic interface.
What's wrong
Incomplete ARIA is worse than no ARIA. A native HTML element without ARIA attributes exposes its semantics through built-in browser behavior. A custom element with a role but missing required attributes overrides those defaults and replaces them with nothing. The assistive technology receives a declaration of what the element is, but no information about what state it is in.
Why it matters
Assistive technology users rely on programmatic state to operate controls they cannot see. A checkbox without aria-checked cannot be used. A slider without aria-valuenow cannot be adjusted with any understanding of the current position. These are not edge cases. They are the primary interaction path for screen reader users. The interface appears functional in sighted testing because visual rendering does not depend on ARIA. The failure is entirely invisible to anyone not using assistive technology.
The correct change
Audit every element with an ARIA role against the WAI-ARIA specification for that role's required attributes. Add missing attributes and bind them to component state so they update dynamically. Replace invalid attribute values with values from the specification's allowed set. Where possible, replace custom ARIA implementations with native HTML elements that provide the same semantics without requiring manual attribute management.
Scope
This applies at the page level to every element that uses an ARIA role or ARIA attribute. The violation is per-element, but the pattern typically recurs across a shared component library. Fixing the component at its source resolves every instance where it appears.
How to verify
Run an accessibility audit that checks role-to-attribute requirements. Inspect each element with an ARIA role in the browser's accessibility tree and confirm that all required attributes are present and carry valid values. Test with a screen reader to confirm that interactive controls report their state correctly during use.
What becomes clearer once ARIA attributes are correct
- Which custom components have complete programmatic interfaces
- Where native HTML elements could replace custom ARIA implementations
- Which interactive patterns are invisible to assistive technology
- Where component state is tracked visually but never exposed programmatically