Free Online CSS Cubic Bezier Generator Tool
Generate CSS cubic-bezier easing functions online instantly with this free CSS Cubic Bezier Generator. Use the tool below to create custom easing curves for transitions, animations, hover effects and UI motion.
Cubic bezier settings
Create custom CSS cubic-bezier easing curves for transitions and animations with live motion preview.
Curve controls
Control points X values should stay between 0 and 1 for valid CSS. Y values can go below 0 or above 1 for overshoot effects.
Live preview
See the curve shape and motion timing before copying the CSS value.
Curve visualizer
The blue curve represents the easing. Handles show both cubic-bezier control points.
Generated CSS
cubic-bezier(0.16, 1, 0.3, 1)Saved easings
Recent and favorite cubic-bezier curves are saved locally in this browser.
Recent easings
Favorite easings
What is a CSS Cubic Bezier Generator?
A CSS Cubic Bezier Generator is an online tool that helps you create custom CSS easing functions visually. Instead of writing cubic-bezier() values manually, you can adjust the curve, preview the motion and copy the generated CSS code.
CSS cubic-bezier functions are used to control the speed curve of transitions and animations. They define how an element moves over time, such as starting slowly, speeding up, slowing down at the end, bouncing slightly or creating a sharper motion effect.
This CSS Cubic Bezier Generator runs directly in your browser, making it fast and simple to create custom easing CSS without installing software.
What can you use it for?
You can use this online cubic-bezier generator to create custom easing for buttons, cards, menus, modals, sliders, dropdowns, hover effects, page transitions, CSS animations and interactive UI components.
For example, you may want a smooth easing curve for a button hover, a snappy entrance animation for a modal, a soft slide transition for a menu, or a custom animation timing function for a card that scales into view.
How to use the CSS Cubic Bezier Generator
Step 1: Adjust the easing curve
Use the controls to move the cubic-bezier control points and shape the motion curve.
Step 2: Preview the animation timing
Check the live preview to see how the easing function affects movement. Adjust the curve until the motion feels right for your design.
Step 3: Copy the CSS code
Copy the generated cubic-bezier() value and use it in transition-timing-function, animation-timing-function or the CSS shorthand properties for transitions and animations.
CSS cubic-bezier options
This CSS Cubic Bezier Generator can help with common easing tasks such as:
- Generate CSS cubic-bezier values
- Create custom easing functions
- Create smooth transition timing
- Create animation easing curves
- Create ease-in effects
- Create ease-out effects
- Create ease-in-out effects
- Create snappy motion curves
- Create soft UI motion
- Adjust cubic-bezier control points
- Preview easing curves live
- Generate clean CSS code
- Copy cubic-bezier CSS instantly
- Create hover easing effects
- Create modal animation easing
- Create menu transition easing
- Create button transition timing
- Use the tool without installing software
The final CSS output may depend on the curve you choose, the duration, the animated property and how the generated code is applied in your project.
What is cubic-bezier in CSS?
The cubic-bezier() function is a CSS timing function used to define custom easing curves. It controls how fast or slow an animation progresses between its start and end states.
A cubic-bezier function uses four numeric values:
cubic-bezier(x1, y1, x2, y2)The x1, y1, x2 and y2 values define two control points that shape the curve. The curve starts at the beginning of the animation and ends at the final state.
In practical terms, cubic-bezier values help you decide whether a motion should feel smooth, sharp, slow, fast, natural, dramatic or playful.
Basic cubic-bezier CSS example
A custom easing curve can be used in a transition.
.button {
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.button:hover {
transform: translateY(-4px);
}In this example, the cubic-bezier function controls how the button moves when it is hovered.
Cubic-bezier with transition-timing-function
You can use a cubic-bezier value with transition-timing-function.
.card {
transition-property: transform, box-shadow;
transition-duration: 0.3s;
transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}This gives you more control than a basic timing keyword such as ease or linear.
Cubic-bezier with animation-timing-function
You can also use cubic-bezier values with CSS animations.
.modal {
animation: modalIn 0.45s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
@keyframes modalIn {
from {
opacity: 0;
transform: translateY(24px) scale(0.96);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}This creates a smoother and more polished modal entrance animation.
Common easing examples
Ease
The default ease timing function starts slightly slow, speeds up and then slows down.
transition-timing-function: ease;A similar cubic-bezier value is:
transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);Ease-in
An ease-in curve starts slowly and speeds up toward the end.
transition-timing-function: ease-in;A common cubic-bezier value is:
transition-timing-function: cubic-bezier(0.42, 0, 1, 1);Ease-in works well when an element is leaving the screen or moving away from the user.
Ease-out
An ease-out curve starts quickly and slows down near the end.
transition-timing-function: ease-out;A common cubic-bezier value is:
transition-timing-function: cubic-bezier(0, 0, 0.58, 1);Ease-out works well for elements entering the screen, opening menus, appearing cards and modal animations.
Ease-in-out
An ease-in-out curve starts slowly, speeds up in the middle and slows down at the end.
transition-timing-function: ease-in-out;A common cubic-bezier value is:
transition-timing-function: cubic-bezier(0.42, 0, 0.58, 1);Ease-in-out works well for balanced motion, toggles, sliders and smooth UI transitions.
Snappy easing
A snappy easing curve can make UI motion feel quick and responsive.
transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);This type of curve is useful for modals, dropdowns, hover effects and interface elements that should feel fast but smooth.
Overshoot-style easing
Some cubic-bezier curves can go beyond the normal range to create an overshoot or bounce-like feeling.
transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);This can be useful for playful buttons, badges, popups and attention effects. Use it carefully so the motion does not feel too exaggerated.
CSS Cubic-bezier values explained
First control point
The first control point controls the early part of the curve. It affects how the motion starts.
cubic-bezier(0.4, 0, 0.2, 1)In this example, 0.4 and 0 form the first control point.
Second control point
The second control point controls the later part of the curve. It affects how the motion ends.
cubic-bezier(0.4, 0, 0.2, 1)In this example, 0.2 and 1 form the second control point.
X values
The X values usually stay between 0 and 1. They control the time progression of the curve.
Y values
The Y values control the movement progress. They can sometimes go below 0 or above 1 to create overshoot-style motion.
Cubic-bezier vs CSS timing keywords
The @keyframes rule defines the stages of a CSS animation. You can use from and to, or percentage values such as 0%, 50% and 100%.
Timing keywords
CSS includes built-in timing keywords such as linear, ease, ease-in, ease-out and ease-in-out.
transition-timing-function: ease-out;These are simple and useful for many common transitions.
Cubic-bezier
A cubic-bezier function gives you more control over the motion curve.
transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);Use cubic-bezier values when you want custom motion that feels more precise, polished or brand-specific.
Cubic-bezier for transitions
CSS transitions are one of the most common places to use cubic-bezier easing.
.button {
transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1),
box-shadow 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}
.button:hover {
transform: translateY(-3px);
box-shadow: 0 16px 32px rgba(0, 0, 0, 0.18);
}This creates a smoother hover effect than a simple linear transition.
Cubic-bezier for animations
CSS animations can use cubic-bezier easing to control how keyframes progress.
.element {
animation: slideUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
@keyframes slideUp {
from {
opacity: 0;
transform: translateY(32px);
}
to {
opacity: 1;
transform: translateY(0);
}
}This type of easing works well for entrance animations, hero sections, cards, modals and UI panels.
Easing design tips
Match the easing to the action
Use quicker easing for small hover effects and softer easing for larger page or modal transitions.
Use ease-out for entering elements
Elements entering the screen often feel better with ease-out motion because they start quickly and settle smoothly.
Use ease-in for exiting elements
Elements leaving the screen often feel natural with ease-in motion because they start slowly and speed away.
Keep motion subtle
Extreme curves can feel playful, but they may also feel distracting. Use dramatic easing only when it fits the design.
Pair easing with good duration
A great easing curve can still feel wrong if the duration is too slow or too fast. Small UI transitions often work well between 150ms and 300ms, while larger entrance animations may need a little more time.
Test on real components
The same cubic-bezier value can feel different on buttons, cards, modals and menus. Always preview it with the real element when possible.
Consider reduced motion
For important projects, consider supporting prefers-reduced-motion so users who prefer less motion can avoid unnecessary animations.
@media (prefers-reduced-motion: reduce) {
* {
animation: none !important;
transition: none !important;
}
}Cubic-bezier and UI motion
Good UI motion should feel natural, responsive and helpful. Cubic-bezier easing can make a simple transform, fade or slide effect feel much more professional.
For example, a button hover can feel more responsive with a quick ease-out curve. A modal can feel more polished with a softer entrance curve. A menu can feel more natural when it accelerates and settles smoothly.
By using custom easing, you can make your interface feel more consistent and intentional.
Cubic-bezier vs linear motion
Linear motion
Linear motion moves at the same speed from start to finish.
transition-timing-function: linear;This can be useful for loaders, continuous rotation or mechanical movement, but it often feels unnatural for UI transitions.
Cubic-bezier motion
Cubic-bezier motion can accelerate and decelerate. This makes it feel more natural for most interface interactions.
transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);For buttons, menus, cards and modals, cubic-bezier easing usually feels better than linear motion.
Common cubic-bezier use cases
For buttons
Create smooth hover effects, button lift effects, press effects and CTA interactions.
For cards
Apply custom easing to card hover effects, scale effects, shadows and entrance animations.
For modals
Create smooth modal fade, slide, scale and pop-in effects.
For menus
Use cubic-bezier easing for dropdown menus, mobile navigation, sidebars and off-canvas panels.
For sliders
Create smoother slider movement, carousel transitions and UI panel changes.
For animations
Use custom easing with keyframes for fade, slide, scale, rotate, bounce and entrance effects.
Related tools
Frequently Asked Questions
Is this CSS Cubic Bezier Generator free?
Yes. This CSS Cubic Bezier Generator is completely free to use.
Do I need to install anything?
No. You can generate cubic-bezier CSS directly in your browser without installing software.
What is cubic-bezier in CSS?
cubic-bezier() is a CSS timing function used to define custom easing curves for transitions and animations.
What is an easing function?
An easing function controls how an animation progresses over time, such as starting slow, speeding up or slowing down near the end.
Can I use cubic-bezier with transitions?
Yes. You can use cubic-bezier values with transition-timing-function or inside the transition shorthand property.
Can I use cubic-bezier with animations?
Yes. You can use cubic-bezier values with animation-timing-function or inside the animation shorthand property.
Can I create ease-in and ease-out curves?
Yes. You can create ease-in, ease-out, ease-in-out and fully custom easing curves.
Can I create a bounce-like easing effect?
Yes. Some cubic-bezier curves can use Y values outside the normal range to create overshoot or bounce-like motion.
Can I copy the generated CSS?
Yes. After creating your easing curve, you can copy the generated cubic-bezier() value and use it in your project.
Can I use this with WordPress or Elementor?
Yes. You can copy the generated CSS and use it in WordPress, Elementor, custom CSS fields, blocks, themes or frontend projects.
What is the difference between ease and cubic-bezier?
ease is a built-in CSS timing keyword. cubic-bezier() lets you create a custom timing curve with more control.
Does cubic-bezier affect layout?
No. Cubic-bezier controls the timing of transitions and animations. It does not directly change layout by itself.
What values are used in cubic-bezier?
A cubic-bezier function uses four values: x1, y1, x2 and y2. These define the shape of the easing curve.
Are cubic-bezier animations good for performance?
Cubic-bezier itself is just a timing function. Performance depends more on what properties are being animated. Animating transform and opacity is usually smoother than animating layout-heavy properties.
Explore more CSS tools
Need more CSS utilities? Explore our free design tools to create animations, transforms, transitions, buttons, filters, gradients, shadows, border radius values, grid layouts, flexbox layouts and modern UI motion faster.