GIF stores each frame's delay in hundredths of a second, so 500 ms is written as 50. The Netscape extension controls looping: zero usually means forever, a positive count limits repeats, and no extension usually means play once. Very short delays may be clamped by viewers.
A GIF’s speed is not a single number like a video frame rate. Each frame carries its own delay, and the loop behavior is controlled by a separate extension. The basics are simple, but the details explain why a GIF sometimes plays differently than expected.
Delay is stored in centiseconds
The GIF89a Graphic Control Extension has a Delay Time field measured in hundredths of a second. A value of 50 means 0.50 seconds, or 500 ms. A value of 10 means 100 ms, or 10 frames per second.
This has two practical consequences:
- The finest step is 10 ms. You cannot store a 25 ms delay exactly; the closest values are 20 or 30 ms.
- The value is per frame. A GIF can vary the delay from frame to frame, though many encoders use one global delay for simplicity. This converter uses one global delay.
The field is 16 bits, so the theoretical maximum is large (over 10 minutes), but practical GIFs use delays in the 20–2000 ms range.
Very short delays are unreliable
Some viewers treat a delay of 0 or 1 centisecond as 10 centiseconds (100 ms) to avoid flicker. The exact threshold and behavior vary by browser, app, and platform. A GIF authored at 10 ms per frame may play at 100 ms per frame in one viewer and 10 ms in another.
If timing matters, avoid the extreme low end. A 50–100 ms delay is a safer “fast” setting than 10 ms. Test the downloaded file in the app where it will be used, not only in the browser preview.
Choosing a delay
The right delay depends on how much information each frame carries:
| Delay | Frames per second | Good for |
|---|---|---|
| 100 ms | 10 | Fast motion, simple shapes, short loops |
| 200 ms | 5 | Quick slideshows, reaction GIFs |
| 300–500 ms | 2–3 | Photo slideshows, readable sequences |
| 700–1000 ms | 1 | Text, detail, before/after comparisons |
| 1500–2000 ms | 0.5–0.7 | Deliberate, slide-like pacing |
For photo GIFs, 300–800 ms is a comfortable range. For a UI animation, 100–200 ms may feel right. For a text-heavy sequence, give the reader more time.
The delay is global in this tool. If one frame needs to hold longer, duplicate it. Two identical 500 ms frames are equivalent to one 1000 ms frame for playback, and the encoder can compress the repetition.
Looping: forever, once, or a count
GIF looping is controlled by the Netscape Application Extension. It contains a loop count:
- 0 usually means loop forever.
- A positive number limits how many times the animation repeats.
- No extension usually means play once.
The word “usually” matters because the extension is a convention, not part of the original GIF89a core. Most browsers and viewers follow it; a few tools ignore it or re-interpret the count.
This converter offers two behaviors:
- Loop forever: writes the extension with a loop count of 0.
- Loop off: omits the extension, so most viewers play the animation once.
It does not expose a custom repeat count. If you need “play three times,” you would need an encoder that writes a positive loop count.
How this tool writes timing
The frame time input accepts milliseconds and rounds to the nearest 10 ms before encoding. A 505 ms entry becomes 500 ms; a 504 ms entry becomes 500 ms; a 506 ms entry becomes 510 ms. This matches the GIF field’s granularity instead of pretending to store a value the format cannot represent.
The default is 500 ms. The range is 20–10,000 ms. The lower bound avoids the most aggressive viewer clamping; the upper bound keeps a single frame from becoming a de facto slideshow.
Loop off omits the Netscape extension. The engine test decodes the result and checks that the loop flag is absent, so the behavior is verified rather than assumed.
Test in the target app
GIF timing is interpreted by the viewer, and viewers differ. A file that loops perfectly in Chrome may play once in a chat app. A file that looks smooth in Quick Look may be re-timed when uploaded to a social platform.
The practical workflow is:
- Set the delay and loop in the converter.
- Download the GIF.
- Open it in the app where it will be used.
- If the timing is wrong, adjust and re-export.
The preview in the tool is useful for checking colors and frame order. It is not a guarantee of how a third-party app will play the file.
For frame selection and slideshow pacing, read How to make a GIF from photos. For the size cost of adding frames, read How to reduce GIF file size.
Sources
Related guides
image-to-gif.com converts images to GIF in the browser; files are never uploaded.
FAQ
What is the minimum GIF frame delay?
The format stores delays in 10 ms steps, so 10 ms is the smallest nonzero unit. Many viewers clamp very short delays (often 0 or 10 ms) to a longer value to avoid flicker, so a 10 ms setting may not play as 10 ms everywhere.
How do I make a GIF play only once?
Turn off the loop option in the converter. The encoder then omits the Netscape looping extension, and most viewers play the animation once.
Why is my GIF faster than the delay I set?
Check the delay value and the viewer. Some apps re-time GIFs when they import them, and some clamp very short delays. Test the downloaded file in the destination app.
Does frame delay affect file size?
Not meaningfully. The delay is a small per-frame value; it does not change the number of pixels stored. To reduce size, change width, frame count, or palette.
Can each frame have a different delay?
The GIF format allows a delay per frame. This converter currently uses one global delay for the whole animation. To hold one frame longer, duplicate it in the strip.