Skip to content
Lesson 4 of 667% of the course

CSS easing curves explained, with springs and bounces

What an easing curve does, which one to use when, and how to shape your own in Motion Studio's easing editor, from ease out and cubic-bezier to springs and bounces written as CSS linear().

Nothing loads from YouTube until you press play. Then Google receives your IP address and may set its own storage. Narrated with an AI-generated voice. Privacy

Two motions with the same duration can feel completely different. One feels mechanical, the other natural. The difference is easing: how the speed changes along the way. This lesson explains easing in plain terms and shows how to choose and shape it.

What an easing curve is

An easing curve maps time to progress. The horizontal axis is time, from start to end; the vertical axis is how far the motion has got. A straight diagonal line is linear: the same speed all the way. A curve that rises steeply then flattens is ease out: fast at first, then a soft landing.

Real objects rarely move at a constant speed. They speed up, slow down, overshoot. Easing is how CSS imitates that.

Open the easing editor

Open a motion that has an Easing setting, such as most entrances. Press the small curve next to Easing. A panel opens with:

  • The curve, with two handles you can drag
  • A dot that runs the curve, so you see the speed, not only the shape
  • The presets, 14 of them
  • The text box, with the CSS timing function, which you can also type into
Spring: a real spring sampled into CSS linear().

The presets and when to use them

PresetFeels likeUse it for
LinearThe same speed all the waySpinners, scrolling backgrounds
EaseQuick start, soft landingThe browser default; fine for most
Ease inStarts slow, leaves fastThings going away
Ease outStarts fast, lands softlyThings arriving
Ease in-outSlow at both endsMoving from one place to another
SmoothA stronger in-outCalm, deliberate moves
Expo outShoots in and glides to a stopModern UI: menus, panels, toasts
SnappyQuick and decidedSmall UI changes: toggles, tabs
Back outOvershoots a little, then settlesPlayful arrivals
Back in-outPulls back, overshoots, settlesEmphasis
AnticipateWinds up backwards before it goesCartoon energy, a launch
SpringOvershoots and wobbles to restElements that should feel physical
WobblyA looser springFun, informal interfaces
BounceDrops and bounces like a ballA landing, a drop-in

The rule of thumb: ease out for things arriving, ease in for things leaving, ease in-out for things moving across. Linear only for things that never stop, like a spinner.

Shape your own

Drag either handle. The text box shows the new cubic-bezier(x1, y1, x2, y2) and the dot runs it at once. Pull a handle above the top of the box and the motion overshoots; below the bottom and it pulls back first.

You can also paste any timing function into the text box, such as one from a design spec, and see it drawn.

Springs and bounces: CSS linear()

A cubic-bezier has only two handles, so it can overshoot once but cannot wobble or bounce. Spring, Wobbly and Bounce are written with CSS linear(), a list of points that traces any curve:

animation-timing-function: linear(0, 0.25 8%, 1.1 30%, 0.98 55%, 1);

Motion Studio samples a real spring or a real bounce into those points, so you get physical motion in plain CSS. linear() works in all current browsers.

Check it slowly

Set the stage speed to 0.25× (lesson 3) and watch the dot and the motion together. Easing that feels "off" at full speed is usually obvious at a quarter: a stop that is too abrupt, an overshoot that is too big.

Next: taking the motion into your code.

Your progress stays in this browser only.
Contact