CSS Animation works in Chrome 43+, Edge 12+, Firefox 16+, Safari 9+, Opera 30+, and IE 10+. Learn the key properties, how to create one, and known issues.

Prince Dewani
May 1, 2026
CSS Animation is a W3C CSS module that uses the @keyframes at-rule and the animation property to interpolate CSS values over time without JavaScript. It works in Chrome 43+, Edge 12+, Firefox 16+, Safari 9+, Opera 30+, Samsung Internet 4+, and Internet Explorer 10+, with prefixed support reaching back to Chrome 4, Safari 5.1, and Firefox 5.
This guide covers what CSS Animation is, the browsers that support it, the key properties, how to create one, and the known issues.
CSS Animation is a W3C standard, defined in the CSS Animations Module Level 1, that animates CSS property values over time using the @keyframes at-rule. The animation shorthand combines name, duration, timing function, delay, iteration count, direction, fill mode, and play state into one declaration. It runs on the browser's compositor without any JavaScript.
CSS Animation works in every modern Chromium, Gecko, and WebKit browser. Chrome 43, Edge 12, Firefox 16, Safari 9, Opera 30, Samsung Internet 4, and Internet Explorer 10 enable it by default, and older versions supported the feature with the -webkit- or -moz- vendor prefix.
Chrome supports CSS Animation by default from Chrome 43 without any vendor prefix on Windows, macOS, Linux, ChromeOS, and Android. Chrome 4 to 42 supported the feature with the -webkit- prefix on the animation property and on @-webkit-keyframes. The animation engine sits on Chrome's compositor, so transform and opacity keyframes run on the GPU.
Microsoft Edge supports CSS Animation from Edge 12 on Windows, macOS, and Linux with no vendor prefix. The legacy EdgeHTML build and the Chromium-based Edge build both ship unprefixed animation and @keyframes. Any CSS Animation that runs on Chrome runs on Edge with the same syntax.
Firefox supports CSS Animation by default from Firefox 16 without any vendor prefix on Windows, macOS, Linux, and Android. Firefox 5 to 15 supported the feature with the -moz- prefix on the animation property and on @-moz-keyframes. Firefox runs the same Gecko animation engine on every platform.
Safari supports unprefixed CSS Animation from Safari 9 on macOS and from Safari on iOS 9 on iPhone and iPad. Safari 5.1 to 8 supported the feature behind the -webkit- prefix, and Safari 4 to 5 had partial support. WebKit on visionOS, iPadOS, and macOS all share the same animation engine.
Opera supports CSS Animation by default from Opera 12 without any vendor prefix on desktop, and Opera Mobile 12.1 added support on Android. Opera 9 to 11.6 did not support CSS Animation. Modern Opera tracks the Chromium release cadence, so the animation engine matches Chrome's Blink implementation closely.
Samsung Internet supports CSS Animation by default from Samsung Internet 4 on Galaxy phones and tablets. Every release ships unprefixed animation, @keyframes, and the full set of animation sub-properties. The browser shares the underlying Chromium engine with Chrome on Android, so animation behavior matches Chrome's compositor closely.
Chrome for Android supports unprefixed CSS Animation on every release. The legacy Android Browser added partial support from version 2.1 with the -webkit- prefix, and full unprefixed support from version 4. WebView on modern Android inherits the Chromium engine, so apps that embed WebView pick up the animation engine automatically.
Internet Explorer 10 and 11 support CSS Animation without any vendor prefix on Windows. Internet Explorer 5.5 through 9 do not support CSS Animation, because the Trident engine never shipped the @keyframes at-rule or the animation property. Microsoft has retired Internet Explorer; users should switch to Microsoft Edge or another modern browser.
Note: CSS Animation can render differently on Safari, older Android Browser, and Internet Explorer. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
CSS Animation builds on the @keyframes at-rule and a set of animation sub-properties that the animation shorthand combines. Each sub-property controls one axis of the animation, and most pages set them through the shorthand for clarity.
A CSS animation needs a @keyframes rule that lists the steps and an animation declaration on the target element that picks the rule and the timing. The browser does the rest, no JavaScript or library required.
// Feature-detect CSS Animation in any modern browser
const supportsCssAnimation = () => {
const probe = document.createElement("div").style;
return "animation" in probe || "webkitAnimation" in probe;
};
if (supportsCssAnimation()) {
console.log("CSS Animation is available, ready to attach @keyframes rules");
} else {
console.log("CSS Animation is missing, fall back to a static UI state");
}If the console logs the missing branch, the page is on Internet Explorer 9 or older, Opera Mini, or a stale Android Browser, and a non-animated state should ship instead.
CSS Animation has wide cross-browser support, but the small differences in how Chromium, Gecko, and WebKit handle keyframes, transforms, and timing still hit production code. Plan around these before you ship a heavy animation.
All CSS Animation version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance