lottie-mini

Compress image-sequence Lottie files — right in your browser.

🗜️
Drop your Lottie JSON here
or click to browse
No upload · no size limit · 100% local

Frequently asked questions

Is my file uploaded anywhere?

No. The compressor, preview tool, and inspector all run entirely in your browser. There is no server-side processing — once the page loads, you can disconnect from the network and everything still works. Your animation never leaves your device.

What's the size limit?

There is no hard limit imposed by the tool itself. The practical ceiling depends on your browser's memory: most modern machines handle 100–200 MB Lottie files comfortably, and we've seen successful runs on files over 500 MB. The compression pipeline streams frame-by-frame rather than holding everything in memory at once.

Will the compressed file play in lottie-web, lottie-react, or LottieFiles?

Yes. The compressor produces standard Lottie JSON (or dotLottie zip) output. Every modern player — lottie-web, lottie-react, lottie-react-native, Rive's Lottie player, Bodymovin-native iOS/Android — accepts the output without configuration changes.

What's the difference between the four presets?

Quality first uses all frames at WebP quality 75 — best fidelity, typical 3% of original size. Balanced (the default) keeps every other frame at quality 75 — typical 1.5%. Smallest keeps every other frame at quality 70 and resizes to 600px wide — typical 1%. Lossless uses WebP lossless encoding with no frame skipping — typical 50–70%, useful for files that need pixel-perfect playback.

Why isn't my Lottie file shrinking much?

If embedded image assets are less than 20% of the file, the compressor has nothing to work with. Use the Inspector to see the byte breakdown. Pure-vector Lottie files are already optimally small.

Does it support dotLottie (.lottie) files?

Yes. The compressor, preview, and inspector all accept both .json and .lottie input. When you input a .lottie file, you can download the compressed result as .lottie too, preserving the original manifest and any non-animation entries.

Is there a CLI or a way to batch process many files?

The same compression logic is packaged as a Python + PyQt6 desktop GUI in the open-source repository. It supports batch processing and runs entirely offline. A standalone npm CLI is on the roadmap.

Why does the compressor make my animation slightly slower?

It shouldn't. The pipeline rewrites the layer ip/op/st values to account for any frame skipping, so the wall-clock duration stays identical. If you see a timing change, please open an issue with the source file.