---
title: "Export"
description: "Choose a delivery format, see the packaged size and export to your computer or LottieFiles."
canonical: "https://terminal.lottiefiles.com/docs/export/"
last_updated: 2026-10-30
---

# Export

Choose a delivery format, see the packaged size and export to your computer or LottieFiles.

## Export

For a task with steps, see [Export a GIF for Slack](https://terminal.lottiefiles.com/docs/how-to/export-a-gif-for-slack.md),
[Export a transparent video](https://terminal.lottiefiles.com/docs/how-to/export-a-transparent-video.md) or
[Export a dotLottie for a player](https://terminal.lottiefiles.com/docs/how-to/export-a-dotlottie-for-a-player.md).

[Watch: Export your animation](https://terminal.lottiefiles.com/export/).

**↓ export**, at the top of the rail (the Properties panel in After Effects or Figma) beside the file's name, opens the **EXPORT** panel whatever
is selected. Pick a format, its settings and a destination, then **Export file** or **Upload
new asset…**. Picking a format does not write or upload anything. The action stays at the foot
of the panel while its choices scroll.

### Panel choices

| Row or action | What you choose or see |
| --- | --- |
| **Animation** | **dotLottie**. Its packaged size appears below the formats. |
| **Video** | **MP4**, **WebM**, **MOV**. |
| **Image** | **SVG**, **GIF**, **WebP**, **APNG**, **PNG sequence**. |
| **Code** | **Frolic**. |
| **Text** | **Glyphs** or **Glyphs + fonts**, when fonts can be left out. |
| **Resolution** | Picture and video dimensions. **1×**, **2×**, **3×** multiply both dimensions. Frame output rounds to even dimensions, at least 2 pixels each. |
| **Range: entire animation** / **Range: loop** | Pictures and video only. Click to switch when a loop is set with `b` and `n` on the score (the timeline). The duration and frame rate appear below. |
| **Background: none** / **Background: document** | SVG, pictures and transparent video. Click to switch. MP4 instead shows its background colour. |
| **Destination** | **Local drive** or **LottieFiles**. |
| **Change output path…** | Edits a local path. `~/` means your home folder; the output folder must already exist. |
| **Publish: new asset** / **Publish: new version** | Switches the upload target when a linked asset is available. The version target appears below as its name and version; ↗ shows it in your workspace (⌃L). |
| **Export file** | Writes a local export. Progress appears while it runs; the receipt shows the written size and filename. |
| **Upload new asset…** | Opens the name and destination dialog. Nothing uploads until you confirm it. |
| **Upload new version** / **Upload over vN** | Publishes to the displayed asset; the latter appears after a version conflict. |
| **Replace** / **Keep both** | Appears when the local destination exists. |
| **show in file browser** | Reveals the last completed local export. |

The palette (`:`) offers **Export as…**; **File** calls it **Export…**. The format list has **Export as .lottie**, **Export as Lottie JSON**, **Export as Frolic**,
**Export as SVG**, **Export as MP4**, **Export as WebM**, **Export as MOV**, **Export as GIF**,
**Export as WebP**, **Export as APNG** and **Export as PNGs**. These commands start the selected
local export; selecting a format chip in the panel only prepares it. Lottie JSON is the
palette's alone: it writes `name.json` beside the panel's export (beside one that's there
already, as `name-copy.json`), and `⌘E` writes over it. **Save** (`w`) saves your working
document.

### Destinations

- **Local drive**: the filename and folder are shown. **Change output path…** edits the full
  path (`↵` keeps it, `esc` cancels). An existing file asks for **Replace** or **Keep both**;
  a source file or symbolic link cannot be replaced by an export. A folder of PNGs can be
  kept alongside the old one. When done, the file is shown in Finder (the file browser on
  other systems), with **show in file browser** to see it again. `⌘E` repeats the last local
  export, replacing the file it wrote (a PNG sequence: the frames in its folder, nothing else
  there); before the first, it opens the panel. Once a document has been exported, File and the
  palette name it for the file: **Export to intro.gif**. **Keep both** counts up: `x-copy`,
  `x-copy2`.
- **LottieFiles**: dotLottie. Choose a workspace and folder for a new
  asset, or **Publish: new version** for a linked file or an asset uploaded in this session.
  A file of your own remembers the asset it went to between runs; a copy opened from
  LottieFiles stays linked to the file it came from, and remembers a new asset made of it until
  you quit. **Upload new version**
  publishes only when chosen. A newer remote version stops the upload; **Upload over vN** then
  puts yours on top, theirs kept in the file's versions.
  Other formats use **Local drive**. Either destination can be chosen again at any time.

With dotLottie selected, its size with packaged assets is measured in the background when
the panel opens. Changing the output path measures it again. After an edit, the size stays
marked *before your last edit* until **Measure again**. The receipt gives the size written.

### Optimized .lottie

After a .lottie export, the panel offers LottieFiles' optimized copy at its foot, with how much
smaller it is. When the document is on LottieFiles as it was exported, LottieFiles is asked
for it right away: **Use optimized** saves it beside the export as `name.optimized.lottie`
(paid plans), and a free plan sees the size and **◆ Upgrade to use it**. LottieFiles makes an
optimized copy only of a file in a workspace, so a document that isn't there, or has edits
that aren't, is offered **See how small**, which says what it uploads: a new version of its
file, or a new asset through the upload dialog.

### CDN link

**CDN link…** opens the document's CDN link window: the link, its embed code and what it
plays (see [LottieFiles](https://terminal.lottiefiles.com/docs/lottiefiles.md#cdn-links)). Once its file has a link, the panel says
**CDN link on**, which opens the window, beside **Copy link**.

### Text and fonts

For text, **Glyphs** is selected at first: the letters travel with the animation, without
whole font files. **Glyphs + fonts** keeps the font files for editing elsewhere, where their
makers allow it. The hint shows how much they add; switching Text uses the sizes already
measured. The choice appears only when there are font files to leave out.

Players draw the carried letters with either choice, including text animators, text on a
path, and theme text. To type new letters in an editor opening a Glyphs export, install the
font there. A font without glyphs keeps its font file or reference so its text can still draw.
`w` saves the working document locally as a `.ctd`, including one opened from LottieFiles. It
never publishes a workspace version. Click the save state under the document's name for its local
path and **Make a local copy (.ctd)…**. This opens an independent copy with its notes, without
a workspace link. Exports and LottieFiles version history are delivery files, not automatic
backups of the working document. See [LottieFiles](https://terminal.lottiefiles.com/docs/lottiefiles.md).

| Format | What it writes |
| --- | --- |
| **dotLottie** | A dotLottie 2 archive: the animation and its packaged media, state machines, themes and background, and the other animations of a `.lottie` it was opened from; `name.lottie`. |
| **Frolic** | Frolic source (`.vd`): the animation as text to read, change and compile again; `name.export.vd`, never over a `.vd` it was opened from. |
| **SVG** | An animated SVG: vector, transparent, with no script; `name.svg`. |
| **MP4** | H.264 video on the document's background (white while hidden); `name.mp4`. Needs ffmpeg with `libx264`. |
| **WebM** | VP9 video with transparency; `name.webm`. Needs ffmpeg with `libvpx-vp9`. |
| **MOV** | ProRes 4444 video with transparency for editing; `name.mov`. Needs ffmpeg with `prores_ks`. |
| **GIF** | A looping animated GIF with palette colours and on/off transparency; `name.gif`. Needs ffmpeg. |
| **WebP** | A looping animated WebP with transparency; `name.webp`. Needs ffmpeg with `libwebp_anim`. |
| **APNG** | A looping animated PNG with transparency; `name.png`. No ffmpeg needed. |
| **PNG sequence** | Every frame as a PNG in `name-frames/`. No ffmpeg needed. |

[Motion blur](https://terminal.lottiefiles.com/docs/layers.md#motion-blur) (`⇧B`) is drawn in pictures and video, and baked into Lottie,
.lottie, Frolic and SVG as a blur along each move. [Materials](https://terminal.lottiefiles.com/docs/layers/materials.md), Ink and Soft
among them, are drawn in pictures and video; players draw the layer plain, and the export says
so. The document (`.ctd`) keeps them: a Lottie or .lottie opened again has the layers plain.
Materials need suitable graphics hardware to draw their look.
See [What players draw](https://terminal.lottiefiles.com/docs/concepts/what-players-draw.md).

Video carries colour information for players to interpret. Check colours in the destination
player, especially when matching a design's colours.

**Resolution** draws pictures and video at 1×, 2× or 3× the composition's size. **Background: none**
(at first) keeps SVG, WebM, MOV, GIF, WebP, APNG and PNGs see-through where the animation is;
clicked, it says **Background: document**, and they're drawn on the document's background
(white while it's hidden), as MP4 always is.
None of them is drawn on the stage's grey or its dots. Pictures and video use the whole
animation unless **Range: loop** is chosen (offered when a loop is set). MP4, WebM, MOV, GIF and WebP go through
ffmpeg (`brew install ffmpeg`; on Windows `winget install ffmpeg`, on Linux `apt install ffmpeg`,
or your distribution's). APNG and PNG frames do not need it.
MP4, WebM and MOV carry the animation's mixed sound; GIF, WebP, APNG and PNG frames are silent.
The same from a shell, or from an agent:

```
creator-tui export hero.json --format mp4,dotlottie
creator-tui export hero.json --format all --scale 2
creator-tui export hero.json --format gif --out hero.gif --background white
creator-tui export hero.json --format dotlottie --fonts
```

`--background` puts pictures and video on a colour of your own. From the command line (and
the copilot), an export without `--out` never goes over a file that's already there: the file
it's made from, or the Lottie or SVG a `.ctd` was opened from. `hero.json` exported as Lottie
JSON is `hero.export.json`, and `hero.ctd` exported as an SVG beside a `hero.svg` is
`hero.export.svg`.
Lottie JSON and dotLottie exports leave font files out unless `--fonts` keeps them, each file
written with `--data` too.
See [Command line](https://terminal.lottiefiles.com/docs/cli.md#export) for every flag, including themes, token values and row exports.

`creator-tui export lottie` writes Lottie JSON from the command line (see
[Command line](https://terminal.lottiefiles.com/docs/cli.md#export) for the source and output arguments).

### Animated SVG

One SVG file that animates itself with SVG's own animation elements (SMIL), so it plays in
an `<img>` or page where the browser supports SVG animation. Hosts that sanitise SVG or stop
animation may show a still image. Keys stay
keys and eases stay curves, so it moves as the Lottie does, smoothly between frames.

| Kept | Left out (named when you export) |
| --- | --- |
| Transforms, opacity, parenting, curved motion paths, auto-orient | Expressions |
| Paths and morphs, rectangles, ellipses, stars, polygons, round corners | Merge, offset, pucker & bloat, twist, zig zag |
| Fills, strokes, dashes, linear and radial gradients, trim paths | Trim paths on dashed strokes, conic gradients (drawn radial) |
| Masks, track mattes (alpha, luma, inverted), blend modes | Mask expansion and difference, 3D, hard mix blends, layer styles |
| Precomps (start, stretch, time remap), repeaters, solids, images | Sound, video |
| Text (its glyphs) and text animators | Text without glyphs, stroke and other effects |
| Fill, tint, tritone, drop shadow and Gaussian blur effects | |

What a key can't express exactly, such as two values keyed at different times that make
one attribute, or a non-linear time remap, is sampled every frame.
Loops over 10,000 frames are sampled less often. Eases that overshoot are split where they
turn. Shapes beyond the export's 200,000-item budget are left out; movement beyond its
sampling budget is held still. The export names these limits when it reaches them.

### Frolic

The document written as Frolic (`--format vd`), as `name.export.vd` beside it, so never over a
`.vd` it was opened from: its layers, shapes, keys and eases (named ones where a key's curve is
one: `ease_out_back`), masks, mattes, precomps, images, effects and glyphs, which compile back
back to Lottie. Text compiles back a little lower, since Frolic places a text layer by its
middle and Lottie by its baseline. What doesn't come across yet is named when you export: text
animators and text keys, a text's path (it comes back straight), sound, what tokens are bound
to, state machines and themes, and masks set to none (Frolic adds them). Animate text keeps its
values in Frolic, so opened here again it plays as it did; other players see the text still.
Conic gradients come back radial, glows as shadows, and hidden shapes and paints are left out.
Charts keep their drawing but lose their data. Motion blur comes back baked, as blurs, a
seamless loop as the keys that end it, and materials, Ink and Soft plain, not as settings; the document background does not come
back unchanged. The export reports these differences; check them before
using Frolic as an editable hand-off.
