Skip to content
TypeParser
All tools

Cubic Bezier

Visual cubic-bezier easing curve editor.

beats cubic-bezier.com edge: Live animation preview
control points
P1 X 0.42
P1 Y 0
P2 X 0.58
P2 Y 1
presets
Guide

About Cubic Bezier

Drag the two control points of a cubic Bezier curve to design custom CSS easing. A sample animates beside the curve so you see the motion the curve produces. Copy as <code>cubic-bezier(x1, y1, x2, y2)</code> — drop into any <code>transition-timing-function</code> or <code>animation-timing-function</code>.

Why custom easing matters

Default easing is fine for 90% of UI. The 10% where it matters — your motion is the brand. Linear’s animations feel different from Vercel’s, which feel different from Notion’s. The curves are the difference.

Recipes for common feelings

FeelCurve
Quick acknowledgmentcubic-bezier(0, 0, 0.2, 1)
Smooth landingcubic-bezier(0.16, 1, 0.3, 1)
Material standardcubic-bezier(0.4, 0, 0.2, 1)
Bouncy entrycubic-bezier(0.34, 1.56, 0.64, 1)
Decisive snapcubic-bezier(0.5, 0, 0.75, 0)

Each gives a different perceived motion, even at the same duration. Try them all in the live preview.

Common workflows

Define motion tokens. Pick 3-5 curves for a design system — a “fast”, “medium”, “decisive”. Use everywhere; consistency is what makes motion feel intentional.

Match a video reference. Designer hands you a video. Tweak the curve until it lines up. Save the values to the design system.

Tune a hero animation. Long animations suffer from default easing — too linear. A custom cubic-bezier gives the deliberate feel that hero sections need.

Limits of cubic-bezier

Cubic-bezier is two control points. For motion that needs more shape (multi-step, oscillation, spring physics), reach for linear() (CSS Easing Level 2, modern browsers), or animation libraries (GSAP, Framer Motion) for true spring math. Cubic-bezier is the simplest tool that handles most cases — start here.

Frequently asked questions

When do I use a custom curve?
ease, ease-in, ease-out, ease-in-out are good defaults. Custom curves shine when the animation is the brand voice — Linear's energetic ease, iOS's spring-like motion, Material's decelerated standard.
How do I read a curve?
Time runs left to right; progress runs bottom to top. A straight diagonal is linear. A curve that bows above is faster-then-slower (ease-out style). Bowing below is slower-then-faster (ease-in style).
Common preset values?
ease-in = cubic-bezier(0.42, 0, 1, 1); ease-out = cubic-bezier(0, 0, 0.58, 1); ease-in-out = cubic-bezier(0.42, 0, 0.58, 1). Bezier is a generalization that lets you pick any curve.
Can curves overshoot?
Yes. Y-values outside [0, 1] make the animation overshoot the endpoints — useful for bouncy or spring-like effects. Keep Y in [-0.5, 1.5] for natural-feeling overshoot.
Tailwind support?
Tailwind includes preset eases (ease-in, ease-out, ease-linear). Custom curves go via the arbitrary value ease-[cubic-bezier(...)].
How long should the animation be?
150-300ms for UI feedback, 400-600ms for layout transitions, longer for hero/decorative motion. The curve shapes how the time feels — duration shapes how much time feels.

Related tools

Last updated: 2025-01-15