For accessibility auditors & consultants · free motion check

The two motion criteria, checked before you open DevTools.

WCAG 2.2.2 Pause, Stop, Hide (Level A) and 2.3.3 Animation from Interactions are the criteria that hide inside a stylesheet. MotionSpec reads a page’s linked CSS and <style> blocks and returns every motion candidate grouped by root cause, each cited and with the fix. Free, no signup, nothing stored.

It does not decide conformance and never will — that is your call, from your own testing. What it gives you is the tedious half done in about ten seconds, and a dated, citable artefact to put in the client file.

npm motionspec v1.2.7·40 reviewed primitives·295 automated tests·MIT core

To be precise: MotionSpec checks and compiles UI animation in AI-generated web apps — it does not generate AI video.

The problem, for you

Why is motion the slowest part of a manual pass?

Because it is the one criterion pair you cannot read off the rendered page. A stylesheet with forty @keyframes blocks tells you nothing about which of them sit inside an @media (prefers-reduced-motion: reduce) guard, or which loop forever with no pause path. You either read the CSS by hand or you toggle the OS setting and watch — and both miss the animation that only fires on a state you did not reach.

The Level‑A item is the one clients argue about: WCAG 2.2.2 asks for a pause, stop or hide mechanism when motion starts automatically, runs more than five seconds and sits alongside other content. The other one, WCAG 2.3.3, is Level AAA — a missing reduced‑motion guard is a best‑practice gap, not an A or AA failure. Writing it up as a failure is the fastest way to lose a client’s trust, so we keep the two lanes apart everywhere, including in the report you hand over.

/* what a static read finds in ten seconds */ .hero { animation: float 3s ease-in-out infinite; } /* no pause control → WCAG 2.2.2, Level A */ @keyframes float { to { transform: translateY(-12px) } } /* no reduced-motion guard → WCAG 2.3.3 */
What you hand over

What does the client actually receive?

A dated report, seven A4 pages, printable to PDF straight from the browser. It is deliberately narrow: two criteria, one page, static CSS — and it says so itself, twice, so nobody in the client’s organisation can mistake it for a conformance statement you did not make.

Cover

Dated, identified, scoped

Report ID, scan date, scan type and the scope line — “engineering report, not legal compliance evidence, motion scope only, not an EN 301 549 audit” — on the first page, above the score.

Score

A number with a population behind it

The score and its risk band, benchmarked against the 196 production pages of the July 2026 State of Motion study — the same engine, the same scoring. Raw counts only, because those scores cluster and a single summary figure would suggest a precision they do not carry.

Candidates

Grouped by root cause, not by selector

One CSS root cause applied to N selectors is one candidate with N occurrences — so the fix list is the length of the actual work, not the length of the stylesheet. Each with its WCAG citation, its level, its score impact and a copy‑paste fix.

Disclosures

The limits, in the document

What the scan read, what it could not see, and why a clean result means “clean on the CSS we could read.” You should not have to append a caveat page to somebody else’s tool.

Read it before you buy it

A real report, published in full.

Not a sample, not a mock‑up: an actual report produced by the same renderer and the same live scan engine that run on a purchase, scanning our own /before-after demo page — which deliberately ships motion the checker should flag: six infinite animations with no pause path (WCAG 2.2.2, Level A) and several animation layers outside the reduced‑motion guard (WCAG 2.3.3). Read every page of it, then decide.

$29 one‑time, shown in your local currency at checkout · refundable within 14 days, no questions. The full scope & terms →

The boundary

What this is not — stated plainly, because you will be asked.

A tool that oversells its scope creates work for the person who signs the audit. So here is the whole boundary in one place, and it is the same boundary printed inside the report.

Not a conformance verdict

No output of ours says a page conforms to anything — not WCAG, not the EAA, not ADA Title II or III, not EN 301 549. We detect and cite; the conclusion is yours.

Not a VPAT or an ACR

It is evidence about two success criteria, not a conformance report. Cite it as a dated, scoped scan; write the ACR yourself.

