Start a project

Tool 37 of 194 · Accessibility

Motion & Animation Safety Auditor

Paste your CSS to find animations that flash too fast, move forever or ignore the visitor's reduced motion setting, and get the CSS that fixes them.

Motion & Animation Safety Auditor

Your CSS

Paste a stylesheet or the parts with @keyframes, animation and transition. Checked against WCAG 2.2 success criteria 2.3.1, 2.2.2 and 2.3.3. Nothing is uploaded.

Every animation and transition

SelectorAnimationTimingFlashes/sFindings

Reduced motion CSS

prefers-reduced-motion overrides

01

What it does

Checks every CSS animation and transition for flash rate, endless motion and missing prefers-reduced-motion support, against WCAG 2.2, and writes the override CSS.

  • Flash rate worked out from your @keyframes: opacity, colour, brightness and visibility swings per second
  • WCAG 2.3.1 (three flashes), 2.2.2 (pause, stop, hide) and 2.3.3 (animation from interactions)
  • Knows which rules are already guarded by prefers-reduced-motion
  • Moving transitions, smooth scrolling and fixed-background parallax

02

Private by design

Everything happens in your browser. Nothing you type, paste or upload is sent anywhere, and it keeps working offline once the page has loaded.

03

What you get

A finding per animation, a flash-rate chart and reduced-motion CSS, with a Copy and a Download button on every result.

  • Accessibility
  • WCAG
  • Animation
  • CSS

Why it matters

Motion on the web is more than decoration for some visitors. Content that flashes more than three times a second can trigger seizures, and large sliding, zooming or parallax effects make people with vestibular disorders feel ill. Operating systems have a "reduce motion" setting for this, and CSS can read it with prefers-reduced-motion, but most stylesheets never check it.

This auditor parses your CSS, follows every animation to its @keyframes and measures what it does: which properties move, how many times brightness or opacity swings in each cycle, how long it runs and whether it repeats forever. Flash rate is the number of swings there and back divided by the duration, compared with the WCAG limit of three a second. It also checks whether each rule is already switched off for reduced motion, either inside @media (prefers-reduced-motion: no-preference) or by a matching reduce rule, and writes overrides for the ones that aren't.

How to use it

  1. Paste your stylesheet, or just the parts with animations and transitions.
  2. Read the findings: anything flashing over three times a second is a failure.
  3. Add a pause control for any motion that runs over five seconds.
  4. Copy the reduced motion CSS into your stylesheet.

FAQ

What counts as a flash?

WCAG defines a flash as a pair of opposing changes in brightness: bright to dark and back. The auditor counts swings of opacity, colour, brightness filters and visibility in your keyframes, ignoring changes under 10%, and halves them to get flashes.

Does prefers-reduced-motion mean no animation at all?

No. It means reduce. Swap slides and zooms for fades, shorten them, or stop looping. The site-wide override is a safe starting point; the targeted one keeps the rest of your animation.

Are loading spinners allowed?

Usually. A spinner that only shows while something loads is part of the activity, but it should still respect reduced motion, for example by slowing down or pulsing instead of spinning.

Does this check JavaScript animations?

No, only CSS. For JavaScript animations, check window.matchMedia('(prefers-reduced-motion: reduce)') in your code.

Work with me

Want a site that gets these right?

I build fast, accessible websites and web apps that pass these checks from day one. Tell me about your project and I'll reply personally with honest next steps.

All developer tools · Back to leej.uk