Documentation

MotionScore

Get started with MotionScore

MotionScore is an animation performance auditing tool that safeguards against shipping slow user experiences.

Across both desktop and mobile viewports, MotionScore analyses your website's animations, scroll interactions, layout thrashing, and GPU memory usage.

You receive a report with easy-to-digest grades, in-depth per-element data, and a list of recommendations with copy-paste prompts to help your LLM fix the underlying issues.

Rather than flaky FPS counts or slow frame analysis, MotionScore detects running animations and scores them based on Motion's Web Animation Performance Tier List.

What's analysed

MotionScore currently audits four broad areas of animation performance:

  • Animations: Browser (CSS/WAAPI) and JavaScript-driven animations. Flags layout-triggering properties, off-screen animations, large paint animations, and slow CSS variable inheritance chains.

  • Scroll animations: Scroll-linked and scroll-triggered animations, including ScrollTimeline, ViewTimeline, IntersectionObserver, and JavaScript scroll handlers.

  • Thrashing: Layout and style thrashing caused by interleaved DOM reads and writes during mount and animation frames.

  • GPU pressure: Compositor layer count, texture memory usage, overlap-promoted layers, and persistent will-change declarations.

Tier system

Every animation receives a grade so you can see at-a-glance the impact of each individual animation:

Tier

Description

S

Excellent. Animations are run entirely on the compositor, so animations aren't interrupted by work on the main thread.

A

Animations don't trigger paint, but are run from the main thread.

B

S/A-tier animations that require some style or layout measurements

C

Animations trigger paint.

D

Animations trigger layout.

F

Per-frame style or layout thrashing.

For a deep dive into the tier system and the principles behind the tier system, see The Web Animation Performance Tier List.

Each category (Animations, Scroll Animations, GPU pressure, thrashing) starts with a score of 100. Each animation, depending on its base tier, whether it's off-screen, a large paint surface etc, ends up with a score that detracts from that initial score.

Final category grades are based upon that final score.

Running an audit

There are three ways to run a MotionScore audit:

Web UI

Visit score.motion.dev, enter a URL, and click Analyse. Results are ready in around a minute.

As well as a full score breakdown, the site also provides a list of recommendations based on your report. Each recommendation comes with a copy-paste prompt that you can give to your LLM.

Learn more about the MotionScore web UI.

CLI

Run an audit from your terminal:

npx motionscore <url

The CLI will print a summary report directly in your terminal, and also provide a sharable URL to the audit.

Paid accounts can use the CLI to block CI/CD pipelines against minimum performance scores using private audits.

Learn more about the CLI.

Codebase audit AI skill

MotionScore also provides an AI skill that analyses your actual codebase and suggests performance improvements without needing to deploy.

MotionScore is an animation performance auditing tool that safeguards against shipping slow user experiences.

Across both desktop and mobile viewports, MotionScore analyses your website's animations, scroll interactions, layout thrashing, and GPU memory usage.

You receive a report with easy-to-digest grades, in-depth per-element data, and a list of recommendations with copy-paste prompts to help your LLM fix the underlying issues.

Rather than flaky FPS counts or slow frame analysis, MotionScore detects running animations and scores them based on Motion's Web Animation Performance Tier List.

What's analysed

MotionScore currently audits four broad areas of animation performance:

  • Animations: Browser (CSS/WAAPI) and JavaScript-driven animations. Flags layout-triggering properties, off-screen animations, large paint animations, and slow CSS variable inheritance chains.

  • Scroll animations: Scroll-linked and scroll-triggered animations, including ScrollTimeline, ViewTimeline, IntersectionObserver, and JavaScript scroll handlers.

  • Thrashing: Layout and style thrashing caused by interleaved DOM reads and writes during mount and animation frames.

  • GPU pressure: Compositor layer count, texture memory usage, overlap-promoted layers, and persistent will-change declarations.

Tier system

Every animation receives a grade so you can see at-a-glance the impact of each individual animation:

Tier

Description

S

Excellent. Animations are run entirely on the compositor, so animations aren't interrupted by work on the main thread.

A

Animations don't trigger paint, but are run from the main thread.

B

S/A-tier animations that require some style or layout measurements

