Free · no sign-up · nothing leaves your browser
CSS Easing Workbench
Drag the Bézier handles or dial in spring physics, watch the card move, then copy a paste-ready cubic-bezier() or linear() timing function — duration and delay included.
Curve editor
Handles are draggable in Bézier mode; bounce drives the curve in spring mode.
Timing
The coil compresses as the bounce rises. Spring mode only.
Live preview
Click the stage to replay. Editing any control replays it too.
CSS output
paste into your stylesheetlinear() needs Chrome 113+, Safari 17.2+ or Firefox 112+.
How it works
Spring mode solves a damped oscillator from the bounce slider. Bézier mode hands you two control points to drag.
Duration, delay and curve all feed the moving card, so you feel the change instead of guessing at numbers.
You get a ready transition plus the bare animation-timing-function, with every value already clamped and formatted.
Preset cheat sheet
What each built-in keyword really expands to — pick one in the editor and drag from there.
Constant speed.
The browser default.
Slow start, hard finish.
Fast start, soft landing.
Symmetric acceleration.
Winds up backwards first.
FAQ
Why does spring mode export linear() and not cubic-bezier()?
A cubic-bezier() can only describe one smooth bump, and a fixed-duration spring starts far faster than any single bump allows. The workbench samples the real spring maths into 40 evenly spaced stops, which linear() interpolates exactly.
Can a cubic-bezier overshoot?
Yes — y1 and y2 may sit outside 0–1, which is how anticipate-style wind-ups work. Only x1 and x2 must stay within 0–1, and the editor clamps them for you.
What happens to blank or silly numbers?
Duration is clamped to 50–5000 ms and delay to 0–2000 ms, rounded to whole milliseconds. Empty or negative fields fall back instead of emitting broken CSS, and the field snaps to the clamped value when you leave it.
Is anything uploaded?
No. The spring integration, curve solving and code formatting run entirely in this page — there is no server round-trip and no account.