Free tool

Stagger animation calculator

Choose how many elements enter, the delay between them and how long each one takes. See when every element starts and ends, watch it play, and copy standalone HTML and CSS with one animation-delay per element. No account needed.

Whole number, 1–50.
Whole number, 0–500 ms.
Whole number, 50–3000 ms.

Order: first to last.

Total: 800 ms

total = duration + (count − 1) × delay = 400 ms + (6 − 1) × 80 ms = 800 ms

Preview

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6

Timeline

ElementStartsEndsBar
10 ms400 ms
280 ms480 ms
3160 ms560 ms
4240 ms640 ms
5320 ms720 ms
6400 ms800 ms

Copy the HTML and CSS

Standalone: paste it into a page, or save it as an .html file and open it. It fades each block in while it rises 24px, with one animation-delay per element.

Made with the ramin stagger animation calculator.

Try the same delay on text

Opens the studio on a new, unsaved project with its starter headline, “MOTION, STRUCTURED”, entering from below letter by letter, 80 ms apart. It is a text example: the headline has its own number of letters and the studio picks its own entrance duration, so only the delay carries over. Every value stays editable. No account needed.

Animate text in ramin

Delay versus duration

Duration is how long one element's own entrance lasts. Delay is the gap between one element starting and the next one starting. When the delay is shorter than the duration the entrances overlap, which reads as one wave; when it is as long or longer, each element finishes before the next begins, which reads as a list being counted out. A delay of 0 ms makes everything enter together.

Elements play first to last, so element n starts at (n − 1) × delay and ends at (n − 1) × delay + duration. The last element finishes the sequence:

total = duration + (count − 1) × delay

The calculator accepts 1–50 elements, a delay of 0–500 ms and a duration of 50–3000 ms, in whole numbers.

Worked example

6 list items, 80 ms apart, each entering over 400 ms. The first starts at 0 ms, the last at 400 ms, and the sequence ends at 400 + (6 − 1) × 80 = 800 ms.

In CSS that is the same animation on every item, with animation-delay set to 0ms, 80ms, 160ms, 240ms, 320ms, 400ms, and animation-fill-mode: both so each item stays hidden until its turn and visible once it has arrived.

Stagger text, not just blocks

ramin staggers per character, word or line on any property, and writes it as ordinary keyframes you can edit. See the kinetic typography recipes for letter-by-letter entrances, or pick a curve in the easing reference to change how each element moves. For a physical settle, tune one in the spring animation playground. Given the timing in frames? Convert it with the frames to seconds and milliseconds calculator.