Easing Curve Editor
Drag the two control points to shape a cubic-bezier() curve, watch the preview move at that exact timing, and copy the CSS when it feels right.
Drag the handles
Preview
cubic-bezier()
cubic-bezier(0.25, 0.1, 0.25, 1)Full CSS
.element {
transition: transform 1.2s cubic-bezier(0.25, 0.1, 0.25, 1);
}What the two points control
A CSS cubic-bezier curve is defined by two control points, P1 and P2, anchored between a fixed start at (0, 0) and end at (1, 1). The x-axis is time, always clamped between 0 and 1. The y-axis is the animated property's progress, and it is allowed to go below 0 or above 1, which is what produces overshoot and anticipation effects like ease-out-back.
Reading the shape
A steep early slope means the animation starts fast and settles slowly, that's ease-out. A flat start with a steep finish is ease-in, the animation ramps up right before it ends. Pull a handle above y = 1 or below y = 0 and the element will overshoot its target before settling, useful for elements that should feel like they have physical weight.
Where to use it
Apply the curve to a transition or animation property. Transform and opacity changes are the safest properties to animate, they run on the compositor and won't trigger layout or paint on every frame. Avoid easing properties like width or top for anything performance-sensitive.