Skip to content
Media

ARIA Validator

Check HTML for accessibility and ARIA issues with fix suggestions.

ariaaccessibilityhtmlwcagvalidate
Loading tool…

About this ARIA and accessibility validator

The ARIA Validator parses an HTML snippet and surfaces the accessibility problems hiding in it, ranked as errors or warnings with concrete fix suggestions. Paste markup into the textarea and the tool runs twelve rule checks locally with DOMParser: missing lang on the html element, img tags without alt, alt text over 125 characters, inputs without an associated label, empty buttons, empty links, heading level skips, missing or duplicated h1 elements, role="button" misused on divs, interactive elements with no accessible name, and SVGs lacking role or aria-label. Every finding lists its rule id, the offending element, and a suggestion written for a developer who wants to fix rather than merely diagnose — for example, preferring a real button element over role="button" with manual keyboard handlers. A stats row summarizes errors, warnings, and the total, and a "Load sample (with issues)" button drops in intentionally broken markup for a tour of the rule set. This free HTML accessibility checker is honest about its scope, noting that a screen reader or axe-core audit should follow any automated pass.

ARIA validation examples

Input
Pasting: <img src="/hero.jpg" />
Output
An "error" finding with rule img-missing-alt, the element <img src="/hero.jpg">, and the suggestion to add alt="" for decorative or descriptive text for informative images.
Note: Errors render in red with a direct fix path, not just a warning.
Input
Markup containing <h1>Welcome</h1> <h3>Subheading</h3>
Output
A "warning" finding with rule heading-skip: "Heading skips from h1 to h3. Don't skip levels — use h2 instead."
Note: Heading order matters for screen-reader navigation, not just SEO.
Input
The bundled sample (loaded via "Load sample (with issues)").
Output
A multi-item list covering missing alt, an empty button, an empty link, an unlabelled input, heading problems, a role="button" ul, and an unlabelled SVG.
Note: The sample exists to demonstrate every rule the validator applies.

How to validate ARIA attributes in HTML

  1. 1

    Paste your HTML into the "HTML markup" textarea, or click "Load sample (with issues)".

  2. 2

    Watch the Errors, Warnings, and Total issues stats update as you type.

  3. 3

    Scan the "Issues found" list — red badges are errors, amber are warnings.

  4. 4

    Read each rule id, element, and suggestion to plan fixes.

  5. 5

    Fix the markup, paste it again, and repeat until the green "All checks passed" panel appears.

When to run an accessibility check on markup

  • Pre-flight checking a landing page template before an accessibility audit.
  • Reviewing a component's rendered HTML for missing labels during development.
  • Catching empty icon buttons and links across a component library.
  • Enforcing heading hierarchy on a CMS-driven article template.
  • Training junior developers to spot ARIA misuse like role="button" on divs.
  • Quick regression checks after refactoring form markup.

ARIA and accessibility best practices

  • Treat this as a fast static first pass — follow up with axe-core and a screen reader.
  • Fix errors before warnings; missing alt and labels block real users first.
  • Use the rule ids (img-missing-alt, input-no-label) to standardize team checklists.
  • Paste complete structures, since the checker needs parent elements to test wrapping labels.
  • Re-check after every fix, as removing one issue can reveal another.

ARIA validator tips

  • Clear the textarea with the Clear button when switching between snippets.
  • The element column quotes the exact tag, so search your codebase with it.
  • Load the sample first to see what a failing markup looks like.
  • Keep the rule id handy when filing issues — it maps to your style guide.

ARIA validator FAQ

Twelve automated checks covering the most common accessibility failures: missing lang on the html element, images without alt text, alt text over 125 characters, inputs without labels, empty buttons and links, heading level skips, missing or duplicated h1 elements, role="button" misused on non-interactive elements, interactive elements with no accessible name, and SVGs lacking role or aria-label. Each finding is ranked as an error or a warning and ships with a concrete fix suggestion, so the output reads like a code-review comment rather than a scanner dump.

No. Parsing happens locally in your browser tab with the DOMParser API, and the interface states explicitly that no markup leaves the browser. That makes the tool safe for unreleased product code, internal staging markup, or client content you could not paste into a third-party web service — the accessibility check runs entirely on your machine.

Errors are findings that clearly fail accessibility expectations — an img without alt or an input without a label breaks WCAG 4.1.2 (Name, Role, Value) for screen-reader users. Warnings flag risky or context-dependent patterns, such as a skipped heading level, alt text longer than 125 characters, or role="button" on a div instead of a real button element. Fix errors first; then read the warnings with your layout in mind.

Every finding shows a level badge (red for errors, amber for warnings), a rule id such as heading-skip or img-missing-alt, the offending element quoted as code, and a plain-language suggestion describing the fix. The element snippet doubles as a search string — paste it into your editor or codebase search to jump straight to the source line.

No — and the tool says so itself. Automated static checks catch roughly a third of real accessibility issues; keyboard traps, focus order, colour contrast, and screen-reader behaviour all need manual or axe-core testing. Treat the green "All checks passed" panel as a floor, not a certification: it means the twelve automated rules found nothing, and a manual pass with a screen reader is the recommended next step.

Both. Paste a fragment — a modal, a form, a nav bar — or the entire document including html, head, and body. Full documents get the most coverage because the missing-lang rule inspects the root html element and the duplicate-h1 rule scans every heading on the page, neither of which can fire on a small fragment.

Explore more media tools

Browse the full collection of media tools on the hub, or jump back to all categories.

Related tools

Did this tool help?

Anonymous — one tap, no sign-up.