This is a real report, not a mock-up.

It was produced on 28 September 2026 by the same renderer that runs when you buy a Motion Report, fed by the same live scan engine — every candidate, WCAG citation and fix below comes out of an actual scan of our own /before-after demo, which deliberately ships motion the checker should flag. A clean page produces a much shorter report; the scoring, sections and disclosures are identical.

Get this report for your page — $29 Fourteen‑day refund, no questions asked.

Run the free check on your own page → See all plans →

MotionSpec
motionspec.dev — motion accessibility, static scan of 28 September 2026

Motion Accessibility Report

https://motionspec.dev/before-after
Report IDexample-2026-09-28
Date28 September 2026
Scan typeStatic scan (scoring v2)
Prepared byMotionSpec — Froeba Sales Solutions UG
30/100
Elevated motion-accessibility risk
▲ study median 35
Engineering report — not legal compliance evidence. Motion/animation scope only (WCAG 2.2.2, 2.3.3, prefers-reduced-motion). Not an EN 301 549 audit. Full terms on the last page.
MotionSpecexample-2026-09-28 · motionspec.dev · 28 September 2026

Executive summary

11 distinct motion-a11y root cause(s), 11 occurrence(s), in the static scan (1 loading indicator(s) for manual review, no score impact).

Score: 30/100 — Elevated motion-accessibility risk

This score is higher than 40 of the 186 pages in the study, and level with 1 of them.

Benchmark population: the MotionSpec “State of Motion” study — 196 production pages generated by five AI app-builder platforms, collected in July 2026 and re-measured on 11 September 2026 with this same engine and scoring (v2); 192 were still online and 186 were measurable (6 had no CSS motion at all and are reported as not measurable, not as clean). It benchmarks against AI-generated UIs, not the general web. Scores in that population cluster on a few values, so this report gives raw counts only: any single summary figure would suggest a precision these clustered scores do not carry.

How this page compares with the study population

MeasureThis pageStudy population (186 measurable AI-generated pages, re-measured September 2026)
Score (v2)30/100median 35/100
Motion without a reduced-motion guardYespresent on 180 of 186 pages
Infinite animation without a pause path (WCAG 2.2.2, Level A)Yespresent on 121 of 186 pages
Statically clean (no candidates)No2 of 186 pages

Top candidates

SeverityCandidate (root cause)OccurrencesScore impact
High Infinite animation without pause path (no animation-play-state / data-* toggle)
WCAG 2.2.2 Pause, Stop, Hide — Level A
1× −20
High Infinite animation without pause path (no animation-play-state / data-* toggle)
WCAG 2.2.2 Pause, Stop, Hide — Level A
1× −20
High Infinite animation without pause path (no animation-play-state / data-* toggle)
WCAG 2.2.2 Pause, Stop, Hide — Level A
1× −20

The highest-priority candidates are the infinite animations without a pause path — WCAG 2.2.2 (Pause, Stop, Hide) is a Level-A criterion, the strictest conformance tier, and continuous movement is a real barrier for people with attention and vestibular conditions. The unguarded-motion candidates are animation that, as scanned, still runs when a visitor’s OS-level “reduce motion” setting is on; a single prefers-reduced-motion media query per animation layer usually clears this class in one change. The matching criterion, WCAG 2.3.3, is Level AAA — so this is a robustness gap, not a Level-A conformance failure. The suggested fixes in this report are CSS-only and incremental — none require redesigning the page. After deploying, re-run the free checker to see the new scan result.

MotionSpec Motion Accessibility Reportexample-2026-09-28
MotionSpecexample-2026-09-28 · motionspec.dev · 28 September 2026

Candidates in detail

Candidates are grouped by root cause: one CSS root cause (a @keyframes animation or a transition layer) applied to N selectors is one candidate with N occurrences — not N candidates. Groups are ordered by their score impact. Candidates describe the page as scanned: they are engineering observations to check, not confirmed defects and not a judgement of the team that built it.

