Free visual CSS tool

CSS Animation Easing Visualizer

Race eight CSS easing curves side by side instead of previewing one at a time, so you can actually feel the difference between linear, ease-in-out, back, bounce and your own custom cubic-bezier curve, then copy the value you like.

Ready-to-use CSS
transition-timing-function: linear;

Compare easing, don't just preview it

Most easing tools show a single curve at a time. Here, every named easing and your own custom curve run together on the same track, so subtle differences in speed and overshoot become obvious.

Eight curves at once

Linear, ease, ease-in, ease-out, ease-in-out, back, bounce and your custom curve, all racing together.

Live bezier graph

Four sliders reshape a real SVG cubic-bezier path so you can see the curve, not just imagine it.

Copy the exact value

Click any lane to select it, then copy its ready-to-use transition-timing-function CSS.

How to use the easing visualizer

Set up a race, compare the results, then take the curve you like.

  1. Set a durationDrag the duration slider from 0.5s to 3s to control how long every lane's animation takes.
  2. Press playHit Play race to restart all eight balls together and watch how each easing accelerates and settles.
  3. Pick and copyClick a lane to select it, or shape your own curve with the four bezier sliders, then copy the CSS.

About easing functions and cubic-bezier curves

A CSS easing function decides how an animation's progress maps to time. A linear curve moves at a constant speed and can feel robotic, while curves like ease-in-out slow down at the start and end for a more natural motion. Under the hood, every named keyword such as ease or ease-in-out is really shorthand for a specific cubic-bezier() function with four control values between two fixed endpoints. Building your own curve means choosing where those two control points sit, which is exactly what the sliders and graph in this tool let you do, with an instant visual result instead of trial and error in a stylesheet.

What x1, y1, x2, y2 mean

A cubic-bezier curve always starts at (0,0) and ends at (1,1). The x1,y1 and x2,y2 values position two control points that pull the curve, controlling acceleration and deceleration.

Why y can exceed 0-1

The x values must stay between 0 and 1 because they represent time, but y values can go negative or above 1, producing the overshoot used by back and bounce style effects.

Keyword vs custom

Keywords like ease-out are convenient presets. A custom cubic-bezier value is useful when a design needs a very specific, brand-tuned feel that no keyword quite matches.

Where timing-function applies

The same value works as transition-timing-function on a CSS transition or as animation-timing-function on a keyframe animation, including per-keyframe overrides.

CSS animation easing visualizer FAQ

What is a CSS easing function?

An easing function controls how an animation's speed changes over time, using keywords like ease-in-out or a cubic-bezier() curve with four control values.

How is this different from a single-curve easing tool?

Instead of previewing one curve at a time, this visualizer races several named easings and your own custom cubic-bezier curve side by side so you can compare how each one actually feels.

How do I build a custom cubic-bezier curve?

Drag the four x1, y1, x2 and y2 sliders to reshape the curve graph. The custom lane animates with that exact cubic-bezier value in real time.

Can easing values go outside the 0-1 range?

Yes. The y1 and y2 control points can go below 0 or above 1, which is exactly what creates overshoot effects like the back and bounce presets.

Is this tool free and does it store my data?

Yes, it is completely free and every animation runs locally in your browser. Your last duration and custom curve are optionally saved to local storage for convenience.

Try other CSS animation tools

Keep building smooth, custom motion with these free online CSS tools.