utilities.dev

ARIA Attributes Validator

Inspect HTML snippets for common ARIA misuse: invalid aria-* names, malformed ID references, and role+aria mismatches.

Validation runs entirely in your browser; no HTML is sent to a server or stored.

HTML Input
Paste HTML snippets to validate ARIA attributes
Validation Results
Issues found in your HTML
2 issues found
  • Invalid attributeLine 4

    Invalid ARIA attribute: "aria-foo" is not a valid WAI-ARIA attribute.

    <div aria-foo="invalid">test</div>
  • Role/label mismatchLine 2

    Role "button" typically requires aria-label or aria-labelledby for an accessible name.

    <div role="button">Click me</div>

How to use this tool

  1. Paste your HTML snippet into the input area.
  2. Review the validation results for invalid attributes, malformed references, and role-label issues.
  3. Fix reported issues and re-run validation until the snippet passes.

About ARIA Attributes Validator

This tool helps developers catch ARIA mistakes before they reach production, reducing accessibility barriers for screen reader users. It uses heuristics and does not replace full accessibility testing with assistive technologies.

Common use cases

  • Auditing component markup for invalid or misspelled ARIA attributes
  • Checking aria-labelledby and aria-describedby reference syntax before deploy
  • Catching role elements that lack required accessible names

FAQ

What does this ARIA validator check for?
It checks for invalid aria-* attribute names, malformed ID references in aria-labelledby and aria-describedby, and roles that typically require aria-label or aria-labelledby but lack them.
Does this tool send my HTML to a server?
No, all validation runs locally in your browser. Your HTML is never sent to a server or stored.
What ARIA attributes are considered valid?
The validator uses the WAI-ARIA 1.2 attribute list. Custom or non-standard aria-* attributes will be flagged as invalid.
Why does role=button without a label get flagged?
Interactive roles like button require an accessible name so screen readers can announce the control. Use aria-label or aria-labelledby to provide one.

Related tools