1. Infinite animation without pause path (no animation-play-state / data-* toggle)
High
WCAG 2.2.2 Pause, Stop, Hide — Level A  ·  1 occurrence  ·  score impact −20  ·  root cause: keyframes:kenburns
Where: .bgfx
Suggested fix
Make it pausable: html[data-ms-paused] .bgfx { animation-play-state: paused !important; } + pause button.
2. Infinite animation without pause path (no animation-play-state / data-* toggle)
High
WCAG 2.2.2 Pause, Stop, Hide — Level A  ·  1 occurrence  ·  score impact −20  ·  root cause: keyframes:pulse
Where: .cta
Suggested fix
Make it pausable: html[data-ms-paused] .cta { animation-play-state: paused !important; } + pause button.
3. Infinite animation without pause path (no animation-play-state / data-* toggle)
High
WCAG 2.2.2 Pause, Stop, Hide — Level A  ·  1 occurrence  ·  score impact −20  ·  root cause: keyframes:scrollx
Where: .track
Suggested fix
Make it pausable: html[data-ms-paused] .track { animation-play-state: paused !important; } + pause button.
4. Infinite animation without pause path (no animation-play-state / data-* toggle)
High
WCAG 2.2.2 Pause, Stop, Hide — Level A  ·  1 occurrence  ·  score impact −20  ·  root cause: keyframes:bounce
Where: .cue span
Suggested fix
Make it pausable: html[data-ms-paused] .cue span { animation-play-state: paused !important; } + pause button.
5. Infinite animation without pause path (no animation-play-state / data-* toggle)
High
WCAG 2.2.2 Pause, Stop, Hide — Level A  ·  1 occurrence  ·  score impact −10  ·  root cause: keyframes:logosway
Where: .wavemark
Suggested fix
Make it pausable: html[data-ms-paused] .wavemark { animation-play-state: paused !important; } + pause button.
6. Transitions without prefers-reduced-motion guard
Medium
WCAG 2.3.3 (Level AAA) / prefers-reduced-motion best practice  ·  1 occurrence  ·  score impact −8  ·  root cause: transition:(unguarded)
Where: .slider::before
Suggested fix
@media (prefers-reduced-motion: reduce) { .slider::before { transition: none; } }
7. Motion without prefers-reduced-motion guard
Medium
WCAG 2.3.3 (Level AAA) / prefers-reduced-motion best practice  ·  1 occurrence  ·  score impact −8  ·  root cause: keyframes:kenburns
Where: .bgfx
Suggested fix
@media (prefers-reduced-motion: reduce) { .bgfx { animation: none; } }
8. Motion without prefers-reduced-motion guard
Medium
WCAG 2.3.3 (Level AAA) / prefers-reduced-motion best practice  ·  1 occurrence  ·  score impact −8  ·  root cause: keyframes:pulse
Where: .cta
Suggested fix
@media (prefers-reduced-motion: reduce) { .cta { animation: none; } }
9. Motion without prefers-reduced-motion guard
Medium
WCAG 2.3.3 (Level AAA) / prefers-reduced-motion best practice  ·  1 occurrence  ·  score impact −8  ·  root cause: keyframes:scrollx
Where: .track
Suggested fix
@media (prefers-reduced-motion: reduce) { .track { animation: none; } }
10. Motion without prefers-reduced-motion guard
Medium
WCAG 2.3.3 (Level AAA) / prefers-reduced-motion best practice  ·  1 occurrence  ·  score impact −8  ·  root cause: keyframes:bounce
Where: .cue span
Suggested fix
@media (prefers-reduced-motion: reduce) { .cue span { animation: none; } }
11. Loading indicator — exempt under 2.2.2 if interaction is blocked while it shows; verify it is not persistent decoration.
Review
Loading indicator — review. Treated as essential under the WCAG 2.2.2 preload exception while it only shows during loading; no score impact and not a Level-A candidate. Check that it is not persistent decoration.  ·  1 occurrence  ·  score impact none — review  ·  root cause: keyframes:spin
Where: .spinner
Suggested fix
No change needed while it only shows during loading/busy states (WCAG 2.2.2 preload exception). If it stays visible as decoration: html[data-ms-paused] .spinner { animation-play-state: paused !important; } + a pause control; and slow it for reduced-motion users: @media (prefers-reduced-motion: reduce) { .spinner { animation-duration: 1.5s; } }
MotionSpec Motion Accessibility Reportexample-2026-09-28
MotionSpecexample-2026-09-28 · motionspec.dev · 28 September 2026

Scan coverage & disclosures

The scanner flagged the following coverage limits for this page — the candidates below are a lower bound:

Methodology

What we test

Scoring (v2)

scoring v2 (rules rev. 2026-09-11): 100 minus, per root-cause group (same kind + same keyframes/transition-props/selector-family), severity-weight x finding-weight x min(3, 1 + 0.4*log2(occurrences)); per-category caps (infinite/marquee 40, autoplay 25, unguarded 30, risky-props 15) so one issue class cannot zero the score alone; floor 0. Cascade-aware prefers-reduced-motion guards; colour/opacity transitions are not motion; loading indicators are review-only (0); no CSS motion -> not measurable (score null).

What we do not test

Reference population

Comparison figures come from the MotionSpec State of Motion in AI-Generated UIs study (Motion Accessibility Index #1): 196 publicly accessible production pages generated by five AI app-builder platforms (anonymized cohorts A–E), collected in July 2026 and re-measured on 11 September 2026 with this same engine and scoring (rules rev. 2026-09-11). Of the 196 pages, 192 were still online and 186 were measurable; 6 had no CSS motion at all and are reported as not measurable, not as clean. The comparison rows above use the 186 measurable pages. Dataset: CC BY 4.0, motionspec.dev/blog/state-of-motion-ai-generated-uis.

MotionSpec Motion Accessibility Reportexample-2026-09-28
MotionSpecexample-2026-09-28 · motionspec.dev · 28 September 2026

Scope, terms & imprint

Scope disclaimer
Engineering report — not legal compliance evidence. Motion/animation scope only (WCAG 2.2.2, 2.3.3, prefers-reduced-motion). Not an EN 301 549 audit.

This is an automated, point-in-time engineering assessment based on publicly reachable pages. It is not a legal compliance determination. Prepared for the buyer and the client whose page was checked; you may share it with that client as part of your engagement. Please do not publish it or use it to make public claims about third-party sites.

Refunds

If this report is not useful to you, email hello@motionspec.dev within 14 days, quoting the report number above, and we refund the purchase in full — no questions asked.

Re-checks

The scan reflects the page as served on 28 September 2026. After you ship fixes, you can re-check the page free of charge at any time: motionspec.dev/motion-check.

Questions

Write to hello@motionspec.dev and quote the report number above.


Imprint / Impressum: Froeba Sales Solutions UG (haftungsbeschränkt) — MotionSpec, hello@motionspec.dev.
Report example-2026-09-28, generated 28 September 2026 from a static scan of https://motionspec.dev/before-after. MotionSpec is an EU trademark application of Froeba Sales Solutions UG.
WCAG is a trademark of the W3C. This document cites WCAG success criteria for engineering orientation only.

MotionSpec Motion Accessibility Reportexample-2026-09-28 · end of report