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 →