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)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.