Real rule engine
Checks alt text, heading order, labels, fake buttons and ARIA misuse against your actual markup tree.
Paste any HTML snippet or full page and get an instant structural lint report — missing alt text, heading skips, unlabeled fields, fake buttons and more.
Paste some HTML above and click "Lint HTML" to see findings here.
Checks alt text, heading order, labels, fake buttons and ARIA misuse against your actual markup tree.
DOMParser runs entirely in your browser, so results appear the moment you click Lint.
Every finding is labeled error, warning or info so you know what to fix first.
Catch common accessibility and structure problems before they ship.
This tool focuses on structural and accessibility problems that can be detected from markup alone, without executing any script or loading any stylesheet.
Images without an alt attribute, and links or buttons with no accessible name at all, are both flagged as errors since they block screen reader users entirely.
Skipped heading levels (like jumping from an h2 straight to an h4) and multiple h1 elements make it harder for assistive technology users to build a mental outline of the page.
A div or span with role="button" or a tabindex can look interactive but usually misses keyboard behavior, focus styles and other things a real button or link gets for free.
Every input, select and textarea needs a programmatically associated label, whether through a for/id pair or by wrapping the control in a <label>.
Questions about how the checks work and what they can and can't catch.
It parses your pasted markup locally using the browser's built-in DOMParser, then walks the resulting document checking a fixed set of structural and accessibility rules. No JavaScript in your snippet is executed and nothing is sent to a server.
No. This tool only inspects markup structure: tags, attributes and text content. It cannot evaluate rendered colour contrast, layout or any behaviour that depends on executing scripts or loading stylesheets.
The linter checks, in order, aria-label, aria-labelledby, the title attribute, visible text content and the alt text of a contained image. If none of those produce any text, the control is flagged as having no accessible name.
The lang check only applies when you paste a full document that includes an <html> tag. A pasted fragment (like a single component) has no <html> element to check, so that rule is skipped for fragments.
It is an informational statistic, not a strict pass/fail rule. A very high ratio of generic div and span elements compared to semantic elements (like article, nav, button or heading tags) often signals markup that could better describe its own structure and meaning.