CSS CUBIC-BEZIER EASING CURVE EDITOR

Drag the curve handles, preview the motion, and copy the cubic-bezier() value.

Presets

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

.eased {
  transform: translateX(0);
  transition-property: transform;
  transition-duration: 900ms;
  transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
}

.eased.is-active {
  transform: translateX(260px);
}

How to use the easing editor

  1. 1

    Drag the two orange handle points to shape the curve, or click a named preset.

  2. 2

    Watch the dot in the motion preview to feel how the curve translates into movement.

  3. 3

    Adjust the duration slider and hit Replay to re-run the preview.

  4. 4

    Copy the cubic-bezier() value and the example CSS/HTML.

Questions

What do the two points on the curve actually control?
cubic-bezier(x1, y1, x2, y2) defines two control points for a curve that always starts at (0,0) and ends at (1,1). P1 pulls the start of the motion toward itself and P2 pulls the end — moving a point up speeds the animation through that portion of its progress, moving it down slows it.
Why can the Y values go above 1 or below 0?
The X axis (time) is clamped to 0–1 because a cubic-bezier must be a function of time, but Y (the animated value's progress) isn't clamped — that's what lets you build overshoot effects like Back Out (value briefly exceeds 100%) or Back In (value briefly goes negative) before settling.
Is this the same curve browsers use for ease, ease-in, etc.?
Yes — ease, ease-in, ease-out, and ease-in-out are all just cubic-bezier() shorthand keywords with fixed control points (e.g. ease is cubic-bezier(0.25, 0.1, 0.25, 1)); the presets here reproduce their exact point positions so you can start from a familiar curve and tweak it.
Can I use the same easing for a CSS animation instead of a transition?
Yes — the cubic-bezier() value works identically as transition-timing-function or animation-timing-function; just swap which property you assign it to depending on whether you're animating a state change (transition) or a @keyframes sequence (animation).
Does this tool store or upload anything?
No — every point and preview is generated and rendered locally in your browser. Nothing is sent to a server.