Free CSS Cubic-Bezier Easing Generator
Design CSS easing curves by dragging control points, preview the motion live, and copy the cubic-bezier() value. Includes overshoot/bounce presets.
Drag the teal & rose handles to shape the curve
Presets
The rose and teal handles can pull above or below the box (Y beyond 0-1) to create 'overshoot' / bounce effects like back-out and anticipate. X stays within 0-1 (time can't reverse).
Common uses
- Custom CSS Transition EasingDesign natural-feeling easing for hover effects, menus, and UI transitions.
- Bounce & Overshoot AnimationsCreate playful spring/bounce motion by pulling control points past the box.
- Easing for @keyframes AnimationsPick the right animation-timing-function for CSS keyframe animations.
- Easing Values for JS Animation LibrariesGet cubic-bezier values for GSAP, Framer Motion, anime.js, and more.
- Understand How Easing WorksSee the relationship between a bezier curve and the motion it produces.
How It Works
The editor is built entirely in the browser using React state and SVG β no library handles the curve math. Two draggable control points define an SVG cubic Bezier path, and the browser's own CSS animation engine runs the motion preview by injecting the resulting cubic-bezier() value directly into a @keyframes rule.
- 1Drag or type control pointsTwo handles (P1 in teal, P2 in rose) sit on an SVG canvas. Dragging uses the Pointer Events API with setPointerCapture so the handle tracks your finger or cursor even outside the SVG boundary. You can also nudge handles with arrow keys or type exact values into the x1/y1/x2/y2 number inputs.
- 2SVG draws the curve in real timeThe curve is a single SVG <path> element whose C (cubic Bezier) command is recalculated from the four control-point coordinates on every state update. No canvas, no external library β the browser's SVG renderer draws the path directly.
- 3Browser CSS engine previews the easingThree live animations (a sliding dot, a width transition, and a scale) run CSS @keyframes with the cubic-bezier() value injected inline. The browser's own animation engine interprets the curve, so what you see is exactly what your production CSS will produce.
- 4Copy the snippet in your framework's syntaxTabs format the same four numbers as a CSS transition-timing-function, a Tailwind arbitrary-value class, a Framer Motion ease array, or an anime.js easing string. The snippet is written to the clipboard with navigator.clipboard. The curve is also encoded in the URL hash (#b=x1,y1,x2,y2) so you can share or bookmark it.
Related Tools
Audio Fade In/Out
Add a fade-in and fade-out to any audio clip with your choice of curve, previewed live on the waveform.
Subtitle Editor
Edit SRT/VTT subtitles in a table, preview them live over your video, and export.
CSS Grid Generator
Visually design a CSS grid β tracks, units and gaps β and copy the generated CSS and HTML.