C

Animations trigger paint.

D

Animations trigger layout.

F

Per-frame style or layout thrashing.

For a deep dive into the tier system and the principles behind the tier system, see The Web Animation Performance Tier List.

Each category (Animations, Scroll Animations, GPU pressure, thrashing) starts with a score of 100. Each animation, depending on its base tier, whether it's off-screen, a large paint surface etc, ends up with a score that detracts from that initial score.

Final category grades are based upon that final score.

Running an audit

There are three ways to run a MotionScore audit:

Web UI

Visit score.motion.dev, enter a URL, and click Analyse. Results are ready in around a minute.

As well as a full score breakdown, the site also provides a list of recommendations based on your report. Each recommendation comes with a copy-paste prompt that you can give to your LLM.

Learn more about the MotionScore web UI.

CLI

Run an audit from your terminal:

npx motionscore <url

The CLI will print a summary report directly in your terminal, and also provide a sharable URL to the audit.

Paid accounts can use the CLI to block CI/CD pipelines against minimum performance scores using private audits.

Learn more about the CLI.

Codebase audit AI skill

MotionScore also provides an AI skill that analyses your actual codebase and suggests performance improvements without needing to deploy.

MotionScore is an animation performance auditing tool that safeguards against shipping slow user experiences.

Across both desktop and mobile viewports, MotionScore analyses your website's animations, scroll interactions, layout thrashing, and GPU memory usage.

You receive a report with easy-to-digest grades, in-depth per-element data, and a list of recommendations with copy-paste prompts to help your LLM fix the underlying issues.

Rather than flaky FPS counts or slow frame analysis, MotionScore detects running animations and scores them based on Motion's Web Animation Performance Tier List.

What's analysed

MotionScore currently audits four broad areas of animation performance:

  • Animations: Browser (CSS/WAAPI) and JavaScript-driven animations. Flags layout-triggering properties, off-screen animations, large paint animations, and slow CSS variable inheritance chains.

  • Scroll animations: Scroll-linked and scroll-triggered animations, including ScrollTimeline, ViewTimeline, IntersectionObserver, and JavaScript scroll handlers.

  • Thrashing: Layout and style thrashing caused by interleaved DOM reads and writes during mount and animation frames.

  • GPU pressure: Compositor layer count, texture memory usage, overlap-promoted layers, and persistent will-change declarations.

Tier system

Every animation receives a grade so you can see at-a-glance the impact of each individual animation:

Tier

Description

S

Excellent. Animations are run entirely on the compositor, so animations aren't interrupted by work on the main thread.

A

Animations don't trigger paint, but are run from the main thread.

B

S/A-tier animations that require some style or layout measurements

C

Animations trigger paint.

D

Animations trigger layout.

F

Per-frame style or layout thrashing.

For a deep dive into the tier system and the principles behind the tier system, see The Web Animation Performance Tier List.

Each category (Animations, Scroll Animations, GPU pressure, thrashing) starts with a score of 100. Each animation, depending on its base tier, whether it's off-screen, a large paint surface etc, ends up with a score that detracts from that initial score.

Final category grades are based upon that final score.

Running an audit

There are three ways to run a MotionScore audit:

Web UI

Visit score.motion.dev, enter a URL, and click Analyse. Results are ready in around a minute.

As well as a full score breakdown, the site also provides a list of recommendations based on your report. Each recommendation comes with a copy-paste prompt that you can give to your LLM.

Learn more about the MotionScore web UI.

CLI

Run an audit from your terminal:

npx motionscore <url

The CLI will print a summary report directly in your terminal, and also provide a sharable URL to the audit.

Paid accounts can use the CLI to block CI/CD pipelines against minimum performance scores using private audits.

Learn more about the CLI.

Codebase audit AI skill

MotionScore also provides an AI skill that analyses your actual codebase and suggests performance improvements without needing to deploy.

Next

Web UI

Motion+

Level up your animations with Motion+

Unlock the full vault of 330+ Motion examples, 100+ tutorials, premium APIs, private Discord and GitHub, and powerful Motion Studio animation editing tools for your IDE.

One-time payment, lifetime updates.

Motion is supported by the best in the industry.