A little help goes a long way. Find a tool/

Design

CSS Transition Generator

Free CSS transition generator. Pick properties, duration, easing (presets, cubic-bezier or steps) and delay, then copy ready-to-paste transition CSS with a live preview.

YOUR WORKSPACEFree to use. No sign-up.
—
Choose properties and easing, then press Generate transition.

Deep dive guides

A LITTLE CONTEXT · 4 MIN READCSS Transitions Explained: Timing, Easing and Delay

How css transition generator works

The transition property tells the browser to animate a change instead of snapping: transition: opacity 300ms ease-in-out means that whenever opacity changes on that element, the browser interpolates between the old and new value over 300 milliseconds using the ease-in-out curve. The shorthand packs up to four pieces of information per property: which property, how long the change takes, which timing function shapes the speed along the way, and an optional delay before the animation starts.

This generator builds that shorthand for you. Enter one or more properties (comma-separated, or the keyword all for every animatable property), a duration in milliseconds, and an optional delay. For easing you can pick a CSS keyword — linear, ease, ease-in, ease-out, ease-in-out, step-start or step-end — or supply your own cubic-bezier curve with four numbers (the x values must stay between 0 and 1, the y values may overshoot), or use the steps() function for choppy frame-by-frame motion with its jump position.

The output is a complete declaration such as transition: opacity 300ms ease-in-out 100ms; — ready to paste into a stylesheet. When you list several properties, the tool repeats the timing values for each one, because CSS ignores a transition whose duration is missing. Press Preview transition to watch the generated timing curve animate a demo box between two states, which is the fastest way to judge whether an easing feels right.

Frequently asked questions

Which properties can be transitioned?
Only animatable ones — colors, opacity, transforms, lengths and most numeric values. Properties like display or font-family change instantly and cannot be interpolated. When in doubt, use all to cover every animatable property, or list exactly the properties you plan to change.
What is the difference between duration and delay?
Duration is how long the change takes once it starts; delay is how long the browser waits before starting it. A delay of 100ms with duration 300ms means the change begins after 100ms and finishes at 400ms.
How do I write a custom easing curve?
Choose cubic-bezier and enter four numbers: cubic-bezier(x1, y1, x2, y2). The two x values (time axis) must be between 0 and 1; the y values (progress axis) may go outside that range to overshoot, which is how springy, bouncy effects are made. The preset ease is actually cubic-bezier(0.25, 0.1, 0.25, 1).
When should I use steps()?
When you want discrete jumps instead of smooth motion — typewriter text, sprite-sheet animations, tickers. steps(5, jump-end) divides the change into 5 distinct frames. The jump position decides whether the change happens at the start or end of each step.
What is the difference between transition and animation?
Transitions react: they fire when a property value changes, typically via :hover or a class toggle, and they need no keyframes. @keyframes animations run on a schedule independently of state changes and can loop, reverse and hold mid-keyframes. Use transitions for state feedback and animations for choreographed sequences.