Visual easing curve editor for perfect CSS animations
Create, customize, and preview cubic-bezier timing functions for smooth CSS transitions and animations.
Drag the control points to shape your easing curve. The curve defines how your animation progresses over time[citation:1][citation:5].
Click on any preset to apply it to your curve[citation:8].
Drag control points directly on canvas for intuitive curve shaping.
Fine-tune values with precision sliders for each coordinate.
Real-time animation preview with adjustable duration.
One-click copy of CSS code for immediate use in your projects.
Save and organize your custom curves for future use.
Overlay multiple curves to compare their timing differences.
The cubic-bezier() function in CSS creates smooth transitions using a cubic Bézier curve[citation:1]. As an easing function, it controls how animations accelerate and decelerate, making movement feel more natural and engaging in user interfaces. Unlike simple linear timing, cubic-bezier curves allow for sophisticated motion design that can significantly enhance user experience.
A cubic Bézier curve is defined by four points: P0, P1, P2, and P3. In CSS, P0 is fixed at (0,0) representing the animation start, and P3 is fixed at (1,1) representing the animation end[citation:1]. The function parameters cubic-bezier(x1, y1, x2, y2) define the coordinates of P1 and P2 respectively. The x-axis represents time progression (input), while the y-axis represents animation progress (output)[citation:5].
Valid cubic-bezier values require that x1 and x2 coordinates be within the [0,1] range, while y1 and y2 can extend beyond this range to create effects like "bouncing" or "overshoot"[citation:1]. When values go outside the [0,1] range on the y-axis, the animation may temporarily exceed its final state before settling, creating engaging motion effects that mimic real-world physics.
Well-crafted easing curves are essential for creating polished user interfaces. Different easing types serve different purposes:
As noted in animation guides, "movement tells a story. The transition itself is the verb; the easing curve is the adverb"[citation:5]. The right easing can make interface elements feel responsive and connected to user actions, while poor easing can make interactions feel mechanical or confusing.
This visual editor simplifies the process of creating custom easing functions. Instead of guessing numeric values, you can:
Remember that consistency in animation timing across your interface creates a cohesive user experience. Once you find curves that work well for specific interactions (like button presses, modal appearances, or page transitions), save them to maintain consistency throughout your projects.
When implementing cubic-bezier curves in production code:
prefers-reduced-motion media querytransform and opacity propertiesWith practice, you'll develop an intuition for how different curve shapes translate to motion feelings. The visual feedback in this tool helps bridge the gap between mathematical curves and perceived motion, making you more effective at crafting engaging user interfaces.