Your Lighthouse 100 says nothing about motion
Lighthouse's accessibility category scores 55 automated audits. Not one of them looks at animation. Not prefers-reduced-motion, not animation-iteration-count, not autoplay, not marquees, not whether an infinite loop has a way to stop. A page can score a clean 100 with a hero video that never stops, a carousel that rotates forever, and a badge that pulses until the tab is closed. This is not a defect in Lighthouse — it audits what is reliably machine-checkable in the DOM, and it is very good at that. It is a defect in how the score gets used: as the accessibility gate for a launch.
What the accessibility score actually contains
The scored audits are published on Chrome's Lighthouse accessibility scoring page. Read the table end to end and the shape is clear: it is a list of things that can be decided from static markup — ARIA validity, accessible names, contrast ratios, label associations, heading order, table headers, language attributes, unique IDs, tabindex values, captions on <video>.
Two statements on that page are worth having in front of you, because both are routinely skipped:
"Unlike the Performance audits, a page doesn't get points for partially passing an accessibility audit."
— Chrome for Developers, Lighthouse accessibility scoring
"Manual audits and low-impact / best-practices audits aren't included in the table because they don't affect your score."
— Chrome for Developers, Lighthouse accessibility scoring
The second one is the important one. The score is a score of the automated subset. Everything requiring judgment sits outside it by construction, and motion is largely a judgment layer: whether a control genuinely pauses something, whether movement is essential to an activity, whether five seconds of animation next to a form is a problem.
Where motion would have to appear — and doesn't
Three WCAG success criteria govern moving content. None has a scored Lighthouse audit.
| Criterion | Level | What it asks for | Scored Lighthouse audit? |
|---|---|---|---|
| 2.2.2 Pause, Stop, Hide | A | A mechanism to pause, stop or hide auto-starting motion over five seconds | None |
| 2.3.1 Three Flashes or Below Threshold | A | No content flashing more than three times per second | None |
| 2.3.3 Animation from Interactions | AAA | Interaction-triggered motion can be disabled | None |
Checked against the scored audit table on Chrome's Lighthouse accessibility scoring page, read 2026-08-29. The nearest audit in the table is "The document does not use <meta http-equiv="refresh">", which concerns timed page refreshes (WCAG 2.2.1 / 2.2.4), not animation. Captions on <video> are also in the table, but that audit is about captions, not autoplay.
Two of those three are Level A — the floor that every conformance claim starts from. So the gap is not an exotic corner of AAA best practice. A page can pass every scored accessibility audit Lighthouse has and still fail the minimum level, in a way that is visible to anyone who looks at the screen for ten seconds.
What that looks like on real sites
On 2026-08-29 we ran our static motion scan across 22 web-design agency home pages — the sample and method are documented in the agency motion handoff. Across those pages the scan grouped 98 root causes of infinite animation with no pause path, and 18 of the 22 pages carried at least one.
We do not know those pages' Lighthouse scores, and it does not matter for the point: whatever they scored, no Lighthouse audit would have reported any of the 98, because no such audit exists. A green accessibility panel and 98 unpausable loops are not in tension. They are measuring different things.
What to run for the motion layer
Three checks, none of which replaces the others. Together they take about ten minutes on a built page.
- Toggle the OS setting and use the page. macOS: System Settings → Accessibility → Display → Reduce motion. Windows: Settings → Accessibility → Visual effects → Animation effects. Then scroll, navigate and submit something. This finds what no static tool can: motion that keeps running when the user asked it not to. Chrome DevTools can emulate the preference too — Rendering panel → "Emulate CSS media feature prefers-reduced-motion" — which is faster, but only affects CSS, so it will not reveal JavaScript-driven motion.
- Grep the compiled CSS for
infinite. Not your source — the bundle the browser receives, with the dependencies inlined. Every hit needs an answer: bounded to under five seconds, or wired to a pause control. - Run a scan that reads CSS for motion specifically. That is what the free motion check does, and the full manual process is in how to verify web motion accessibility.
/* The minimum both rails, for a page that has neither. */
/* Rail 1 — WCAG 2.3.3: honour the OS preference. */
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
/* Rail 2 — WCAG 2.2.2: an on-page control, for everyone else. */
html[data-motion-paused] *,
html[data-motion-paused] *::before,
html[data-motion-paused] *::after { animation-play-state: paused !important; }
What this does not mean
- It does not mean Lighthouse is bad or that you should stop running it. The 55 audits it does run catch real, common, high-impact defects — missing alt text, unlabelled inputs, broken ARIA, poor contrast. Keep it in the pipeline. Just do not read its output as a statement about animation, because it does not make one.
- It does not mean the motion layer is the important half. Contrast, keyboard order and semantics affect more people more often; Lighthouse covers a real part of that and should stay in the pipeline for exactly that reason.
- It does not mean a motion scan is a substitute. Ours reads CSS only: JavaScript-driven motion from GSAP, Motion for React or the Web Animations API is outside it, and it reports that in its disclosures when it detects one.
- Neither tool certifies anything. A high automated score is evidence that specific automatable patterns are absent. It is not a conformance claim, and no scan — Lighthouse's, ours, or anyone's — can make one, because criteria like "is this motion essential?" are human judgments.
MotionSpec finds and shows motion-accessibility defects with a fix for each. It does not certify pages, does not claim conformance with any accessibility law, and is not legal advice. For the record you can hand a client, the enterprise page sets out what a dated report contains and what it does not: MotionSpec for enterprise.
FAQ
Does Lighthouse check prefers-reduced-motion?
No. The accessibility category's scored audit table lists 55 automated audits, and none of them evaluates prefers-reduced-motion, animation duration, iteration count, autoplay or the presence of a pause control. Lighthouse can return 100 on a page whose every animation loops forever.
Does a Lighthouse accessibility score of 100 mean a page is accessible?
No. It means the automated audits Lighthouse runs all passed. Chrome's own documentation notes that manual audits and low-impact audits are excluded from the score entirely, and automated testing cannot evaluate judgment-dependent criteria at all. Motion is one of the layers that falls entirely outside the scored set.
Which WCAG criteria does Lighthouse miss for motion?
WCAG 2.2.2 Pause, Stop, Hide (Level A), WCAG 2.3.1 Three Flashes or Below Threshold (Level A) and WCAG 2.3.3 Animation from Interactions (Level AAA) have no corresponding scored audit in the accessibility category. The nearest audit in the table concerns <meta http-equiv="refresh">, which is about timed page refreshes, not animation.
What should you run for the motion layer instead?
Toggle the operating system's reduce-motion setting and use the page; grep the compiled CSS for the infinite keyword and check each hit has a bounded count or a pause control; and run a scan that reads the CSS specifically for motion patterns. None of the three replaces the others.
Paste a URL into the free motion check — a static scan against WCAG 2.2.2 and 2.3.3, every finding with its fix, and an explicit disclosure of what it could not see. No signup, nothing stored.
Run the free motion checkOne page tells you. A dated write‑up is what you hand to a client or a boss: the $29 Motion Report cites every candidate to WCAG 2.2.2 / 2.3.3 and ranks your score against 196 AI‑built pages — read a real one first. Fourteen‑day refund, no questions asked.
The full pre-launch list: the agency motion handoff, and what we found on 22 agency home pages →
MotionSpec checks and compiles UI animation for AI-generated web apps — it does not generate AI video.