How to Use the Cubic Bezier Generator
1. Choose a preset
Start by selecting a preset that is close to the motion you want to create.
In addition to CSS standards such as Ease, Ease In, Ease Out, and Ease In Out, the generator includes distinctive Expo and Back easing presets.
Selecting a preset immediately updates the curve, control points, and animation preview.
2. Adjust the control points
Drag the two control points in the curve editor to adjust the easing curve.
You can also enter X1, Y1, X2, and Y2 directly for precise control.
The horizontal axis represents elapsed time, while the vertical axis represents animation progress.
3. Preview the motion
Click “Replay” to preview the current settings as an animation.
Choose an easing under “Compare With” to play the current settings alongside Linear, Ease, or another standard easing and compare the motion.
Set the duration from 100 to 5000 ms to check how the easing feels in both fast and slow animations.
4. Copy the generated value
The generator automatically creates a cubic-bezier() value from your settings.
Choose “Value,” “Transition,” or “Animation,” then use the copy button to copy the format you need into your project.
Use the “Reset” button to restore the initial settings.
What Is cubic-bezier?
cubic-bezier() is a CSS easing function that gives you precise control over changes in speed during transitions and animations.
It can create motion that gradually accelerates from a slow start, begins quickly and eases into a stop, or follows many other timing patterns.
A cubic-bezier() function contains four values:
cubic-bezier(x1, y1, x2, y2)For example, the CSS ease keyword corresponds to:
cubic-bezier(0.25, 0.1, 0.25, 1)The curve has four points: a start point P0, two control points P1 and P2, and an end point P3.
P0 is fixed at (0, 0) and P3 at (1, 1), so you adjust only the coordinates of P1 and P2.
- P1 =
(x1, y1) - P2 =
(x2, y2)
The X axis represents time and the Y axis represents animation progress.
X1 and X2 must be between 0 and 1, but Y1 and Y2 may be negative or greater than 1.
Y values outside 0 to 1 can make the animation briefly move before its start value or overshoot its end value before returning.
FAQ
Where can I use cubic-bezier()?
transition-timing-function and animation-timing-function. transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);animation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1); You can also use it in the transition and animation shorthand properties. Can X1 or X2 be outside the 0–1 range?
X1 and X2 must be between 0 and 1; otherwise, the function is not a valid CSS easing value.This generator clamps out-of-range X input to the valid range.
Can Y1 or Y2 be outside the 0–1 range?
How do Ease, Ease In, Ease Out, and Ease In Out differ?
Ease: starts slowly, accelerates, then slows to a stop.Ease In: starts slowly and gradually accelerates.Ease Out: starts quickly and decelerates toward the end.Ease In Out: starts slowly, accelerates, then decelerates again.Linear: moves at a constant rate from start to finish.
Are Back Out and Ease Out Expo standard CSS easing keywords?
linear, ease, ease-in, ease-out, and ease-in-out.Back and Expo are commonly used names for distinctive custom easing curves. This generator provides them as
cubic-bezier() presets. Does changing the preview duration change cubic-bezier()?
cubic-bezier() controls how it accelerates and decelerates within that time.The same easing can feel different at different durations, so preview it close to the duration you plan to use.
Can cubic-bezier() create a bouncing animation?
A single
cubic-bezier() cannot create several repeated bounces. Use @keyframes or another technique for more complex bouncing motion. Can I use the generated value with both transition and animation?
transition and animation.The function defines only the pacing; you still need to specify the animated property, duration, and start and end states.
What do the X and Y axes represent?
(0, 0) is the start and (1, 1) is the end. The curve shows how far the animation has progressed at each point in time. Why does the animation briefly pass its start or end position?
Y1 or Y2 is below 0 or above 1. Those values let progress move temporarily outside the normal range.If this is unintended, move
Y1 and Y2 closer to the 0–1 range. Is cubic-bezier() supported by major browsers?
cubic-bezier() is widely supported by current major browsers for transitions and animations on websites and web applications. Can this generator create an entire CSS animation?
cubic-bezier() function that controls pacing.Define the element, animated properties, duration, and start and end states separately in your CSS.
Which easing should I use?
Ease Out works well for elements entering, Ease In for elements leaving, and Ease In Out for movement between positions.Check the animation preview and fine-tune the control points as needed.



