How to make a GIF from a video or photos
Choose the moment first. Then balance its timing, colour and file size.
Free toolGIF MakerMake GIFs from videos, photos or existing GIFs. Trim, caption and preview the real file size before saving.Open the GIF makerThe short answer
Open a video or image sequence in a GIF maker, keep a short loop, preview it and export. Start around 480 pixels on the longest edge and 10 to 15 fps for video, then adjust for your footage.
Keep one complete action
Choose a small gesture, a product movement or a short demonstration. Cut unrelated setup and empty time.
Set a readable canvas
Crop distractions, keep important text large and check the first frame. Use fewer frames for slower movement.
Check the encoded output
Look at the actual GIF, not just the video preview. Confirm colour, timing and the byte count before sharing.
Make a GIF from video
Select a start and end time around the action you want to repeat. A local browser tool can decode a supported video without uploading it.
MP4 with H.264 video is a practical starting point. MOV describes a container, so two MOV files can use different codecs. Convert unsupported footage with a trusted local video app before importing it.
| Clip type | Starting choice | Check before saving |
|---|---|---|
| A small reaction | Two or three seconds, 320 to 480 pixels, 10 to 15 fps. | The expression remains clear after resizing. |
| A screen demonstration | A tight crop around the relevant control. | Small text survives colour reduction and scaling. |
| A quick movement | Try 20 or 25 fps if a lower rate looks jerky. | The smoother version is worth its extra size. |
Make a GIF from photos or drawings
Arrange the images in the order they should appear and assign each a display time. A shared canvas avoids abrupt changes in dimensions.
For a slideshow, try 500 to 1,000 ms per image. Drawings that form a moving action need shorter delays. Hold a final explanation frame longer so there is time to read it.
- Use Fill & crop when every image should cover the same shape.
- Use Fit whole image when cropping would lose something important.
- Keep a transparent background only when hard transparent edges are acceptable. GIF has no partial transparency.
- For a back-and-forth loop, avoid doubling both endpoint frames. Otherwise the movement pauses at each turn.
Frame rate and speed are different choices
Frame rate chooses how many pictures represent the action. Playback speed chooses how long those pictures remain visible.
A two-second selection sampled at 15 fps contains 30 frames. Playing those frames at 2× keeps all 30 pictures but aims for a one-second loop. Sampling at 10 fps instead uses 20 pictures while keeping the action near two seconds.
| Two-second source | Pictures | Desired frame delay |
|---|---|---|
| 10 fps, 1× | 20 | 100 ms |
| 15 fps, 1× | 30 | About 66.7 ms |
| 15 fps, 2× | 30 | About 33.3 ms |
GIF stores delays in hundredths of a second. Floi distributes 10 ms rounding across frames so the total duration stays close to the requested pace. Very short delays are avoided because receiving software may play them inconsistently.
Reduce file size without guessing
Shorten the loop and reduce pixel dimensions before sacrificing lots of colour. Those choices usually remove more work than a small quality adjustment.
Less area
Changing 640×360 to 320×180 leaves one quarter of the pixels per frame. It does not guarantee one quarter of the encoded bytes.
Fewer pictures
Lowering a two-second clip from 20 fps to 10 fps halves its sampled frames. Slow movement may still read clearly.
A simpler palette
Try 128 or 64 colours for flat artwork. Keep 256 for photos when the smaller palette causes distracting colour changes.
Dithering can make gradients less banded, but its pattern is harder to compress. Compare the encoded GIF with dithering on and off. A live composition preview cannot show this tradeoff until encoding happens.
A worked loop you can reproduce
Floi’s Try a sample creates twelve drawings of a bouncing character. Their starting delay is 80 ms each, so a forward loop lasts 960 ms.
Back & forth adds the ten interior frames in reverse order. That produces 22 frames and a 1,760 ms loop at 1× speed. Changing the longest edge alters the dimensions while keeping those timing decisions intact.
| Try this | Expected behaviour |
|---|---|
| Forward, 1× | 12 frames, 0.96 seconds per pass. |
| Back & forth, 1× | 22 frames, 1.76 seconds per pass. |
| Forward, 2× | 12 frames, 0.48 seconds per pass. |
| Fit under 256 KiB | Encodes and compares actual bytes. If it reduces dimensions or colours, those settings appear beside the result. |
On 4 October 2026, the sample exported as 74,754 bytes in Chrome on macOS. Settings were 480×300, 256 colours, dithering on, no added caption and forward playback. Choose Try a sample and Balanced. Set Repeat to Forever and Fit to file size to Keep my settings, then select Make GIF.
This checks one generated loop, not typical compression or export speed. Its timing follows the twelve source delays. Your footage may need a different palette or a much larger file.
Which method fits your task?
Choose the method by your source, privacy needs and editing requirements. No single GIF maker is best for every clip.
| Method | Useful when | Tradeoff |
|---|---|---|
| floi | You want local video/photo editing, captions and an encoded-size check together. | Browser codecs and explicit memory/frame limits apply. No website URL input or mixed video/photo sequence. |
| Ezgif | You need its wider range of format converters and animation tools. | Its observed workflow stores the processed media on its server. Text, crop and optimisation use subsequent tools. |
| Gifmake | You want an image/GIF frame editor with drawing and individual timing. | The page lists 8 MB per input and 250 frames. It claims local processing; that network claim was not independently tested here. |
| Gifski | You want a dedicated video-to-GIF encoder to assess on photographic footage. | It is not the same kind of in-browser caption and image-sequence editor. |
| FFmpeg | You need local batch conversions and repeatable command-line settings. | You must choose the filters and validate the output yourself. |
The web-tool observations were made in October 2026. Their published features and limits can change. No same-input quality or timing comparison was completed, so this table does not rank their output quality.
Make a GIF locally with FFmpeg
Generate a palette from your chosen clip, then apply it to the same sampled frames. This gives you repeatable settings without a browser editor.
ffmpeg -ss 1 -t 2 -i input.mp4 -filter_complex "[0:v]fps=15,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen[p];[b][p]paletteuse=dither=sierra2_4a" -loop 0 output.gifThis example starts one second into the source and selects two seconds. It samples at 15 fps and sets a 480-pixel width. -loop 0 repeats forever. Rename the input and output paths for your files.
Use the FFmpeg palette filters documentation to change dithering or palette generation. The GIF89a specification explains palette and delay storage.
When keeping video is the better choice
Keep MP4 or WebM when sound, long playback or photographic quality matters more than GIF compatibility. A small video can look better than a much larger GIF.
For instructions that need sound and timed words, use the subtitle editor. For one still frame, use the frame extractor rather than encoding a whole loop.
Frequently asked questions
What is the best free GIF maker?
The best choice depends on the job. Floi gives you a local editor with an encoded preview and optional size fitting. Ezgif offers a wider selection of format converters. Gifski is worth considering for video with difficult gradients. FFmpeg suits repeatable batch conversions. Compare an exported sample from your own footage before choosing.
Why is my GIF much larger than the MP4?
MP4 can describe motion using changes between video frames. GIF uses a limited palette and lossless compression of indexed image data. A detailed scene repeated across many frames can be expensive. Shorten the loop and reduce dimensions first. If the destination accepts video, keeping MP4 may be the better decision.
Why does my GIF look grainy or have bands?
Each GIF frame has at most 256 palette entries. A sky or shadow can contain far more colour shades. Without dithering, those shades may become visible bands. Dithering spreads the error into a dot pattern. That can soften bands while adding grain and increasing file size. Check both versions at the size people will see.
Can I use the same GIF in email and social media?
Test the actual destination. Some email clients or previews show only a still frame. Social platforms may convert the GIF to video or restrict animation in avatars, stickers and emoji. Make the first frame meaningful, keep essential text visible and check the platform’s current size requirements.