Skip to content
UniKit

Cubic bezier generator

Build cubic-bezier easing curves by dragging control points or typing numbers: live animation preview, validity and overshoot checks, plus CSS transition-timing-function and SVG output.

Runs in your browserEvery computation happens in your browser — your data never leaves this device.

Control points

Drag the two circles on the curve to move the control points

Preset

x must stay within 0–1; y can be any number (values outside 0–1 overshoot)

Parse input

Animation preview

Curve: ease
linear

CSS output

CSS
.example {
  transition-timing-function: ease;
  transition: transform 0.4s ease;
  animation-timing-function: ease;
}

Keyword: ease

What this tool does

  • When you want a bouncy or slow-in-fast-out feel, drag the two control points and watch the live animation instead of editing numbers blindly.
  • Paste a cubic-bezier(…) string from a designer to see the curve shape, whether it overshoots, and which CSS keyword it matches.
  • Check whether a curve is exactly linear, ease, ease-in, ease-out or ease-in-out — when it is, the output uses the keyword and stays short.
  • Spot overshoot: a y value outside 0–1 is flagged as a possible source of visual jitter, so you can confirm it is intentional before shipping.

Example

Input

cubic-bezier(0.34, 1.56, 0.64, 1)

Output

.example {
  transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
  transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
  animation-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
}

The y value 1.56 is outside 0–1, so the tool also flags this as an overshooting (bounce) curve; cubic-bezier(0.42, 0, 0.58, 1) instead collapses to the keyword ease-in-out.

Frequently asked questions

How do the ranges for x and y differ?

x1 and x2 must stay within 0–1 and anything else is reported as an invalid curve, because time cannot run backwards. y1 and y2 may be any number: outside 0–1 it is an overshoot (bounce), which the tool flags without stopping you.

Why was my curve replaced by a keyword?

When the four values exactly match a CSS keyword (linear, ease, ease-in, ease-out, ease-in-out) the output prefers the keyword, since it is identical but shorter. Nudge any decimal slightly to force the numeric form.

Which input formats can be parsed?

cubic-bezier(0.25, 0.1, 0.25, 1), 0.25, 0.1, 0.25, 1 and 0.25 0.1 0.25 1 are all accepted, with commas and spaces in any mix — but there must be exactly four numbers, otherwise you get "enter a valid cubic-bezier".

What is the problem with overshooting curves?

A y value beyond 0–1 makes the animation pass the end point and bounce back. That reads as lively, but it can shake text, spill out of a container or clash with other animations. The tool only warns; the decision is yours.

Is the curve preview really computed?

Yes. The tool solves for the parameter t that matches a given x using Newton iteration with a bisection fallback, then evaluates y — the same way browsers evaluate CSS easing. Every row of the sample table comes from that, not from interpolation.

Keywords:cubic-bezierbezier贝塞尔easing缓动transition-timing-functionanimation动画csstiming function缓动函数

Related tools