Pack a Lottie JSON into a .lottie file: images become real files, the JSON is zipped, and the result is usually less than half the size. Runs in your browser.
Drop a Lottie .json or .lottie file
If the JSON uses external images, drop it together with its image files. Files are processed on your device and never uploaded.
Starting…
0%
smaller
Compare
0
OriginalCompressed
Images
Compatibility
Why dotLottie is smaller
Lottie JSON stores each image as a base64 string, and base64 turns every 3 bytes into 4. A 3 MB set of images becomes 4 MB of text. Gzip on your server can't undo that, because image data is already compressed. dotLottie stores images as files in a ZIP, so that overhead is gone. The animation data, which is repetitive text, is deflated as well.
What goes into the file
manifest.json lists the animations with their loop, autoplay and speed settings (dotLottie v1, the most widely supported version).
animations/<id>.json holds each animation, minified.
images/ holds each image once, even when several animations use it.
When to keep JSON instead
Keep JSON when your player is plain lottie-web, when a CMS only accepts .json, or when you post-process the animation with scripts. You can still shrink it with the Lottie Compressor.
Questions
What is a .lottie file?
dotLottie is a ZIP archive with a manifest, one or more Lottie JSON animations, and their images as separate files. It holds the same animation as a JSON file, packed more efficiently.
How much smaller is dotLottie than JSON?
Usually 40–80%, and more when images are compressed too. Images are stored as raw files rather than base64, which removes a 33% overhead, and the JSON is deflate-compressed.
Which players support .lottie?
lottie-android, lottie-ios (via DotLottie), lottie-react-native, the dotLottie web player and the LottieFiles players. lottie-web does not read .lottie directly; use @lottiefiles/dotlottie-web there.
Does converting change the animation?
No. The animation JSON is the same. Images are only re-encoded if you leave Smart mode on, and only when they stay visually identical. Choose Lossless to keep every pixel.
Is it faster to load in React Native?
Often, yes. A large JSON passed through the JavaScript bundle has to cross to native code, while a .lottie file is loaded and parsed on the native side.
Can I convert .lottie back to JSON?
Yes. Drop the .lottie file into the Lottie Compressor and choose Lottie JSON as the output. The images are embedded back into the JSON.