b2KIT

Cubic Bezier Easing Editor

Drag control points to create custom cubic-bezier timing functions with comparison to standard easing presets.

Tested tool guide Tested browser tools Checked August 16, 2026

What Cubic Bezier Easing Editor does, with a checked example

Cubic Bezier Easing Editor turns two movable control points into a CSS cubic-bezier() timing function and compares its curve with standard easing presets. Dragging a point changes how quickly normalized progress advances between the fixed start at (0, 0) and end at (1, 1). The common misconception is that the graph describes an element's spatial path. It does not. The curve maps elapsed-time progress on the horizontal axis to output progress on the vertical axis.

Worked example

A concrete input and expected output from the current implementation.

Input

First control point: (0.25, 0.1)
Second control point: (0.25, 1)

Expected output

cubic-bezier(0.25, 0.1, 0.25, 1)

The four arguments are the x and y coordinates of the first control point followed by those of the second. These coordinates exactly match the CSS easing keyword ease.

How the result is produced

1

Control-point mapping

The curve has fixed endpoints at (0, 0) and (1, 1). Its two editable control points determine the curve between them. For a given normalized time on the x-axis, the corresponding y-value supplies the eased progress. Moving a control point therefore changes acceleration and deceleration without changing the animation's declared duration.

2

Preset comparison

Comparing the custom curve with standard presets reveals whether progress begins or ends more gradually than a familiar easing. The resulting four-number expression can be used anywhere CSS accepts a cubic-bezier() easing function, including transition-timing-function and animation-timing-function. The comparison concerns curve shape, not the duration or distance of a particular transition.

Good uses

  • Tune a CSS transition that should accelerate gently and settle quickly.
  • Reproduce a design-system motion curve as an exact cubic-bezier() value.
  • Compare a custom animation timing curve with ease, ease-in, ease-out, or ease-in-out.

Limits and checks

  • The curve controls timing progress only; it does not define a motion path or choose which properties animate.
  • Different curves can appear similar in the graph but produce noticeably different motion near their endpoints.
  • The first and third arguments must remain between 0 and 1 for a valid CSS cubic-bezier() easing function; the y arguments may extend outside that range.

Common questions

Can the curve make an animation overshoot its final value?

Yes, when a control point's y-coordinate lies below 0 or above 1, the eased progress can temporarily fall outside the normal output range. Whether that creates a visible overshoot depends on the animated property's interpolation. It does not extend the animation duration, and some properties may make the effect less obvious.

Does this editor create a curved route for an element to follow?

No. A cubic-bezier easing function controls how progress changes over time, not where an element travels. Use it to alter the pacing of a transform, opacity change, or other interpolated property. A spatial curve requires a separate path mechanism, such as CSS motion-path, SVG path animation, or coordinated transform values.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools