ImageApril 2026 · 8 min read

How to Animate an SVG (2026)

Animating SVGs is one of those design problems that looks like a solved category from the outside but isn't. After Effects exports Lottie, which needs a player library. Figma's Smart Animate stays in Figma. SVGator charges eighteen dollars a month. Hand-writing SMIL requires knowing SMIL, which most designers don't. And most free online animators either gate behind signup, upload your file somewhere, or produce CSS that doesn't stay with the SVG when you paste it into a CMS. This guide covers what SMIL is, why it's the answer for most single-file delivery cases, and the 30-second workflow for animating any SVG without installing anything.

Try the SVG Animator Tool
Add rotate, scale, fade, and draw animations in your browser
DG
Derek Giordano
Designer & Developer
In this guide
01What SMIL Actually Is02SMIL vs. CSS vs. Lottie03When Animating SVGs Makes Sense04The 30-Second Workflow05What Other Tools Cost
⚡ Key Takeaways
  • Animate any SVG without After Effects, Lottie, or a $18/mo SaaS.
  • What SMIL Actually Is.
  • Covers smil vs. css vs. lottie.
  • When Animating SVGs Makes Sense.
  • The 30-Second Workflow.

What SMIL Actually Is

SMIL stands for Synchronized Multimedia Integration Language. It's a W3C animation spec from the late 1990s that was originally designed for multimedia presentations and ended up embedded in the SVG specification. The idea is simple: animation instructions live inside the SVG file itself, as child elements of the shapes they animate.

A static SVG describes a shape — a circle at coordinates (120, 120) with radius 50 and fill #00FFD1. A SMIL-animated SVG describes the same shape, plus an instruction like “animateTransform” that lives as a child of the circle and says “rotate from 0 to 360 degrees over 2 seconds, repeat forever.” The animation is structurally part of the SVG, serialized in the same file, transmitted in the same payload. Open the file in a browser and it plays. Save the file to disk, email it, re-upload it somewhere, drop it into an img tag — it still plays.

SMIL went through a complicated period around 2015 when Chrome threatened to deprecate it in favor of Web Animations API. That deprecation was reversed — Chrome still supports SMIL fully, as do Firefox, Safari (desktop and iOS), and Edge. SMIL is a stable, cross-browser feature in 2026, and the self-contained-file property makes it uniquely useful for SVG delivery where you can't guarantee the consumer will also load a stylesheet or JavaScript runtime.

SMIL vs. CSS vs. Lottie

There are three practical ways to animate an SVG, and they solve different problems.

💡 Tip
Always include -webkit-backdrop-filter alongside backdrop-filter for Safari support. Without the prefix, the effect is invisible to roughly 25% of mobile users.

CSS animation is the most familiar. You write @keyframes rules in a stylesheet, target SVG elements by selector, and the browser animates them. This works cleanly for SVGs inlined into your HTML (as child elements of the DOM, they participate in CSS). It does not work for SVGs loaded as images via img tag — browsers sandbox image SVGs and don't apply external CSS to them. It also means the animation is a separate concern from the file: if you export your SVG to send to someone, the CSS doesn't go with it. For websites you control end-to-end, CSS animation is often the right choice. For SVGs you hand off as files, it isn't.

Lottie is a JSON-based animation format that Airbnb open-sourced from their internal After Effects pipeline. Designers animate in After Effects, export to Lottie JSON via the Bodymovin plugin, and the JSON plays in apps via the lottie-web runtime (or native iOS/Android/React Native runtimes). Lottie is powerful — it supports more animation complexity than SMIL — but it requires that wherever you play the animation, the lottie-web library is also loaded. For marketing landing pages that's fine. For a standalone SVG icon someone drops into a CMS, it's overkill and often impossible.

SMIL is the self-contained option. The animation lives inside the SVG, no external dependencies, no runtime library, no stylesheet. The tradeoff is that SMIL is less expressive than Lottie and requires knowing its slightly-awkward XML syntax if you're hand-writing it. Tools that generate SMIL (like the UDT SVG Animator) paper over the syntax problem and leave you with the file's portability advantage.

The practical picking heuristic: if you control the host page, CSS animation is often simplest. If you need complex After Effects-quality animation and can ship a runtime library, use Lottie. If you need a single file that just works when pasted anywhere, SMIL is the answer.

