0

The Real Numbers Behind CSS ease-in-out

Design a custom CSS cubic-bezier() timing function by dragging two control points, preview it live against a linear reference, then copy the ready value.

Drag the orange handle (P1) and the red handle (P2) to reshape the curve — arrow keys work too. X stays clamped between 0 and 1 as CSS requires; drag a handle above or below the box to send y past that range for overshoot and bounce effects.

Your curve

Linear (for comparison)

Processing... 0%

Result

This page opens the cubic-bezier generator with x1=0.42, y1=0, x2=0.58, y2=1 already loaded — the exact control points the CSS ease-in-out keyword expands to. Drag either handle, or edit the numbers directly, and the curve, the animation preview and the copyable string all update immediately.

ease-in-out is one of the five built-in CSS timing keywords, and it's popular precisely because this curve accelerates gently out of the start, holds a fairly even pace through the middle, and eases back down before the end — a shape that reads as natural for most UI motion. Seeing it as explicit control points instead of a keyword name makes it obvious why: y1 sits near 0 and y2 sits near 1, both close to their matching x, so there is no overshoot in either direction.

Use these four numbers as a starting point rather than the keyword itself whenever you need to nudge the feel slightly — pull x1 down for a snappier start, or push y2 above 1 to turn this same shape into a gentle overshoot. Every change updates the preview and the copyable cubic-bezier() line instantly.