HTML Accessibility Preflight
Find source-level accessibility issues before a rendered, manual review. Pasted HTML is parsed locally and never displayed as a live page.
Up to 150,000 UTF-8 bytes, 10,000 parsed nodes, 5,000 elements and 80 levels. Ctrl/Cmd + Enter runs the check. Processing stays in your browser. Jobs stop after three seconds.
Example input is ready. Run the tool to produce a result.
A source review with a defined scope
This tool parses HTML with parse5 and examines the resulting tree without inserting your markup into the page. Scripts, images, iframes, stylesheets and event handlers in your input do not run or load. A finding contains a rule, severity, source line and column when available, a literal source snippet, and a suggested next step. Browser-style HTML recovery means malformed markup can produce implied elements or a different tree from the one you expected.
How to check a fragment or document
- Paste a component fragment or a complete HTML document.
- Choose the matching input scope. Document mode also reviews the page language, title, h1 count and main landmark count.
- Select Check HTML. Review errors first, then warnings and context-dependent review items.
- Copy or download the JSON report, fix the source, and run the check again.
What is checked
Checks cover missing image alt attributes, duplicate or whitespace-containing IDs, unresolved or ambiguous ID references, label targets, basic control labels, empty button and link names, placeholder links, empty or skipped headings, missing iframe titles, positive tabindex and click handlers on non-native controls. ID references include aria-labelledby, aria-describedby, aria-controls, aria-owns, aria-activedescendant, headers and list. Missing targets in fragment mode are warnings because their targets might live in surrounding markup.
Labels and image descriptions still need judgment
A visible label can be associated by matching its for attribute to a control ID or by containing the control. This check also recognizes simple ARIA naming and flags controls that rely only on title. Placeholder text does not count as a label. An empty image alternative is allowed because an image can be decorative; the tool cannot decide whether that choice is appropriate. The sample intentionally includes an image without alt so you can inspect a finding.
Limits and interpretation
The worker stops after three seconds. Input is limited to 150,000 UTF-8 bytes, 10,000 parsed nodes, 5,000 elements and 80 parsed nesting levels. Inert template contents count toward limits but are excluded from findings. Explicit hidden and aria-hidden subtrees are skipped for name and presentation checks; CSS visibility is not computed. Up to 200 findings are included in the list and export, while severity counts include omitted findings.
Does an empty report mean the page is accessible?
No. This is not a WCAG certification, a complete ARIA validator or a full accessible-name implementation. It does not render CSS, calculate contrast, evaluate keyboard behavior, inspect shadow DOM, execute components or test a screen reader. Review the rendered page, real interactions and content with appropriate accessibility testing methods.
Does local processing guarantee offline use?
Your pasted input is processed in your browser and is not sent to a server for analysis. The page still needs its editor and worker files. Starting a new job can require network access even after an earlier successful run, depending on browser caching and server settings. If a worker asset cannot load, the tool clears the old result and reports an error. Restore access and run the tool again. This tool does not install an offline cache or guarantee offline availability.
References
Use the W3C WAI guidance on labeling controls and image alternative decision tree for contextual decisions. The parse5 documentation explains the HTML parser used here.