When Animating SVGs Makes Sense

Loading states and spinners. A custom-designed spinner embedded as a single SVG file weighs under a kilobyte and plays without touching your CSS bundle. This is the canonical use case — tiny file, infinite loop, drop-in ready.

⚠ Warning
On iOS Safari, backdrop-filter inside a position: fixed element can cause severe scroll performance issues. Test thoroughly on real iOS devices.

Icon microinteractions. A menu icon that morphs to an X on open; a checkbox that fills in with a tick when checked; a heart that bounces when favorited. These are typically triggered by state changes, which means you want CSS or JavaScript control — SMIL is less ideal here. But for always-on animations (a subtle hover on a logo, a periodic attention-grab on a call-to-action), SMIL works and keeps the icon as a single file.

Email signatures and documentation. Animated SVGs in email signatures work in many modern clients (Gmail web, Apple Mail, Outlook 365 desktop) and gracefully degrade to the static first frame in others. For product documentation — showing how a UI element moves, what a gesture looks like — SMIL-animated SVGs embed in documentation sites, GitBook, Notion, and most CMSes without needing a custom player.

Illustrated hero sections. Big decorative illustrations with subtle motion — a shape rotating slowly, lines drawing themselves on scroll-into-view, elements fading in staggered. SMIL handles all of this and stays in the file, so you can hand the asset to a developer with one URL instead of a zip of SVG + CSS + instructions.

Where SMIL falls down: GitHub strips SMIL from SVGs rendered in markdown (workaround: host on GitHub Pages and use img tag). Some corporate email clients sanitize it. If you need the animation to render in a PDF or a presentation, convert to GIF or MP4 as a final step. For everything else web-shaped, SMIL is production-ready.

The 30-Second Workflow

Step 1 — Start with a static SVG. Export from Figma (File → Export → SVG), Illustrator, Inkscape, or hand-code it. The simpler the file, the better — fewer nested groups, clearly-named elements, no embedded bitmap images. If you don't have one ready, the UDT SVG Animator includes a sample SVG you can experiment with.

Step 2 — Paste or drop the SVG into the animator. The tool parses the markup, finds every animatable element (shapes, groups, text), assigns stable IDs where missing, and lists them in the left panel. Elements are listed in document order, so the top of the list is the first element drawn (typically the background); the bottom is the topmost layer.

Step 3 — Select an element and add animations. Click an element in the list. The right panel unlocks six animation types — rotate, scale, translate, fade, color, and draw. Click any of them to add an animation to that element. You can stack multiple animations on one element (rotate + fade, for example, to fade in while spinning), and different elements can run different animations simultaneously or with staggered delays.

Step 4 — Tune timing per animation. Each animation has four universal controls: duration (how long one cycle takes), delay (wait before starting), repeat (fixed count or infinite), and easing (linear, ease-in, ease-out, ease-in-out, or spring). Type-specific controls appear below — from/to degrees for rotate, from/to scale factor for scale, X and Y offsets for translate, color pickers for color animations. The preview updates live; the timeline view at the bottom shows when each animation plays relative to the others.

Step 5 — Export or copy. When the preview matches what you want, click Download SVG to save a single .svg file that plays anywhere, or Copy to clipboard the full SVG markup to paste directly into HTML, Markdown, or a CMS. The exported SVG is self-contained — you can email it, commit it to Git, upload it to a shared drive, or drop it into a Figma design system, and the animation travels with the file.

What Other Tools Cost

SVGator is the closest direct competitor. It's a dedicated SVG animation editor with a proper timeline UI, keyframe editing, and export to SMIL or CSS. The catch: the free tier is limited to 2 objects and 3 animators (effectively toy projects); the Full Animation plan runs about $18/month for a single editor, with team tiers at $36/month. For professional animation work, SVGator is a real tool; for adding a rotate to a loading spinner, it's overkill and expensive.

Adobe After Effects + Bodymovin is the industry-standard workflow for complex animation, but it outputs Lottie JSON, not SMIL. After Effects itself costs $22.99/month (or $59.99/month as part of Creative Cloud All Apps), and the output requires the lottie-web runtime wherever it plays. Excellent for narrative animation and high-fidelity motion design; wrong tool for a self-contained icon.

