Task path / input to outcome
How to design a cubic-bezier easing curve
- 01
Place the first control point
Set Control X1 between 0 and 1 and Control Y1 between −1 and 2. The curve chart redraws live, with a guide line running from the start point to your handle.
- 02
Place the second control point
Set Control X2 (0–1) and Control Y2 (−1 to 2). Pulling a Y value past 1 is what creates the overshoot that makes an ease feel springy; pulling Y1 below 0 adds a moment of anticipation before the motion starts.
- 03
Set the duration
Choose a Duration from 0.1 to 4 seconds. The marker on the motion track loops across it using your exact curve, so the cadence you watch is the cadence you ship.
- 04
Or start from a known curve
The default curve — 0.25, 0.1, 0.25, 1 — is exactly the standard ease keyword and a neutral starting point. Press Load sample for a springy overshoot curve (0.34, 1.56, 0.64, 1) that demonstrates what a Y value past 1 does.
- 05
Copy the timing CSS
Copy CSS or Download .css saves toolars-cubic-bezier.css. The .motion rule sets transition-duration and both transition-timing-function and animation-timing-function. It does not set animation-duration, so add that separately for keyframe animations.
- 06
Read the chart before shipping
The chart plots progress over time between the fixed start and end points: flat sections are slow, steep sections fast. A curve that dips below the start or rises past the end is not an error — that is anticipation and overshoot, drawn honestly.