1. Home
  2. Developer tools
  3. HTML Accessibility Checker

HTML Accessibility Checker

Catch the accessibility mistakes that are visible in the markup before a page ships, and learn which WCAG criterion each one breaks.

Free, no sign-up. Runs in your browser: nothing is uploaded.

How to use HTML Accessibility Checker

  1. Paste a page or a component’s HTML.
  2. Read each finding with its WCAG reference.
  3. Fix the markup and paste again.

Features

  • 22 rules: images, forms, buttons, links, headings, landmarks, ARIA, frames and tables
  • WCAG 2.2 success criterion for each finding
  • Rule names that match axe-core
  • Snippet of the offending element
  • Works on fragments as well as full pages

Supported formats

Input

  • HTML

You get

  • Screen view

Private by design

Everything you enter is processed by your browser on this device. Nothing is sent to openWorkstand or anyone else, so the HTML Accessibility Checker is safe for private and work data. After you have used it once while online, it also works without an internet connection. How local processing works

Good to know

  • Static markup only: colour contrast, focus visibility and script-driven behaviour are not tested.
  • Automated checks find only some accessibility problems.

Guide

Finding accessibility problems in HTML before users do

Many accessibility failures are visible in the markup itself: an image with no alternative text, a field with no label, a button that says nothing to a screen reader. They keep some visitors from using a page, and they are cheap to fix when found early. This checker reads a page or a component’s HTML, applies 22 rules based on WCAG 2.2 and ARIA, and lists every problem with the criterion it breaks.

How the check works

The HTML you paste is parsed by the browser’s own parser, so it is repaired the way a real page would be. Rules then look at the resulting tree. Each finding shows whether it is an error, something that will block or mislead some users, or a warning, a likely problem or bad practice, plus a snippet of the element so you can find it. Rule names follow axe-core, the engine behind many accessibility tools, which makes them easy to look up.

Images, forms and controls

Images need an alt attribute: descriptive text when the image carries meaning and an empty alt="" when it is decoration. File names used as alt text, such as jacket.jpg, are flagged. Form fields need a programmatic label, either a label element linked with for and id, a wrapping label, aria-label or aria-labelledby; a placeholder alone does not count. Buttons and links need an accessible name from their text, image alt or ARIA label, and vague link text like “click here” is a warning because screen-reader users often browse a list of links out of context.

Structure and landmarks

Headings should not skip levels, so an h3 right after an h1 is flagged, and empty headings are errors. For a whole page, the rules expect a language on the html element, a title, an h1 and a single main landmark so assistive technology users can jump straight to the content. These page-level rules only run when the input includes an html element, so a pasted component is not blamed for lacking them.

ARIA and keyboard use

Invalid role names are errors, since a misspelled role is ignored or misread. An aria-hidden="true" element that contains something focusable hides it from screen readers while keyboard users can still reach it, which is reported. Positive tabindex values change the natural focus order and are a warning. Duplicate ids break label and ARIA references, and clickable div or span elements without a role and tabindex are flagged because they cannot be operated with a keyboard.

A worked example

The Sample is a small shop page with deliberate mistakes. It produces 10 errors and 6 warnings: the missing lang attribute, the logo image without alt, the file name used as alt text, an email field with only a placeholder, an empty button, an icon-only cart link, a clickable div, the h1-to-h3 jump, a missing main landmark, duplicate note ids, an iframe without a title, an invalid buton role on an aria-hidden block containing a link, a positive tabindex and a table without header cells. Each finding names the element.

What markup checks cannot find

Static analysis cannot judge whether alt text is meaningful, whether the reading order makes sense, whether colour contrast is sufficient, whether focus is visible, or what scripts do after load. Automated tools overall detect only a minority of accessibility issues. Treat a clean report as a starting point.

A practical routine

Fix the errors here, then tab through the page with a keyboard, check contrast with the Contrast Checker, zoom to 200 percent, and try a screen reader such as NVDA or VoiceOver on the main task. Repeat after changes to components, not just before launch.

Checked against the current version of the HTML Accessibility Checker on .

Frequently asked questions

Which WCAG level should I aim for?

Level AA is the usual legal and contractual target, for example in the European Accessibility Act and many procurement rules. Level A is the minimum and AAA is not required as a whole. The criteria this checker cites are mostly Level A and AA.

Why is a clickable div an error?

A div has no role, cannot be focused with the Tab key and does not react to Enter or Space, so keyboard and screen-reader users cannot use it. A real button element gives all of that for free, which is why the checker recommends it.

Is a placeholder enough as a form label?

No. The placeholder disappears as soon as someone types, often has low contrast, and is not reliably announced by every screen reader. Use a visible <label> linked with for and id.

If this finds nothing, is my page accessible?

Not necessarily. Automated checks catch a minority of issues. Keyboard-only use, screen-reader testing, colour contrast and whether the content makes sense still need a person.

Keep working with the result

openWorkstand also includes a free workspace with documents, spreadsheets, tasks, projects and a calendar that save to a folder on your computer.