GPU Accelerated
Click to replay

Free CSS Animation Generator

Over 130 production-ready keyframe animations. Pick a category, tune the settings, choose a trigger mode — then export clean CSS, HTML, React or Tailwind code in one click. No signup, no watermarks, completely free.

How to Use the CSS Animation Generator

01
Choose a CategorySelect from Basic, Entrances, Exits, Text, Attention or Background to filter the animation library.
02
Pick an Animation TypeBrowse the type grid — Scale, Rotate, Flip, Slide, Fade, Bounce and dozens more visual styles.
03
Select a VariantEach type has multiple directional or stylistic variants (e.g. Slide In Left, Slide In Right, Slide In Top).
04
Tune the SettingsAdjust duration, delay, easing curve, iteration count, direction and fill mode in the sidebar controls.
05
Choose a Trigger ModeOn Load, On Hover, On Click, or Scroll Trigger — uses IntersectionObserver with no extra dependencies.
06
Copy Your CodeSwitch between the CSS, HTML, React and Tailwind tabs to get the exact format your project needs.

Export Formats

CSS
CSS
Pure @keyframes block plus the animation class rule — paste directly into any stylesheet or <style> tag.
HTML Snippet
HTML
Self-contained markup with inline <style> and <script> — drop it into any page and it works immediately.
React / JSX
REACT
Inline style object for JSX elements. Works with any React or Next.js component without a separate CSS file.
Tailwind Config
TAILWIND
Ready-to-paste extend.keyframes and extend.animation entries for tailwind.config.js.

Animation Categories

Basic
Core transformations — scale, rotate, flip, swing, slide, shadow and combined effects. The largest library with 130+ variants.
Entrances
Elements that animate in — fade-in, bounce-in, zoom-in, roll-in, light-speed and more. Perfect for page-load and reveal effects.
Exits
Elements that animate out — fade-out, bounce-out, zoom-out, roll-out. Great for modals, toasts and dismissal transitions.
Text
Letter-by-letter, word-by-word, blur-reveal and tracking-expand animations. Designed for headings and hero copy.
Attention
Pulse, shake, wobble, flash, rubber-band and jello loops. Ideal for CTAs, notifications and interactive feedback.
Background
Gradient shifts, color pulses and overlay animations for full-section or hero backgrounds. Zero JavaScript required.

Understanding CSS Animation Properties

animation-duration controls how long one cycle takes — 300ms feels snappy, 800ms feels smooth. animation-delay staggers the start, useful for list reveals. animation-timing-function shapes the speed curve: ease-out feels natural for entrances, ease-in for exits, custom cubic-bezier curves give you spring and bounce. Set animation-iteration-count to a number or infinite for loops. Use animation-direction: alternate to reverse on every other cycle. animation-fill-mode: both is the safest default — it holds start styles during a delay and locks end styles after the animation finishes.

Performance Tiers

The GPU Accelerated badge means the animation uses only transform and opacity — the browser compositor handles these entirely on the GPU with zero layout recalculations. The Paint Layer badge appears for filter and box-shadow animations — they repaint pixels but skip layout. The Layout Triggered badge flags animations that change width, height, top or other box-model properties, which force a full layout pass on every frame. Always prefer GPU-accelerated animations in production.

Frequently Asked Questions

A CSS animation transitions an element between styles over time using @keyframes and the animation shorthand. It runs entirely in the browser without JavaScript, can loop, reverse, pause and resume, and degrades gracefully on older browsers.
Copy the generated CSS output, paste the @keyframes block and the class rule into your stylesheet, then add the class name to your HTML element. For React use the React tab to get a style object. For Tailwind, copy the config snippet into the extend block of your tailwind.config.js.
animation-fill-mode: both applies the first keyframe styles before the animation starts (during any delay) and holds the last keyframe styles after it ends. This prevents the element from snapping back to its original position — it is the most reliable setting for entrance and exit animations.
Tick the Infinite checkbox in the Playback panel. This sets animation-iteration-count: infinite. Combine it with animation-direction: alternate for a smooth ping-pong loop that reverses on each cycle.
Selecting Scroll Trigger generates an IntersectionObserver snippet that adds the animation class only when the element enters the viewport. It is a lightweight, dependency-free alternative to libraries like AOS or ScrollReveal — no extra packages required.
prefers-reduced-motion is a CSS media query that detects whether the user has enabled reduced-motion in their OS settings — common for people with vestibular disorders. When the checkbox is enabled, the generated code wraps animation: none !important inside that query so the element stays static for those users.
Yes. Switch to the React tab for an inline style object you can pass directly to any JSX element. Alternatively add the @keyframes to a global CSS file, a CSS Module, or a styled-component, then apply the class name as normal.
A transition smoothly interpolates between two states when a property changes (e.g. on hover). An animation uses @keyframes to define multiple steps and can play automatically, loop, delay and run without any state-change trigger. Animations are more flexible for complex multi-step motion.
Yes — all animations use standard @keyframes and the animation shorthand supported by every modern browser (Chrome, Firefox, Safari, Edge). No vendor prefixes are required for current browser versions.
Yes — completely free with no sign-up and no watermarks. All generated code is yours to use in personal or commercial projects without attribution.