Keyshape and Animatron are smaller competitors in the SVG animation space. Keyshape is Mac-only and runs about $50 one-time; Animatron has a freemium model with watermarks on free exports. Both produce good output but have learning curves and platform constraints.

Hand-writing SMIL is genuinely free if you know the syntax. The MDN documentation on animateTransform, keySplines, and additive transforms is thorough. The problem is that SMIL's XML attribute-based syntax is unintuitive — rotation requires a transform type attribute plus from/to values that include the rotation center coordinates; easing requires calcMode, keyTimes, and keySplines values; draw animation requires computing the path length and using stroke-dasharray/stroke-dashoffset. Experienced SVG developers can hand-write this; most designers and front-end developers won't.

Our tool runs the animation layer entirely in your browser. Nothing is uploaded, the exported SVG is standard SMIL that works in Chrome, Firefox, Safari, and Edge without any runtime, and the UI papers over the SMIL syntax so you can focus on timing and choreography rather than XML attributes.

Frequently Asked Questions

What is SMIL and why does this tool use it?+
SMIL (Synchronized Multimedia Integration Language) is an animation standard that lives inside the SVG file itself — animations are declared as XML elements like animateTransform alongside the shapes they animate. The advantage is portability: a SMIL-animated SVG is a single self-contained file. Drop it into a webpage, email it, upload it to a CMS, or open it directly in a browser and the animation plays without any external CSS or JavaScript. CSS-keyframe animation of SVGs works too, but requires pairing the SVG with a separate stylesheet, which gets stripped by many platforms.
Where do SMIL-animated SVGs actually work?+
All modern browsers (Chrome, Edge, Firefox, Safari including iOS Safari) support SMIL natively. That covers about 96% of web traffic. Notable gaps: GitHub strips SMIL from SVGs uploaded as images in markdown (you can embed via iframe or img tag on a GitHub Pages site instead), and some corporate email clients that render HTML email with aggressive sanitization drop SMIL elements. For presentations and PDFs, convert the animated SVG to GIF or video. For general web use — websites, apps, documentation sites, design portfolios — SMIL works out of the box.
Is my SVG uploaded to a server?+
No. The entire tool runs in your browser. Parsing your SVG uses the browser's built-in DOMParser, animation preview uses the browser's native SMIL engine, and export serializes the animated DOM back to an SVG string which downloads locally. Nothing is transmitted anywhere. You can verify this by opening your browser's DevTools Network tab while using the tool — zero requests leave your machine during animation, preview, or export.
How is this different from CSS animation or Lottie?+
CSS animation animates SVGs from the outside — you write a separate stylesheet that targets SVG elements by class or ID, and the animation lives in CSS, not in the SVG. That works for websites you control, but the SVG isn't self-contained. Lottie is a JSON-based animation format optimized for After Effects workflows; it needs the lottie-web player library on any page that displays it. SMIL, the format we export, embeds animation inside the SVG as part of the file. No external CSS, no JavaScript runtime, no companion libraries. It's the most portable of the three for single-file delivery.
Can I import animations I made in Figma or After Effects?+
Not directly — Figma and After Effects export to their own formats (Figma Smart Animate stays in Figma; After Effects typically exports Lottie JSON or video). What you can do is export static SVG from Figma (File → Export → SVG), then paste it here and add animations. Our tool starts with a static SVG and produces an animated SVG. If you have existing Lottie animations you want to reuse, Lottie-to-SVG conversion is a separate step; once you have the static SVG, our tool handles the animation layer.
Will the animation loop forever?+
Your choice per animation. Each animation has a Repeat setting — you can set a fixed number of iterations (1, 2, 3, etc.) or set it to Infinite to loop indefinitely. You can also give different animations on the same element different repeat counts, which is how complex choreographed animations work (one element might fade in once and then rotate forever). Use the Preview to confirm the behavior matches what you want before exporting.
Try it yourself

Animate any SVG in your browser — no signup, no upload, no watermark

⚡ Open SVG Animator
DG
Derek Giordano
Written by the creator of Ultimate Design Tools. BA in Business Marketing.
📚 References & Further Reading
⚡ Try the free Image to SVG Converter →
⚡ Try the free Audio Waveform Generator →