Every barrier in your component, with the WCAG 2.2 criterion it fails — and the same component again, fixed
Paste one component's markup — HTML, JSX, Vue or Svelte. Get the audit: each finding with its
success criterion, its severity, who it blocks, the line and the fix. Then get the rewrite: same
structure, same class names, barriers removed, the decisions only you can make marked
TODO. Re-audit it with one button.
All three examples ship with a saved model run, so you can see the whole result — the findings, the manual test plan, the rewrite and its before/after scan — without signing in and without spending a credit.
What this does, and what it does not
The scan is a reader of markup, not a browser. It builds the element tree from your paste —
tolerating JSX, Vue, Svelte and Angular spellings — and checks what a static reader can prove:
an image with no alt, a field with no label, a control with no name, a div wearing a click
handler, a positive tabindex, an ARIA reference to an id that is not there, a heading that jumps
two levels, a dialog with no name, a table with no headers, radios with no fieldset, autoplay,
zoom blocked, a focus outline removed. Where both a text colour and a background are literal — in
an inline style or a <style> rule — it computes the WCAG contrast ratio and holds it
to 4.5:1, or 3:1 for large text. Everything it finds goes to the model as facts it must reconcile,
and the reply is checked against them afterwards — if the model skips one, this page says so.
The model finds what the scan cannot: meaning carried by colour alone, a visual-only asterisk, a
form that never says what went wrong, a login without autocomplete, focus that will
go nowhere when a dialog closes. It cites the WCAG 2.2 success criterion for each, sets a severity
that is about the user rather than the code, and derives the verdict by a fixed rule the page
re-checks. The rewrite keeps your framework, your structure and your class names, prefers native
elements over ARIA, and marks every decision it could not make with a TODO the page
confirms is really in the code. Then the free scan runs again on the rewrite, so you can see what
it removed — and a button hands the rewrite back to the audit lane.
Nothing leaves this page until you press the run button. The page reads your markup in the browser, sends it to the model only when you press that button, and hands you back text. A token or password in the paste is flagged for rotation and never repeated. A verdict of "ready for manual testing" is exactly that: the static review found nothing left, and the manual plan is what stands between the component and a claim. Nothing to hand? Load the , the , or the . All three replay a saved run for free.