CSS Easing Function Editor

Visually create and edit cubic-bezier() easing functions with draggable control points and real-time animation preview.

About This Tool

The CSS Easing Function Editor is a free, browser-based visual tool for designing cubic-bezier() easing curves used in CSS transitions and animations. Instead of guessing control point values, you can drag two handles on an interactive graph to shape your curve precisely and see the resulting motion in real time.

CSS transitions and animations accept a timing-function that controls how the intermediate values of a property change over time. The cubic-bezier(x1, y1, x2, y2) function defines a curve between two fixed endpoints — (0, 0) representing the start of the animation and (1, 1) representing its end. The two control points (x1, y1) and (x2, y2) determine the shape of the curve and therefore the "feel" of the animation: whether it starts slowly and accelerates, overshoots the target and bounces back, or transitions at a constant speed.

This editor comes with over 20 built-in presets grouped by category — standard CSS keywords like ease, ease-in, and ease-in-out; easing families such as Quadratic, Cubic, Quartic, and Exponential; overshoot curves (Back); and Material Design motion curves. Selecting a preset instantly loads its values and displays the curve.

The comparison mode lets you overlay a second easing curve (shown in red) on the same graph so you can visually compare how two different timing functions behave. Both curves animate simultaneously in the preview bar below the graph. This is especially useful when deciding between subtle variations — for example comparing ease-in-out against the Material Standard curve.

All processing happens entirely in your browser — no data is sent to any server. The generated CSS properties include transition-timing-function, animation-timing-function, and a full transition shorthand with the configured duration. You can pair this tool with the CSS Animation Generator to build complete keyframe animations, or use the Color Converter when fine-tuning the colors in your animated elements. For layout-related transitions, the CSS Layout Generator can help structure the elements you intend to animate.

How to Use

  1. Drag the control points on the graph — the blue point is P1 (x1, y1) and the green point is P2 (x2, y2). The curve updates in real time.
  2. Alternatively, type exact values into the x1, y1, x2, y2 input fields below the graph.
  3. Browse the Presets panel on the right and click any preset to load its values instantly.
  4. Adjust the Duration slider to set the animation length from 100 ms to 3000 ms.
  5. Click Play to see the easing applied to a moving box in the preview area. Click again to stop.
  6. Enable Compare mode to overlay a second easing curve (red) and animate both side by side.
  7. Click the Copy button next to any output line, or press Ctrl+Shift+C to copy the cubic-bezier() value to your clipboard.

Popular CSS Easing Examples

View all CSS easing examples →

FAQ

What is a cubic-bezier easing function?

A cubic-bezier easing function defines how a CSS transition or animation progresses over time. It is specified as cubic-bezier(x1, y1, x2, y2), where the two control points shape the acceleration curve between the start (0, 0) and end (1, 1). For example, ease-in starts slowly and accelerates, while ease-out starts fast and decelerates.

What do the x and y values represent?

The x values represent time (0 = start, 1 = end) and must be between 0 and 1. The y values represent progress (0 = initial state, 1 = final state) and can exceed the 0–1 range to create overshoot or bounce effects. For example, a y value of 1.2 means the animation momentarily goes past its target before settling.

How do I create a bounce or overshoot effect?

Set one or both y values outside the 0–1 range. For an overshoot at the end, try cubic-bezier(0.175, 0.885, 0.32, 1.275) — the y2 value of 1.275 pushes the animation past its endpoint before snapping back. For an anticipation effect at the start, use a negative y1 value like cubic-bezier(0.6, -0.28, 0.735, 0.045).

What is comparison mode?

Comparison mode overlays a second easing curve (shown in red) on the same graph. Both curves animate simultaneously in the preview area, letting you see how two different timing functions behave side by side. Use this to fine-tune your easing by comparing it against a known reference like ease-in-out or a Material Design curve.

Can I use these values in JavaScript animations?

Yes. The cubic-bezier values work with the Web Animations API via the easing property (e.g., element.animate([...], { easing: 'cubic-bezier(0.25, 0.1, 0.25, 1)' })). They also work with animation libraries like GSAP, Framer Motion, and anime.js that accept CSS easing strings.

Is my data safe?

Yes. All processing runs entirely in your browser using the HTML Canvas API and JavaScript. No data is sent to any server. There are no network requests, no logging, and no third-party services involved.

What are the Material Design easing curves?

Material Design defines three standard easing curves: Standard (0.4, 0, 0.2, 1) for elements moving within view, Decelerate (0, 0, 0.2, 1) for elements entering the screen, and Accelerate (0.4, 0, 1, 1) for elements leaving the screen. These curves create natural-feeling motion consistent with Material Design guidelines.

Related Tools