Cubic Bezier Generator

Shape a cubic-bezier() easing curve by dragging two control points — X stays within 0–1, Y can overshoot for bounce or anticipation.

Drag the two handles, pick a preset, or type exact values below.

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

What a cubic-bezier easing curve is

CSS animations and transitions move between two states over time, and the timing function decides how that progress is paced — slow-then-fast, fast-then-slow, or with a little overshoot. cubic-bezier(x1, y1, x2, y2) defines that pacing with two control points on a curve that runs from the start (0,0) to the end (1,1). This editor lets you shape the curve by dragging the two handles, so you can feel the motion instead of guessing numbers.

How to use it

Drag the blue and purple handles to bend the curve, or pick a preset like ease, ease-in-out or linear as a starting point. Type exact values into the X/Y fields when you need precision — the two X values are kept inside 0–1 (required by CSS) while Y can go beyond it to create bounce or anticipation. The moving dot previews the real motion, and one click copies the cubic-bezier() value or a full transition-timing-function declaration ready to paste into your stylesheet. To put the curve in a whole transition declaration with a property, a duration and a delay, use the CSS Transition Generator.

Frequently asked questions

Why can Y go above 1 or below 0, but X can't?

The X axis is time, which must always move forward, so a control point's X is clamped to 0–1. The Y axis is progress, and letting it pass 1 or dip below 0 is what produces overshoot (bounce) and anticipation effects.

Where do I paste the result?

Use it in any transition or animation, for example transition: transform 0.3s cubic-bezier(0.25, 0.1, 0.25, 1); or as an animation-timing-function. It works in every modern browser.