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
easeease-in
ease-inease-out
ease-outease-in-out
ease-in-outeaseInSine
cubic-bezier(0.12, 0, 0.39, 0)easeOutSine
cubic-bezier(0.61, 1, 0.88, 1)easeInOutSine
cubic-bezier(0.37, 0, 0.63, 1)easeInQuad
cubic-bezier(0.11, 0, 0.5, 0)easeOutQuad
cubic-bezier(0.5, 1, 0.89, 1)easeInOutQuad
cubic-bezier(0.45, 0, 0.55, 1)easeInCubic
cubic-bezier(0.32, 0, 0.67, 0)easeOutCubic
cubic-bezier(0.33, 1, 0.68, 1)easeInOutCubic
cubic-bezier(0.65, 0, 0.35, 1)easeInQuart
cubic-bezier(0.5, 0, 0.75, 0)easeOutQuart
cubic-bezier(0.25, 1, 0.5, 1)easeInOutQuart
cubic-bezier(0.76, 0, 0.24, 1)easeInExpo
cubic-bezier(0.7, 0, 0.84, 0)easeOutExpo
cubic-bezier(0.16, 1, 0.3, 1)easeInOutExpo
cubic-bezier(0.87, 0, 0.13, 1)easeInBack
cubic-bezier(0.36, 0, 0.66, -0.56)easeOutBack
cubic-bezier(0.34, 1.56, 0.64, 1)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.