WCAG 2.1 AA Legal Baseline Audit for templates

Audits HTML, JSX, Vue, Twig, Blade, ERB and Razor markup against the 24 WCAG 2.1 Level AA checks that 28 CFR 35.200 and EN 301 549 actually name - not WCAG 2.2.

Get the complete version $29

This page is the working piece. The full pack has everything below.

Audits HTML, JSX, Vue, Twig, Blade, ERB and Razor markup against the 24 WCAG 2.1 Level AA checks that 28 CFR 35.200 and EN 301 549 actually name - not WCAG 2.2.

A consultancy WCAG audit is $100-$250 per page (Accessible.org published pricing, 2026); this reads every template in the repository for $29 once.

Buy the full version — $29
Want the full version?
Enter your email and we send the download link.
ENDEJAESPT

Find a tool

· ReadyStack

Worked example

Real numbers from this tool, line by line.

Six lines that fail the WCAG 2.1 AA baseline your deadline names

Six lines in a county web team's permits template fail the WCAG 2.1 AA baseline that 28 CFR 35.200 names - the same six an audit firm bills $100-$250 a page to find.

Here is the template, unedited:

<html>
<head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"></head>
<body>
  <img src="/img/county-seal.png">
  <a href="/permits/2026.pdf">click here</a>
  <div onclick="openPanel()">Pay a bill</div>
  <label>Email</label>
  <input type="email" name="email" placeholder="[email protected]">
  <iframe src="https://maps.example/embed"></iframe>
</body>
</html>

Twenty-three findings across thirteen distinct success criteria, in twenty-three lines of markup. Not one of them needs a rendered page to see.

The version nobody checks

Ask an assistant what standard applies and it answers WCAG 2.2, because that is the current W3C recommendation. That is the wrong answer for a legal baseline. 28 CFR 35.200(b) names WCAG 2.1 Level AA, and in the EU the presumed-conformance standard behind the European Accessibility Act, EN 301 549 V3.2.1, names WCAG 2.1 Level AA as well. Version 4.1.1 of EN 301 549 will move to WCAG 2.2, but it is not the harmonised standard yet.

So a team following the assistant chases 2.2-only criteria that carry no obligation, and walks straight past 1.3.5 Identify Input Purpose - an AA criterion that is new in WCAG 2.1, which every 2.0-era checker in the toolchain silently ignores. In the template above, that is the <input type="email"> with no autocomplete token. Two of the six lines are exactly this: criteria that exist in the legal baseline and in nothing the team already runs.

The dates moved, and the moved dates are the ones that bind

On 20 April 2026 the Department of Justice issued an interim final rule extending the Title II compliance dates by one year. Public entities serving 50,000 or more people now have until 26 April 2027. Entities under 50,000, and all special district governments, have until 26 April 2028. The technical standard did not move: it is still WCAG 2.1 Level AA. Every article written before April 2026 - and every model trained on them - gives dates that are now wrong in both directions.

Why the checker on your laptop cannot see this

Browser extensions and page scanners test a rendered page. A county site is three hundred to nine hundred Twig, Blade, ERB and Razor templates, most of which never render outside a request with real data behind it. The failures above live in the source, one line each, and they are visible there long before anyone can load the page.

So the audit belongs in the editor. This one reads the markup as source: 24 checks, each finding labelled with its WCAG 2.1 success criterion number and level, on HTML, JSX, Vue, Twig, Blade, ERB and Razor alike. Auditing the file you have open is free and complete - every check, real line numbers, nothing withheld. A licence adds scale rather than answers: every template in the repository in one pass, the findings exported as CSV, JSON or HTML for procurement and counsel, mechanical fixes applied in place, and a re-audit on every save.

Mechanical means mechanical. A positive tabindex becomes tabindex="0". A zoom lock becomes a zoom cap that reaches 200%. Anything needing human judgement - what the alt text should say, what the frame is for - is listed and left alone, because a tool that invents alt text produces a page that passes a checker and still fails a person.

Run it against one template you already shipped. If it finds nothing, you have your answer for free.

15 seconds — what it actually does

Questions people ask

What does this actually check?

It reads template markup line by line and reports every failure of the 24 WCAG 2.1 Level A and AA checks it ships with, naming the success criterion number and level for each one. It works on HTML, JSX, Vue, Twig, Blade, ERB and Razor source, so it reaches templates that never render in a browser checker.

Who is this for?

Web teams at US state, city, county and special-district government bodies, and the agencies and vendors who build for them. Also EU product teams, because the European Accessibility Act has applied since 28 June 2025 and its presumed-conformance standard, EN 301 549 V3.2.1, names the same WCAG 2.1 Level AA baseline.

Why not just use a free checker or ask an AI assistant?

A free checker needs a rendered page, so your Twig, Blade, ERB and Razor templates are invisible to it. An AI assistant answers from WCAG 2.2, the current W3C version, but 28 CFR 35.200(b) and EN 301 549 V3.2.1 both name WCAG 2.1 Level AA. Chasing 2.2-only criteria while missing 2.1 ones is the common, expensive mistake.

What is free and what needs a licence?

Free audits the open template completely: all 24 checks, real line numbers, criterion numbers, nothing withheld. A licence adds scale, not answers - auditing every template in the repository at once, exporting the findings as CSV, JSON or HTML, mechanical quick fixes, and re-auditing on every save.

What would this cost otherwise?

A consultancy accessibility audit runs about $100 to $250 per page at published 2026 rates, and a small-business engagement commonly starts near $3,000. This extension is $29 once, reads every template in the repository, and re-reads them free every time the markup changes. It does not replace a human audit; it removes the findings a human would bill you to list.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.