# Output formats and sizes When to read this: you choose a format, a size, a frame rate or a quality for a render, or a result is too large, blurry or cut off. It covers which options each format takes, canvas vs `--width` vs `--scale`, frame rate, quality presets with measured file sizes, what makes a GIF large, looping and troubleshooting. Output options are flags of `tweenframe recipes render` (the `output` object of `POST /renders`). Every option you omit keeps the recipe's default from `recipes show`. Ranges and defaults are in `tweenframe recipes render --help`. ## Formats and their options | Format | Kind | Takes | | --------------------- | ------------------- | ------------------------------------------ | | `gif`, `webp`, `apng` | Animated image | `width`, `scale`, `quality`, `fps`, `loop` | | `mp4`, `webm` | Video | `width`, `scale`, `quality`, `fps` | | `png`, `jpeg` | Still (one moment) | `width`, `scale`, `quality`, `time` | | `svg`, `pdf` | Still, vector | nothing: the canvas size, no other option | | `storyboard` | Sheet of key frames | `width`, `scale` | An option you pass that the format does not take is refused with `invalid_output` and `details.path` naming it, for example `--loop` with `--format mp4` or `--width` with `--format svg`. A recipe default that does not apply to the format you chose is dropped silently, so switching the format never trips over a recipe default. Choosing a format: - **gif** plays everywhere (email, chat, docs) and is the largest file for photos. - **webp** is an animated image too, much smaller than gif at `normal` or `minimal` quality; modern browsers show it. - **mp4** is the smallest for photos and long animations; it is a video, so it plays in a video player or a `