SubscriberSubscriber
Browse products

Journal

Animation and accessibility: prefers-reduced-motion done properly

By MOTION/LAB · Published 26 October 2026 · 3 min read

Reduced motion means the visitor has asked their device to limit animation. Respect it by keeping all the content and replacing movement with fades, instant changes or static states, not by hiding things or breaking the page. Use the prefers-reduced-motion media query in CSS and the matching check in JavaScript, and test the page with the setting turned on.

What the setting means, and who uses it

Operating systems let people turn on "reduce motion". Browsers pass this to websites as the prefers-reduced-motion media query. People use it for many reasons: dizziness and nausea from parallax or zooming, vestibular conditions, migraines, attention difficulties, or simply a dislike of animated pages. For some it is a health matter, not a taste.

Honouring it is part of building an accessible site. The Web Content Accessibility Guidelines (WCAG) have related rules: content that moves on its own for more than five seconds needs a way to pause, stop or hide it (success criterion 2.2.2), and a level-AAA criterion asks that motion triggered by interaction can be turned off (2.3.3).

What to change when reduced motion is on

A simple rule for reduced motion
KeepReplace or remove
All text, images and calls to actionParallax, large zooms and spinning
Hover and focus feedback as colour or outline changesScroll-scrubbed movement that travels across the screen
Short fades and instant state changesAutoplay video loops and endless marquees
Progress and loading cues that are not movementSmooth-scroll hijacking that changes how scrolling feels

The principle: the page must say and do the same thing, just with less movement. A pinned scroll sequence becomes a normal stack of sections. A word-by-word reveal becomes the finished headline. A 3D scene becomes a still image. If a person with reduced motion on would miss information, you removed too much.

How to do it in code

  1. In CSS, wrap motion in the media query: write the animated version normally, and in a prefers-reduced-motion: reduce block set animation and transition durations to near zero and remove transforms.
  2. In JavaScript, read the same setting with matchMedia("(prefers-reduced-motion: reduce)") before you create animations, and listen for changes, because people can switch it while the page is open.
  3. Do not start smooth-scroll libraries or scroll-scrubbed timelines when it is on. Render the final state instead.
  4. Make sure nothing depends on an animation finishing: no content that stays hidden until a timeline runs.
  5. Keep keyboard focus visible and unchanged. Reduced motion does not mean fewer focus styles.

How every MOTION/LAB effect handles it

We treat it as a rule, not a bonus. Here is what is actually enforced and what we found in the library on 26 October 2026:

  • Every effect must declare a reduced-motion fallback. The library's validation fails any effect that does not set reducedMotionFallback to true.
  • The demo host sets a MotionLab.reducedMotion flag and a reduced-motion class on the page when the visitor prefers reduced motion. It does not start Lenis smooth scrolling in that case.
  • Every demo is loaded once with reduced motion on in the quality gate, which fails on any console error or page error, and checks that the demo registers its cleanup.
  • Of our 316 demos, 312 contain a prefers-reduced-motion rule in their CSS, 128 also read the reduced-motion flag in JavaScript, and every one of them references reduced motion in its demo files.

The gate proves that a demo loads and runs without errors under reduced motion. It does not prove that every fallback is a perfect experience, so we still check each template by eye, and we say so rather than overclaim.

How to test it yourself

  1. Turn on reduce motion in your operating system (on a Mac: System Settings, Accessibility, Display; on Windows: Settings, Accessibility, Visual effects; on iOS and Android there is a matching option).
  2. In Chrome DevTools, open the Rendering panel and set "Emulate CSS media feature prefers-reduced-motion" to reduce. This lets you test without changing your system.
  3. Reload the page and scroll through all of it. Is every piece of content still there and readable?
  4. Tab through the page with the keyboard. Is focus visible and does it move in a sensible order?
  5. Switch the setting off and on while the page is open, to see that it responds.

A short checklist for your own site

  • Content never depends on an animation finishing.
  • Large movement has a still alternative.
  • Autoplaying motion can be paused or is off by default.
  • Smooth scrolling is off when reduced motion is on.
  • You have tested with the setting on, on a real device.

If you build with an AI tool, ask for this in your prompt, and check the result. Our prompts include the reduced-motion behaviour and an acceptance checklist, and the help page has a fix prompt for the case where the AI changed the motion values. The scroll effects guide shows which patterns need the most care.

Questions, answered

What does prefers-reduced-motion do?

It is a browser setting, taken from the operating system, that tells a website the visitor wants less animation. A site should then replace large movement with fades, instant changes or static states.

Should I turn animation off completely?

Not necessarily. Keep content and meaningful feedback, and remove large or looping movement such as parallax, zooms and spinning. Short, small fades are usually fine.

Is it required by law?

Accessibility requirements vary by country and sector, and many follow WCAG. Respecting reduced motion is a widely recommended practice. This is not legal advice; check the rules that apply to you.

How do I test it?

Turn on reduce motion in your operating system, or emulate prefers-reduced-motion in Chrome DevTools, then scroll the whole page and tab through it.

Where this comes from

  • W3C WCAG 2.2: success criteria 2.2.2 Pause, Stop, Hide and 2.3.3 Animation from Interactions
  • MOTION/LAB validation (reducedMotionFallback required; every demo loaded under reduced motion in the quality gate) and library counts, 26 October 2026

Subscribers

Unlock prompts and code

Enter the access key from your subscription. This browser stays signed in for 30 days.

See plans