The animation-delay property sets how long to wait before an animation starts. A positive time waits. 0s starts at once. A negative time starts immediately, partway through the animation.
Not deprecated. One time value has been widely available since 2015. A second time, animation-delay-end, is newer and is not used in these examples.
Syntax
CSS Syntax
syntax.css
animation-delay:0s | 1s | -1s;
Any time with a unit, in seconds or milliseconds. A minus sign starts partway through. For several animations, separate the delays with commas, in the same order as the names.
Share the animation. Both lines use fade for one second.
Start the first line now.animation-delay: 0s is the initial value, so "Now" fades immediately.
Hold the second line.1s keeps "Wait" at full opacity until the first fade has finished.
Same property, different times. Only the delay changes. That is how a stagger is made.
Edge Cases & Pitfalls
If the wait does not behave, the unit or the shorthand is usually why.
unit
A number alone is invalid
animation-delay: 1 is ignored. Write 1s or 1000ms. The unit is required.
wait
The first keyframe waits too
During a positive delay the element keeps its normal style. animation-fill-mode: backwards shows the from keyframe while it waits.
skip
A long negative delay is already over
-2s on a 1s animation, played once, has finished before you see it. Nothing moves.
order
The shorthand can wipe the delay
animation: 1s fade sets this property back to 0s. Write animation-delay after the shorthand, or put the second time inside animation.
list
One delay per animation name
animation-delay: 0s, 1s follows the order of animation-name. Fewer delays than names, and the list repeats. Extra delays are ignored.
Compatibility
Browser Support
animation-delay is a browser style property. Node.js, Deno, and Bun do not play it. The versions below include positive and negative times.
✓ Baseline · Widely available since 2015
animation-delay
Chrome 43+, Firefox 16+, Safari 9+, Edge 12+, Internet Explorer 10+. The optional end delay is newer and is not part of these numbers.
97%one time value
Google Chrome43+
Full support
Mozilla Firefox16+
Full support
Apple Safari9+
Full support
Microsoft Edge12+
Full support
Opera30+
Full support
Samsung Internet4+
Full support
Internet Explorer10+
Full support
animation-delayWidely supported
Bottom line: Older Chrome, Safari, and Firefox also accepted a prefixed property. A negative delay uses the same versions. The optional end delay is newer and is not included here.
Remember
Key Takeaways
Role: how long to wait before the animation starts.
0s: the initial value. The animation starts at once.
Negative: skip ahead. -1s begins one second into the play.
Unit:1s or 500ms. A bare number does nothing.
One line: set a name and a duration, then animation-delay decides when that play begins.
Frequently Asked Questions
It sets how long to wait before an animation starts. A positive time waits. 0s starts at once. A negative time starts immediately, partway through the animation.
The animation begins at once, but ahead in its cycle. animation-delay: -1s on a 2s animation starts halfway through, so only the remaining second plays.
A positive delay does not apply the first keyframe yet. The element keeps its normal style until the wait ends. animation-fill-mode: backwards shows the first keyframe during the delay.
Yes. In animation: 1s 2s fade, the first time is the duration and the second is this delay. Writing the animation shorthand after animation-delay resets the delay to 0s.
Chrome 43+, Firefox 16+, Safari 9+, Edge 12+, and Internet Explorer 10 support it, including negative times. It is a browser style property, not a Node.js feature.