Cubic Bezier Generator

Visually generate cubic-bezier timing functions for CSS animations. Drag the curve to adjust and preview animations in real-time.

Presets

Generated CSS Code

transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);

/* Or use in animation */
animation: myAnimation 1s cubic-bezier(0.25, 0.1, 0.25, 1);

/* Or in transition shorthand */
transition: all 1s cubic-bezier(0.25, 0.1, 0.25, 1);

How to Use

1. Select Preset or Create Custom Curve

Choose from built-in presets (ease, ease-in, ease-out, etc.) or drag the blue and red control points on the SVG canvas to create your desired curve.

2. Preview Animation

Click the play button to see the box move with the current timing function in real-time. Adjust duration from 0.1s to 3s.

3. Copy CSS Code

Copy the generated cubic-bezier() code with one click and use it directly in CSS transitions or animations.

4. Use Comparison Mode

Compare multiple timing functions side by side to choose the best animation effect for your project.

Real-World Use Cases

Button Hover Effect

Use easeOutBack to create a fun bounce effect on button hover. Effective for catching user attention and encouraging clicks.

Modal Appearance Animation

easeOutCirc makes modals appear with smooth deceleration. Provides natural, non-abrupt UI/UX.

Scroll Animation

easeInOutQuad provides smooth acceleration/deceleration for page scrolls or element fade-ins, giving a premium feel.

Loading Indicator

Use linear or custom curves to create constant-speed rotation animations for loading spinners.

Dropdown Menu

easeOut makes dropdown menus appear quickly then smoothly come to rest.

Timing Function Selection Tips

  • ease-out: When elements appear after user interaction (button click, modal, etc.)
  • ease-in: When elements disappear (modal close, fade-out, etc.)
  • ease-in-out: Bidirectional transitions (toggle, tab switch, etc.)
  • linear: Infinite loop animations (loading spinner, progress bar, etc.)
  • custom curve: When you want to create brand-unique motion design
  • duration 0.2~0.3s: Suitable for most UI interactions
  • duration 0.5s+: Major screen transitions or emphasis effects

Frequently Asked Questions

What is Cubic Bezier?

Cubic Bezier is a cubic curve defined by 4 points (start, two control points, end). In CSS, this curve defines acceleration/deceleration patterns for animations. It's used as cubic-bezier(x1, y1, x2, y2), where x1/y1 is the first control point and x2/y2 is the second.

What's the difference between ease, ease-in, and ease-out?

ease is the default curve that's fast in the middle and slow at start/end. ease-in starts slow and ends fast, natural for disappearing elements. ease-out starts fast and ends slow, good for appearing elements. ease-in-out is slow at both start and end, suitable for bidirectional transitions.

Can control points go outside the 0~1 range?

Yes. Y coordinates below 0 or above 1 create 'bounce' effects (easeInBack, easeOutBack, etc.). However, X coordinates must stay between 0~1 because time cannot go backwards.

Can I use this with both CSS transition and animation?

Yes, cubic-bezier() works with both transition-timing-function and animation-timing-function. You can also include it directly in transition or animation shorthand properties. Example: transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);

Which browsers support this?

cubic-bezier() is supported in all major modern browsers (Chrome, Firefox, Safari, Edge). It also works in IE 10+. For complex animations, consider GPU acceleration (using transform, opacity) for better performance.

How do I use comparison mode?

Activate comparison mode to see animations of multiple timing functions simultaneously. Useful for identifying subtle differences and choosing the best curve for your project. You can compare up to 3 at once.

Can I save custom curves?

Currently, you can copy the CSS code and save it separately. Define the copied cubic-bezier() code as a CSS variable or Sass variable in your project for easy reuse. Example: --custom-ease: cubic-bezier(0.25, 0.1, 0.25, 1);

Usage Notes

The generated CSS code works in modern browsers. Complex animations may affect performance, so it's recommended to use transform and opacity properties to leverage GPU acceleration. On mobile, keep animation duration short (0.2~0.3s) for best results.

Complete Guide to Cubic Bezier

How Bezier Curves Work

Bezier curves are mathematical curves introduced by Pierre Bézier for automobile design, defined by a start point, end point, and two control points. The CSS cubic-bezier(x1, y1, x2, y2) takes the coordinates of two control points of a cubic Bezier curve to determine animation timing. The x-axis represents time (0~1) and the y-axis represents progress, with the curve shape directly determining the acceleration and deceleration pattern of the animation.

Using Cubic Bezier in CSS Transitions

Using cubic-bezier() in CSS transition-timing-function and animation-timing-function provides far more precise timing control than browser keywords like ease and linear. For example, ease is equivalent to cubic-bezier(0.25, 0.1, 0.25, 1), and designers can tune these values directly to create a brand's unique motion language.

Creating Natural Animations

For natural UI animations, draw inspiration from physics. Use ease-out (fast start, then decelerate) when elements appear, and ease-in (slow start, then accelerate) when they disappear — this mimics real-world object behavior. When control point y values go outside 0~1, you can create bounce effects (like easeOutBack) perfect for attention-grabbing interactions. Most UI interactions work best at 0.2~0.4s, while screen transitions suit 0.4~0.6s.

This calculator is provided for informational purposes only.

Results are estimates and may differ from actual amounts.

© 2025 calculkorea. All rights reserved.

Link copied!