HomeLibraryCSS easing curves

CSS easing curves

Copy-ready cubic-bezier easing curves for CSS transitions and animations: the classic sine, quad, cubic, quart and expo families plus back curves with a slight overshoot. Each swatch draws the actual curve, progress runs left to right, value bottom to top. Click a card to copy the timing-function value.

ease
ease
ease
ease-in
ease-in
ease-in
ease-out
ease-out
ease-out
ease-in-out
ease-in-out
ease-in-out
easeInSine
easeInSine
cubic-bezier(0.12, 0, 0.39, 0)
easeOutSine
easeOutSine
cubic-bezier(0.61, 1, 0.88, 1)
easeInOutSine
easeInOutSine
cubic-bezier(0.37, 0, 0.63, 1)
easeInQuad
easeInQuad
cubic-bezier(0.11, 0, 0.5, 0)
easeOutQuad
easeOutQuad
cubic-bezier(0.5, 1, 0.89, 1)
easeInOutQuad
easeInOutQuad
cubic-bezier(0.45, 0, 0.55, 1)
easeInCubic
easeInCubic
cubic-bezier(0.32, 0, 0.67, 0)
easeOutCubic
easeOutCubic
cubic-bezier(0.33, 1, 0.68, 1)
easeInOutCubic
easeInOutCubic
cubic-bezier(0.65, 0, 0.35, 1)
easeInQuart
easeInQuart
cubic-bezier(0.5, 0, 0.75, 0)
easeOutQuart
easeOutQuart
cubic-bezier(0.25, 1, 0.5, 1)
easeInOutQuart
easeInOutQuart
cubic-bezier(0.76, 0, 0.24, 1)
easeInExpo
easeInExpo
cubic-bezier(0.7, 0, 0.84, 0)
easeOutExpo
easeOutExpo
cubic-bezier(0.16, 1, 0.3, 1)
easeInOutExpo
easeInOutExpo
cubic-bezier(0.87, 0, 0.13, 1)
easeInBack
easeInBack
cubic-bezier(0.36, 0, 0.66, -0.56)
easeOutBack
easeOutBack
cubic-bezier(0.34, 1.56, 0.64, 1)
easeInOutBack
easeInOutBack
cubic-bezier(0.68, -0.6, 0.32, 1.6)

FAQ

Where do I put these values?
In the transition-timing-function or animation-timing-function property, or as the third slot of the transition shorthand, for example transition: transform .3s cubic-bezier(0.33, 1, 0.68, 1). The keyword items (ease, ease-in and friends) are built into every browser; the cubic-bezier() ones work everywhere cubic-bezier is supported, which is every modern browser.
How do I read the swatch?
The horizontal axis is time from start to finish, the vertical axis is how far the animated value has moved. A curve that starts shallow and ends steep (ease-in) begins slowly and accelerates; the opposite shape (ease-out) starts fast and settles. The two faint horizontal lines mark 0 and 1, so back curves visibly cross them when they overshoot.
When should I use an out curve versus an in curve?
For UI, ease-out variants are the usual default: interfaces feel responsive when movement starts fast and decelerates into place. Use ease-in variants mostly for elements leaving the screen, and in-out variants for movement that starts and ends on screen, like repositioning a card.
What happens with the negative values in the back curves?
Control points outside the 0 to 1 range make the animated value overshoot its start or end before settling, which reads as a small bounce. That is fine for transforms like translate and scale, but avoid it for properties that clamp, such as opacity, where the overshoot is simply cut off.
Family Site