Report · October 2026

Lottie File Size Report 2026: what makes 412 real animations heavy

We ran 412 openly licensed, real-world Lottie files through the same steps as TinyLottie and measured everything: how big they are, what makes the big ones big, and how much metadata stripping, dotLottie, gzip and WebP actually save. All numbers below are measured, not estimated.

100%
Original JSON
85%
Optimized JSON
13%
gzip
15%
.lottie
Median size relative to the original JSON. Animation is itself a 4.8 KB Lottie.
22.5 KB
median file size
12.7%
of a typical file is editor metadata
85.2%
median saving JSON → .lottie on disk
63.6%
of the file is images, when images are embedded

1. Most Lottie files are small — a few are huge

The median file is 22.5 KB and 90% are under 191 KB. But the tail is long: 5 files are over 1 MB, the largest at 8.5 MB. Together the 412 files weigh 44.1 MB.

< 10 KB126 files (31%)
10–50 KB150 files (36%)
50–200 KB97 files (24%)
200 KB – 1 MB34 files (8%)
> 1 MB5 files (1%)

2. Complexity, not decimals, drives size

File size tracks the number of layers (correlation 0.75 on a log scale) and keyframes (0.73) closely. Files over 200 KB have a median of 39 layers and 264 keyframes; files under 50 KB have 5 layers and 18 keyframes.

MedianFiles ≤ 50 KB (276)Files > 200 KB (39)
Layers539
Keyframes18264
Canvas (longest side)412 px800 px

What to do: the biggest wins are in After Effects — delete hidden layers, merge shapes, simplify paths and bake expressions. Rounding numbers helped less than expected: most exporters already write short decimals, so rounding to 3 places saved a median of only 0.9%.

3. ~13% of a typical file is editor metadata

Layer names, match names and class names are useful in After Effects but not needed for playback. Stripping them saved a median of 12.7% of the JSON. Combined with rounding (and WebP for images), the optimized JSON was a median 15% smaller — 11.5% across all bytes.

4. dotLottie vs gzip: the honest comparison

On disk, packaging the optimized animation as dotLottie made files a median 85.2% smaller than the original JSON. That headline needs context: JSON compresses extremely well, and most web servers already compress it in transit.

Brotli on original JSON89.1%
gzip on original JSON87%
Optimized → .lottie85.2%
Optimized JSON (no gzip)15%

Median size reduction versus the original JSON file.

  • On the web with gzip/Brotli, a .lottie was a median 9.7% larger than simply gzipping the original JSON. Optimizing first still helps: optimized JSON gzipped is 13.2% smaller than the original gzipped.
  • In app bundles and anywhere files are not compressed for you (iOS/Android assets, some CMS uploads, email), dotLottie's built-in compression is a large, real saving.

More on choosing a format: Lottie JSON vs dotLottie.

5. Images are rare, but they dominate when present

Only 23 of 412 files reference images and 13 embed them as base64. But in those files, images were a median 63.6% of all bytes — and the single largest file in the set (8.5 MB) is 75% embedded JPEGs. Re-encoding embedded PNGs as WebP cut the PNG files over 10 KB by a median 45.4% (a small sample of 6 files); already compressed JPEGs gained far less.

6. 60 fps, big canvases and expressions

30 fps (incl. 29.97)37.4%
60 fps28.6%
Canvas > 1000 px18.2%
Use expressions13.8%

Share of files.

Animations baked frame by frame carry a keyframe for every frame, so 60 fps doubles them compared with 30 fps; and canvases larger than they are displayed cost rendering time on some players. Expressions (13.8% of files) are evaluated at runtime on the web and unsupported by many native players. See the Lottie performance checklist.

7. Methodology, data and limitations

  • Corpus: 412unique Lottie JSON files (deduplicated by hash) from the sample and test folders of Airbnb's open-source lottie-android (265), lottie-ios (135) and lottie-web (12) repositories (Apache-2.0 / MIT). Synthetic feature tests, font glyph files and documentation schemas were excluded. Files were analysed locally; none are redistributed here.
  • Processing: the open-source tinylottie CLI from npm — strip editor metadata, round numbers to 3 decimals, re-encode embedded images as WebP (quality 80, kept only if smaller), and package as dotLottie. gzip and Brotli use Node.js defaults.
  • Limitations: player test suites skew towards complex animations and bug reproductions, so this is not a random sample of production files. Treat the numbers as indicative, and measure your own files.
  • Data: aggregate results are available as JSONunder CC BY 4.0 — cite "TinyLottie Lottie File Size Report 2026" with a link to this page.

How does your file compare?

Drop your Lottie JSON or .lottie into TinyLottie to see its optimized size and a side-by-side preview. Runs in your browser — nothing is uploaded. Free for files up to 3 MB.