Home/Tools/Animations/Cubic Bezier Generator
Animations · Generator

Cubic Bezier Generator

Design custom easing curves with an interactive cubic-bezier graph.

Bezier Curve

0.4
0
0.2
1
1s
0s

Presets

Preview

CLICK TO ANIMATE

Bezier Curve

cubic-bezier(0.4, 0, 0.2, 1)
Generated CSS & HTML
.animated-element {
  animation: slideIn 1s 0s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes slideIn {
  from {
    transform: translateX(-100%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}
100%
Free, no
sign-up needed
0
Code written
by hand
85+
CSS tools
in one place
<1s
Copy-ready
CSS instantly
What is this

What is the CSS Cubic Bezier Generator?

Design custom CSS easing curves with a visual control point editor. Preview how your curve moves an element and copy the cubic-bezier() value.

Everything runs locally in your browser. Adjust the controls above, preview instantly, and copy clean, production-ready CSS — no account, no upload.

How to use

Using the CSS Cubic Bezier Generator

Everything lives in the panel at the top of this page. There is nothing to install — it all runs right here in your browser.

1

Drag the control points

Move the two Bezier handles to shape the curve. Left handle controls acceleration at the start. Right handle controls deceleration at the end.

2

Preview the motion

Click the Play button to see a ball or element move along your curve. Compare with built-in easings side by side.

3

Copy the cubic-bezier() value

Click Copy to grab cubic-bezier(x1, y1, x2, y2) ready to use in transition or animation-timing-function.

The output

What the generated code looks like

Clean, production-ready CSS — no vendor bloat, no unnecessary declarations.

styles.css
/* Named easings */
.ease         { transition: transform 300ms ease; }
.ease-in      { transition: transform 300ms ease-in; }
.ease-out     { transition: transform 300ms ease-out; }
.ease-in-out  { transition: transform 300ms ease-in-out; }
.linear       { transition: transform 300ms linear; }

/* Custom spring-like easing */
.spring {
  transition: transform 400ms cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* Custom deceleration */
.decelerate {
  transition: transform 300ms cubic-bezier(0.0, 0.0, 0.2, 1.0);
}

Values outside 0-1 on the Y axis produce overshoot (spring) effects. Values are always between 0-1 on the X axis.

Pro tips

Pro tips for better results

ease-out is the most natural for UI elements

Real objects decelerate as they stop. ease-out (fast start, slow end) matches this and feels natural for elements entering the screen.

Spring effects use Y values outside 0-1

cubic-bezier(0.34, 1.56, 0.64, 1) overshoots the target and bounces back - a spring. This is fine in CSS; only X values must stay between 0 and 1.

Material Design standard easing is cubic-bezier(0.4, 0, 0.2, 1)

This is the standard easing curve from Material Design. It decelerates into resting position and is suitable for most UI transitions.

Linear is appropriate for continuous loops

Spinning loaders, progress bars, and other continuous animations look better with linear easing. Any easing that accelerates or decelerates creates a pulsing feeling in continuous loops.

FAQ

Frequently asked questions

cubic-bezier(x1, y1, x2, y2) defines two control points of a Bezier curve. The curve always starts at (0,0) and ends at (1,1). x1 and x2 must be between 0 and 1. y1 and y2 can go outside that range to create overshoot effects.
Yes. cubic-bezier() is supported in all modern browsers and has been since Chrome 4, Firefox 4, Safari 3.1, and IE 10.
No. Everything runs in your browser. Nothing is sent to a server.

From the blog

Read more