Skip to content
AZ Tools

CSS Cubic-Bezier Curve Generator

Drag the control points to design a CSS easing curve — preview the motion live, copy the cubic-bezier() value.

Presets

Preview animation

CSS
transition-timing-function: cubic-bezier(0.42, 0.00, 0.58, 1.00);

Use with transition-timing-function or animation-timing-function.

How to use

  1. Drag the blue and red handles to shape the curve.
  2. Or pick a preset (ease, ease-in-out, overshoot…).
  3. Press Play to feel the motion at the chosen duration, then copy the CSS.

About this tool

Show

Shape a CSS easing curve by dragging its two control points and watch a sample element animate with it, at a duration you can change. The four CSS keywords are just named curves with fixed coordinates — ease is 0.25, 0.1, 0.25, 1 — and loading one as a starting point is usually faster than building from scratch. The two axes are not symmetrical, and knowing which is which saves a lot of confusion. Vertical is progress, and pushing a handle above or below the box is legal: that is what gives you overshoot and anticipation, the spring-like feel. Horizontal is time, and CSS accepts only values between 0 and 1: the browser discards a declaration outside that range entirely, so the editor stops a handle at the box's left and right edges, and a typed X is held to the same range.

Frequently asked questions

Why can Y values go above 1 or below 0?

Overshoot ('bouncy') and anticipation ('wind-up') effects need Y outside the [0, 1] range. CSS allows it — the animated value can briefly exceed the target before settling.

X values outside [0, 1]?

CSS restricts X1 and X2 to [0, 1] so the curve is a function of time. The slider clamps for X but allows Y > 1 / < 0 for overshoot.

How is this different from spring physics?

Cubic-bezier is a deterministic curve over fixed time. Springs (animation-timing-function: linear(...) or JS) model real physics — different mental model, similar feel for simple cases.

Where do I use this in CSS?

transition-timing-function: cubic-bezier(...) for transitions, or animation-timing-function: for keyframes. Tailwind: ease-[cubic-bezier(...)].

Related tools