A workflow for JSON-based animations: a library, an editor, optimisation and players for web and mobile, built around the Lottie format.
Build me the animation pipeline I actually need instead of paying for LottieFiles: optimise, host, preview and play JSON animations, on my own infrastructure. Read this first: the format and the players are open, and the honest thing you are giving up is the marketplace — thousands of ready-made animations for people who do not animate. If that is why you pay, keep paying, or buy them individually. What is entirely replaceable is the hosting, the optimisation and the preview workflow. STACK - Node 20+ with Fastify, server-rendered HTML - SQLite through better-sqlite3, WAL mode - lottie-web or the dotLottie player for rendering; do not write a renderer - puppeteer only for generating preview images and video, on a worker - Caddy in front THE DATA MODEL - animations: id, uid, name, folder_id, source_json_path, optimised_json_path, dotlottie_path, width, height, frame_rate, in_point, out_point, duration_ms, bytes_source, bytes_optimised, features_json, created_by, created_at - versions: id, animation_id, version, json_path, bytes, note, at — an animation embedded in a shipped app must never change under it - previews: id, animation_id, kind, path, width, bytes — a still, a GIF, an MP4, a WebP - themes: id, animation_id, name, colour_map_json — the same animation in your brand colours - usages: id, animation_id, path, referrer_host, at — where each one is actually used - tags, folders, and FTS over names and tags OPTIMISATION, WHICH IS THE REAL WORK - Round every numeric value to a sensible precision. Exported files routinely carry twelve decimal places on every keyframe, and cutting to three is often half the file with no visible difference - Remove hidden layers, empty groups, unused assets and expressions that resolve to constants - Deduplicate identical shapes and image assets by hash - Convert embedded base64 images to referenced files, or downscale them — an embedded PNG is usually most of the weight - Detect and report what cannot be optimised: expressions, merge paths, auto-orient, time remapping. Each of these is also a rendering risk, and the report is more valuable than the saving - Always show source and optimised side by side, playing, at the same size. Optimisation you have not looked at is optimisation you have not verified - Report the saving honestly: bytes before, bytes after, and gzipped, because that is what the network actually carries COMPATIBILITY, WHICH IS WHERE THIS BITES - The web player, the iOS player and the Android player do not support the same feature set. An animation that looks perfect in a browser can render blank on a phone - Scan every uploaded file for the features that differ — expressions, mattes, merge paths, gradients on strokes, effects — and flag them per platform with a plain warning - That check is the single most useful thing this tool can do, and it is the thing designers find out about after shipping DELIVERY - Serve the JSON gzipped or brotli-compressed with immutable cache headers and a content hash in the URL - dotLottie output, which is a zip of the animation plus its assets and is dramatically smaller over the wire - A tiny embed snippet, and a web component wrapping the player with sensible defaults: lazy, respecting `prefers-reduced-motion`, and pausing when off-screen - Respecting reduced motion is not optional. Some people get genuinely unwell from motion, and an animation that ignores the setting is doing that to them PREVIEW AND HANDOFF - A player page per animation with a scrubber, speed control, loop settings, a background colour switcher and a size slider - Renders as still, GIF, MP4 and animated WebP, generated by a worker — for the places a JSON animation cannot go, like an email or a marketplace listing - A theme: map the colours in the file to your palette and store the result as a variant, so one animation serves a light and a dark interface - A shareable read-only link per animation for review, with comments THE LIBRARY - Folders, tags, search over names and tags - Usage tracking, so an animation nobody references can be deleted with confidence - Versions, with the shipped version pinned and never overwritten OPERATIONS - .env: DATABASE_PATH, STORAGE_PATH, BASE_URL, SESSION_SECRET, MAX_UPLOAD_BYTES - Migrations on boot, each once - The render worker is CPU-heavy and needs a concurrency cap - Nightly backup of the database and the source files; optimised outputs are regenerable - Health endpoint that optimises a small fixture WHAT MATTERS MOST The optimiser and the compatibility scan. Build precision rounding with a side-by-side preview first, then the per-platform feature warnings. Those two together are worth more than the hosting, and they are what stops an animation shipping blank on half your users' phones. Give me the repository, the optimiser, the web component, migrations, .env.example, and a README with deploy steps behind Caddy and the platform feature table.
What you lose
- A marketplace of ready-made animations, which is where most of the value is for people who do not animate
- Optimisation that cuts file size without visible loss
- Plugins for the design tools animators actually use
If you would rather not build
- A CSS or SVG animation, which is often lighter
What it costs
as published on their pricing page
| Plan | Billed monthly | Billed yearly | Last read |
|---|---|---|---|
| — | $19/mo | — | — |
Their pricing page is where these came from. Seeing a different price? Tell us.
The escape hatch
open source · no votes, no paid placement
lottie-web
$0The reference player for Lottie animations in a browser.
airbnb/lottie-webfree · open source
dotLottie
$0A compressed Lottie container with a smaller, faster player.
LottieFiles/dotlottie-webfree · open source
Why this verdict
our own opinion · changed only by a person
82/100
Verdict yes at 82. Lottie is a JSON file and a free player. The library of ready-made animations is the only thing worth paying for.
History
tracked since 10 Aug 2026 · nothing is ever overwritten
Questions about LottieFiles
answered from the record above
Is LottieFiles free?
No — the plan we track is $19 a month. Pro from around $19 per editor per month billed monthly, cheaper annually.
Can you replace LottieFiles by building your own?
YES. Replaceable in one session with an AI coding agent. Replacement score 82 out of 100, build time one session. Read what you lose before you decide.
How much does LottieFiles cost?
$19 a month on Pro — $228 a year. Recorded 10 Aug 2026.
What do you lose by replacing LottieFiles?
A marketplace of ready-made animations, which is where most of the value is for people who do not animate; Optimisation that cuts file size without visible loss; Plugins for the design tools animators actually use. If any of those carry weight for you, keep paying.
Is there an open-source alternative to LottieFiles?
Yes: lottie-web, dotLottie. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

