FIRST CH TOOLS / Design / 51 CUBIC-BEZIER EASING PREVIEW

cubic-bezier Easing Preview & Comparison

Shape the speed curve of a CSS animation by dragging the bezier handles. Two easings run side by side at the same time, so you can see which one feels right instead of guessing. Classic presets such as ease-out-expo, and a linear() approximation of any curve.

Shape the curve

time 0.0 → 1.0

Horizontal = time (0 → 1), vertical = progress (0 → 1). Drag the round handles, or focus one and use the arrow keys (Shift for ten times the step). Edits go to the curve you have selected (currently Curve A). The shaded band is the area outside 0–1, where the motion overshoots.

Type the numbers

Paste a value measured on another site (the cubic-bezier(…) you copied out of DevTools) straight into this field. Keywords such as ease-out and preset names such as ease-out-expo are understood too.

Run them side by side
ease-out-back0%
ease0%
Elapsed 0%

The thin lines under each track mark the position at evenly spaced moments in time. Where they bunch up the motion is slow; where they spread out it is fast. The vertical lines inside the track sit at progress 0 and 1, so an overshooting curve visibly runs past the line and comes back.

110.0%
Highest point
0.00×
Fastest moment (vs average)
0
linear() points
0
Approximation error
Generated CSS

  
Approximate with linear()

    

Because linear() is a polyline it can express motion that no cubic-bezier can — bounces, springs, several bursts of acceleration. What you get here is the selected curve rewritten as that polyline.

Checks

    Pick the colours you animate with the Colour Code Converter, build background gradients in the CSS Gradient Generator, and size type against the viewport with the CSS clamp() Calculator.

    How to Use

    1. Shape the curveDrag the handles on the graph, or pick something like ease-out-expo from the Presets tab. A cubic-bezier(…) copied from another site goes straight into the paste field.
    2. Put them side by sideLoad a different easing into Curve B and the two run together. Change the duration and the property so you are judging them under the conditions you will actually ship.
    3. Copy and paste"Copy value" gives you the bare cubic-bezier(…); "Copy declaration" gives the CSS with the custom properties. The linear() approximation has its own copy button.

    About This Tool

    Easing is progress plotted against time. CSS cubic-bezier(x1, y1, x2, y2) is a cubic bezier from (0,0) to (1,1) bent by two control points, with time on the horizontal axis and progress on the vertical one. This page lets you drag those control points and watch the shape, the actual motion and the CSS at the same time. Progress is computed exactly the way browsers do it (WebKit's UnitBezier): Newton-Raphson to invert the time axis, falling back to bisection on the stretches where it will not converge — so what you see here is what the CSS you copy will do.

    Running two curves at once is the point. An easing on its own tells you very little. Put different curves in A and B and they run over the same duration and the same distance, which makes the difference obvious. The thin lines under each track are the positions at evenly spaced moments — a strobe trail, so their density is the speed distribution (bunched up = slow). So that an overshooting curve never escapes its track, the value ranges of A and B are mapped together onto the width of the track; progress 0 and 1 are therefore marked by the vertical lines inside it.

    It also exports a linear() approximation. A cubic bezier cannot carry more than one hill, so a bounce is impossible to write with one. CSS linear() specifies the timing as a polyline through a list of points; this tool samples the curve at 600 places and then drops points until the vertical (progress) error is under the chosen threshold. Measuring the error horizontally, or by spacing the points evenly, hides the error on the steep stretches — since linear() interpolates straight between its points, the vertical difference is the one that matters. The real maximum error and the resulting point count are shown with the figures.

    Handy for checking a value you measured elsewhere. Paste a cubic-bezier(…) lifted from DevTools and you immediately see both the shape and the motion. Everything runs in the browser and nothing is uploaded. Directly callable via URL parameters: /en/easing/?a=0.34,1.56,0.64,1&b=ease-out-expo&dur=900&prop=x

    Other Tools