Free tool · Palette from your clip · Runs in your browser
Video to GIF
Short answer
Choose a stretch of up to 15 seconds and one of three presets, and the tool shrinks the frames, picks the 256 GIF colors from your clip itself and writes a looping GIF. On a 5 second 1920 × 1080 excerpt, a plain conversion produced 27.68 MB at the full 1920 × 1080; the Balanced preset (480 px, 12 fps, 256 colors) produced 1.81 MB, 93.5% smaller. Nothing is uploaded.
60 frames at 12 a second.
Nothing is uploaded. Maximum 100 MB; the first run loads a ~30 MB engine, once per visit. A GIF has no sound.
Key takeaways
- Size is set by width, frame rate and color count, not by the length of the video alone. Our 5 second excerpt became 0.63 MB, 1.81 MB and 3.73 MB with the Small, Balanced and Sharp presets, against 27.68 MB for a plain conversion.
- A plain conversion keeps the video's full size and frame rate: 1920 × 1080 and 152 frames for 5 s, 5,537 kB per second. Its picture also scored far lower, SSIM 0.30 against 0.89 for the Balanced preset; a plain conversion uses ffmpeg's default palette rather than one built from the clip.
- Width costs the most: at 12 frames per second our excerpt was 0.87 MB at 320 px, 1.81 MB at 480 px and 3.06 MB at 640 px. Frame rate comes second: 480 px went from 1.40 MB at 8 fps to 2.16 MB at 15 fps.
- Colors trade size for fidelity: at 480 px and 12 fps, 64 colors gave 1.10 MB, 128 gave 1.44 MB and 256 gave 1.81 MB, with SSIM 0.84, 0.87 and 0.89.
- X accepts a GIF up to 15 MB and 350 frames; GIPHY says uploads can be 15 seconds and 100 MB but recommends 8 MB or less and fewer than 200 frames. The Balanced preset stays inside the 350 frame limit for up to 29 seconds.
- The same clip as an MP4 at 480 px and 12 fps was 165,558 bytes, -90.8% against the Balanced GIF. GIF is a format you use because a place asks for it, not because it is small.
What the tool does to your video
ffmpeg cuts the stretch you choose, keeps the frames at the rate you pick, scales them to the width you pick without ever making them larger, and then builds the GIF in two steps inside one command. The first step looks at the frames and builds a palette; the second draws every frame using that palette.
FFmpeg's documentation says a palette made by palettegen is built from the whole stream, that it always holds 256 entries even when you cap the colors lower (the unused entries are black), and that paletteuse can dither the result. The tool uses ordered Bayer dithering at scale 5, the setting the documentation describes as less visible pattern at the cost of more banding.
| Preset | Width | Frames a second | Colors | Dither |
|---|---|---|---|---|
| Small | 320 px | 10 | 128 | Bayer, scale 5 |
| Balanced | 480 px | 12 | 256 | Bayer, scale 5 |
| Sharp | 640 px | 15 | 256 | Bayer, scale 5 |
The loop count is set to forever. The length is limited to 15 seconds and the file to 100 MB. A GIF has no sound, so the audio of your video is dropped.
Measured: the three presets and a plain conversion
Measured on a 5 second 1920 × 1080 excerpt of Big Buck Bunny (CC BY 3.0, Blender Foundation). It is an animated film, not camera footage, so camera video will differ. The tool's own ffmpeg arguments ran on the same single-thread WebAssembly engine your browser downloads; times are from a headless run and your device will differ. SSIM compares each frame with the same source frame at the GIF's own size.
| Setting | Frame | Frames | File size | Per second | SSIM | Time |
|---|---|---|---|---|---|---|
| Small | 320 × 180 | 50 | 633,609 bytes (0.63 MB) | 127 kB | 0.927 | 3.0 s |
| Balanced | 480 × 270 | 60 | 1,808,633 bytes (1.81 MB) | 362 kB | 0.891 | 3.5 s |
| Sharp | 640 × 360 | 75 | 3,730,479 bytes (3.73 MB) | 746 kB | 0.883 | 4.8 s |
| Plain converter, ffmpeg -i in out.gif | 1920 × 1080 | 152 | 27,683,392 bytes (27.68 MB) | 5,537 kB | 0.301 | 5.7 s |
Width and frame rate: the nine-way grid
The presets are three points on a grid. These are all nine combinations at 256 colors, so you can see what each step costs.
| Width and frame rate | Frame | Frames | File size | SSIM |
|---|---|---|---|---|
| 320 px 8 fps | 320 × 180 | 40 | 679,348 bytes (0.68 MB) | 0.892 |
| 320 px 12 fps | 320 × 180 | 60 | 869,815 bytes (0.87 MB) | 0.897 |
| 320 px 15 fps | 320 × 180 | 75 | 1,049,335 bytes (1.05 MB) | 0.894 |
| 480 px 8 fps | 480 × 270 | 40 | 1,404,839 bytes (1.40 MB) | 0.885 |
| 480 px 12 fps | 480 × 270 | 60 | 1,808,633 bytes (1.81 MB) | 0.891 |
| 480 px 15 fps | 480 × 270 | 75 | 2,164,015 bytes (2.16 MB) | 0.887 |
| 640 px 8 fps | 640 × 360 | 40 | 2,387,961 bytes (2.39 MB) | 0.881 |
| 640 px 12 fps | 640 × 360 | 60 | 3,060,310 bytes (3.06 MB) | 0.887 |
| 640 px 15 fps | 640 × 360 | 75 | 3,730,479 bytes (3.73 MB) | 0.883 |
SSIM changes little across the grid (0.88 to 0.90), because each GIF is compared at its own size. Size is what moves: 640 px at 15 fps is more than five times 320 px at 8 fps.
Colors and dithering
A GIF cannot show more than 256 colors at once. The tool lets ffmpeg choose them from your clip, and the measurement shows what limiting them does.
| Setting | File size | SSIM | Against 256 colors |
|---|---|---|---|
| 64 colors | 1,102,997 bytes | 0.836 | -39.0% |
| 128 colors | 1,437,174 bytes | 0.866 | -20.5% |
| 256 colors (default) | 1,808,633 bytes | 0.891 | Reference |
| 256 colors, no dithering | 1,773,357 bytes | 0.893 | -2.0% |
Dithering barely changes the size here (-2.0% without it). It matters for gradients such as skies, where it hides the bands that a small palette creates; SSIM does not measure that well, so look at your own clip.
How long can the GIF be?
X's documentation says an animated GIF can be up to 15 MB and recommends no more than 350 frames and a resolution of 1280 × 1080. GIPHY says uploads are limited to 15 seconds and 100 MB, recommends 6 seconds and 8 MB or less, and says fewer than 200 frames works well. Discord Support gives 20MB as the upload limit without Nitro. Here is what that means at our measured size per second.
| Preset | Size on our clip | X: 15 MB and 350 frames | Discord: 20 MB | GIPHY: 8 MB and 200 frames recommended, 15 s upload cap |
|---|---|---|---|---|
| Small (320 px, 10 fps, 128 colors) | 127 kB per second | 35 s (limited by frame count) | 158 s | 15 s |
| Balanced (480 px, 12 fps, 256 colors) | 362 kB per second | 29 s (limited by frame count) | 55 s | 15 s |
| Sharp (640 px, 15 fps, 256 colors) | 746 kB per second | 20 s (limited by size) | 27 s | 11 s |
The size per second came from one animated clip. A busy camera clip with grain or fast motion compresses worse, so treat the lengths as a ceiling and check the size of your own GIF.
GIF or MP4
On the same excerpt at 480 px and 12 frames a second, an H.264 MP4 was 165,558 bytes and a VP9 WebM 123,028 bytes, against 1,808,633 bytes for the GIF. Video is about 11 times smaller. Use a GIF where a GIF is required; elsewhere, use video.
Free tools:Trim by timestampCrop a video preciselyCompress a videoConvert MP4 to GIF as it is
Tips for a smaller, cleaner GIF
- Pick the moment first. Three seconds that loop well beat fifteen that do not.
- Use the Balanced preset unless you have a reason. 480 px at 12 frames a second is a good size for chat and posts.
- Crop the video to the part that moves before you make the GIF; a smaller frame is a smaller file.
- Check the size against the place you will post it: X 15 MB, GIPHY 8 MB recommended, Discord 20 MB.
Questions people ask
How do I make a GIF smaller?
Lower the width first, then the frame rate, then the length. On our excerpt, 480 px at 12 fps was 1.81 MB and 320 px at 10 fps was 0.63 MB.
Why is my GIF so big?
A plain conversion keeps the video's full size and frame rate. Our 5 second 1080p excerpt became 27.68 MB that way, and 1.81 MB with the Balanced preset.
How long can a GIF be on X?
X documents a limit of 15 MB, and recommends at most 350 frames and a resolution of 1280 × 1080. At 12 frames a second, 350 frames is about 29 seconds.
What does GIPHY accept?
GIPHY says uploads are limited to 15 seconds and 100 MB, and recommends 6 seconds and 8 MB or less, with fewer than 200 frames.
Does a GIF have sound?
No. The format has no audio, so the sound of your video is dropped.
Why does a GIF look grainy or banded?
A GIF can show only 256 colors at a time. The tool picks them from your clip. With 64 colors, our excerpt scored SSIM 0.84 against 0.89 with 256.
Is a GIF better than a video?
Not for size. The same excerpt was 165,558 bytes as MP4 and 1,808,633 bytes as a GIF. Use GIF when a site requires it.
Is my video uploaded?
No. The file is processed in your browser, up to 100 MB. The first run downloads an engine of about 30 MB once per visit.
Related
Sources and how we checked
- X API documentation: Media upload best practices (read 2026-10-09)
- GIPHY Support: GIF Creation Best Practices (read 2026-10-09)
- Discord Support: File Attachments FAQ (read 2026-10-09)
- FFmpeg Filters Documentation (read 2026-10-06)
Reviewed October 9, 2026. The measurements ran the tool’s own ffmpeg arguments on the same single-thread WebAssembly engine your browser downloads. The script, the results and the saved documentation are in data/seo/hub/evidence/2026-10-09/tools.