Lint a Lottie file for size, expressions, embedded images and features that break on mobile players
Lottie JSON lintFreeFor developers and designers
25/day
free runs a day, no sign-in.
Before: what you give it
The example input, as typed in. You give it structured JSON.
{"v":"5.7.0","fr":60,"ip":0,"op":180,"w":1920,"h":1080,"layers":[{"ty":4,"nm":"dot","ks":{"p":{"a":0,"k":[100,100],"x":"wiggle(3,20)"}},"shapes":[]},{"ty":2,"refId":"img_0"}],"assets":[{"id":"img_0","p":"data:image/png;base64,AAAA"}]}
After: what comes back
The first lines of a real run on that input. Nothing here is edited by hand.
Lottie: 0.2 KB, 1920x1080, 60 fps, 3 s, 2 layers, 1 expressions. - [high] 1 expression(s) found (e.g. "wiggle(3,20)"). Many native players (and lottie-web in safe mode) do not run After Effects expressions, so they render wrong or static. Fix: Bake expressions to keyframes before export. - [medium] 1 embedded base64 image(s), about 0 KB of the file (base64 adds roughly a third over the binary). Fix: Use vectors, or link external images, or switch to video for photographic motion. - [low] Frame rate 60: 60 doubles keyframe data against 30 for little gain on simple UI motion. Limits: reads structure only; it cannot render the animation, test player support, or see what a given player does with unusual features. Size thresholds are our conventions. dotLottie archives are not read.
What you get
File size, canvas, frame rate and duration, plus findings with severity and a fix for each
What it cannot do
Reads Lottie JSON only; dotLottie (.lottie zip) files are not supported, and size thresholds are conventions.
Who it is for
- Developers
- Designers
Free and Pro
| Free | 25 runs a day per IP address, up to 400,000 characters a run. |
|---|---|
| Pro | No daily limit, 300 requests a minute, up to 200,000 characters a run. |
Use it from your assistant
The tool is called lint_lottie_json. Connect the server once, then ask for it by name or just describe the job. Install steps for each app.
claude mcp add --transport http designers https://designers.allthepossibles.com/mcp
curl -X POST https://designers.allthepossibles.com/api/lottie-json-lint -H 'content-type: application/json' -d '{"json":"{\"v\":\"5.7.0\",\"fr\":60,\"ip\":0,\"op\":180,\"w\":1920,\"h\":1080,\"layers\":[{\"ty\":4,\"nm\":\"dot\",\"ks\":{\"p\":{\"a\":0,\"k\":[100,100],\"x\":\"wiggle(3,20)\"}},\"shapes\":[]},{\"ty\":2,\"refId\":\"img_0\"}],\"assets\":[{\"id\":\"img_0\",\"p\":\"data:image/png;base64,AAAA\"}]}"}'
Try it here
The form starts with the same example input, so you can run it first and then swap in your own.
More in motion
- Motion check
Find autoplay, endless loops, possible flashing and long transitions, and get reduced-motion CSS to paste.
- Easing designer
Turn an easing name, cubic-bezier or spring into CSS timing functions with sampled progress and feel notes
- Duration scale
Pick an animation duration from distance, size and complexity, and get an enter and exit pair
- Motion CSS audit
Find animations in your CSS that force layout, ignore reduced motion or run forever without a pause
- Stagger planner
Plan staggered reveal delays for a list so the whole sequence fits a time budget
- Animation principles review
Review a described animation against the twelve animation principles and get a question for each one