Not a full accessibility audit

Motion only. Contrast, focus order, names and roles, keyboard traps — none of it is in scope, and we do not pretend otherwise.

Not runtime‑aware

Static CSS on the single page you enter. JavaScript‑driven motion — GSAP, the Web Animations API, scroll libraries — is not read. Every result is a lower bound.

In scope: linked stylesheets and inline <style> on the one page you enter — @keyframes, transition, animation, and whether motion sits inside a prefers-reduced-motion guard. Nothing you submit to the free check is stored. How the check works →

Proof · the 196‑site study

How often is motion the finding?

In a 196‑app study we published on 16 Jul 2026, 53.9–77.2% of AI‑generated production apps shipped an unpausable loop (WCAG 2.2.2, Level A) and 90.1–100% shipped motion with no reduced‑motion guard (WCAG 2.3.3 — a best‑practice gap, never an A/AA failure). Only 0–9.9% came back clean. If your client’s site was built with an AI app‑builder, motion is very likely on your list.

53.9–77.2%

ran a loop with no way to pause (WCAG 2.2.2 · Level A)

90.1–100%

shipped motion with no reduced‑motion guard (WCAG 2.3.3 — best practice, not an A/AA fail)

17

median distinct motion root causes per app

0–9.9%

came back clean

The method and the raw data are published, so you can check the population before you cite it. Read the study & open dataset →

Honest scope: a static scan is a lower bound — it reads CSS, not runtime JS or GSAP. We say the motion we compile is “reduced‑motion‑safe by construction,” never “guaranteed accessible.”

Across a client list

What if it is thirty sites, not one?

One‑off audits are one thing; a retainer across a client portfolio is another. The Agency tier is $249/month for up to 10 domains on one key — several keys, one bill, weekly re‑scans, diff alerts when a deploy reintroduces motion you already cleared, and a live scan badge. That is $24.90 per site per month.

It carries the one thing we will put in writing, and it is a detection promise rather than a compliance one: if the first full pass across your ten domains surfaces nothing nameable, the first month is refunded. We will not sell a “compliance guarantee” — no tool can honestly promise one.

FAQ

Auditor questions about motion evidence.

Can I cite a Motion Report in a VPAT or an accessibility conformance report?

Cite it as what it is: a dated, scoped engineering scan of one page’s CSS motion against WCAG 2.2.2 and 2.3.3. It is not a conformance claim and does not produce one, and the report says so on its cover and its last page. The conformance conclusion stays yours, drawn from your own testing — MotionSpec supplies dated evidence about two criteria, not a verdict about a product.

Read the deliverable first: a real report, in full.

Does a static motion scan replace manual motion testing?

No. The scan reads one page’s linked CSS files and inline <style> blocks — @keyframes, transition, animation, and whether motion sits inside a prefers-reduced-motion guard. Animation driven by JavaScript, including GSAP, the Web Animations API and scroll libraries, is not read, and only the page you enter is visited. Every result is a lower bound: use it to triage and to document, then test by hand.

What does the $29 Motion Report contain that the free check does not?

A dated report ID, the score with its risk band, a benchmark against the 196‑page State of Motion study, every candidate grouped by root cause with its WCAG citation and a copy‑paste fix, and the scope disclosures in full — printable as a PDF for a client file. A real report from a real scan is published in full at /report-example, so you can read the deliverable before buying one.

Can I run the motion check across a client portfolio?

The Agency tier is $249/month for up to 10 domains on one key, with several keys, one bill, weekly re‑scans, diff alerts on regressions and a live scan badge. It carries a find promise: if the first full pass across your ten domains surfaces nothing nameable, the first month is refunded. It is a detection service, not a compliance certification.

Details: the portfolio offer →

Start here

Scan a client page free.

Paste the URL, see every CSS‑motion candidate with its WCAG citation and fix, and decide in ten seconds whether motion belongs on your findings list. No signup, nothing stored.

Building the sites yourself? For developers → · Shipping client sites? For agencies → · EAA‑exposed? For enterprise →