Reference
GIF frame rate
GIF does not store a frame rate. It stores a delay per frame in centiseconds, so only rates that divide cleanly into 100 come out exactly as asked. Ask for 30fps and you get 33.3 or 25, depending on which way the encoder rounded.
The one fact that explains everything else
Inside a GIF, each frame is preceded by a graphic control extension block. That block holds a 16 bit delay value measured in hundredths of a second. There is no frame rate field anywhere in the specification, and no requirement that frames share a delay.
So when you ask a converter for 24fps, it does not store 24. It computes 100 divided by 24, gets 4.17, rounds it to 4, and writes 4 into every frame. Four centiseconds per frame is 25fps. Your 24fps GIF is a 25fps GIF, and it always was, in every tool. This is not a rounding bug in one converter, it is the format.
Frame rate to delay to actual playback
| You ask for | Delay written | It plays at | Exact |
|---|---|---|---|
| 5 fps | 20 cs | 5 fps | Yes |
| 8 fps | 13 cs | 7.69 fps | No |
| 10 fps | 10 cs | 10 fps | Yes |
| 12 fps | 8 cs | 12.5 fps | No |
| 15 fps | 7 cs | 14.29 fps | No |
| 20 fps | 5 cs | 20 fps | Yes |
| 24 fps | 4 cs | 25 fps | No |
| 25 fps | 4 cs | 25 fps | Yes |
| 30 fps | 3 cs | 33.33 fps | No |
| 33 fps | 3 cs | 33.33 fps | No |
| 50 fps | 2 cs | 50 fps | Yes |
| 60 fps | 2 cs | 50 fps | No |
| 100 fps | 10 cs | 10 fps | No, clamped by the browser |
Generated from the same delay maths the converter uses, so the table cannot drift away from what the tool actually writes.
Five rates survive the round trip untouched: 5, 10, 20, 25 and 50. Everything else is an approximation. The practical takeaway is that if two GIFs need to stay in sync, or if you are matching a video, pick one of those five.
The sub 2cs clamp
There is a second rule that catches people out. A delay of 0 or 1 centiseconds is treated as invalid by browsers and substituted with 10cs. The history is that early GIF authoring tools wrote 0 meaning as fast as the machine allows, which produced unwatchable strobing, so browsers standardised on overriding it.
The consequence is that anything above 50fps is not just approximate, it is actively counterproductive. A GIF encoded at 100fps writes a 1cs delay, gets clamped to 10cs, and plays at 10fps while carrying ten times the frames it needs. If a GIF you did not make plays far slower than it should, this is usually why.
Read the real frame rate out of a GIF
This reads the delay bytes directly from the file in your browser. It does not decode a single pixel and nothing is uploaded, so the answer is instant even on a large GIF.
Find a GIF's real frame rate
Drop a GIF in. It is read in your browser and the delays are printed below.
Picking a frame rate on purpose
| What is in the clip | Use | Why |
|---|---|---|
| Screen recording, UI walkthrough | 10 fps | Exact, and a cursor does not need smoothing |
| Talking head, presentation | 10 to 12 fps | Faces read fine at low rates when the frame is static |
| General footage | 15 fps | The usual default, lands at 14.3 in practice |
| Sport, action, fast pans | 20 or 25 fps | Both exact, and motion holds together |
| Anything above 25 fps | Reconsider | Bytes go up, timing accuracy goes down, WebP does it better |
The frame rate slider on the video to gif converter shows the resulting delay and the true playback rate as you move it, so you can see this happening rather than discovering it afterwards. If a finished GIF is too big, frame dropping in the GIF compressor is the same lever applied after the fact.
Frame rate questions
What frame rate does a GIF actually have?
None, in the way a video does. The GIF format has no frame rate field. Each frame carries its own delay, written in centiseconds, which is hundredths of a second. A GIF where every frame says 10 is playing at 10fps. A GIF with mixed delays has no single frame rate at all, which is why some tools report a different number from others.
Why is 30fps not possible in a GIF?
Because 100 divided by 30 is 3.33, and the delay field only holds whole centiseconds. An encoder has to round to 3, which plays at 33.3fps, or to 4, which plays at 25fps. Neither is 30. Only rates that divide cleanly into 100 come out exact: 50, 25, 20, 10, 5, 4, 2 and 1.
What is the best frame rate for a GIF?
10 to 15fps for screen recordings and talking heads, 20 to 25fps for fast motion. Since 15 is not exactly representable and lands at about 14.3, and 20 and 25 are exact, there is a small argument for preferring 20 or 25 when the extra bytes are affordable. For most GIFs the difference is not visible.
Why does my 100fps GIF play so slowly?
Because browsers refuse to honour it. A delay of 1cs or 0cs is treated as broken, a hangover from the early web where files used 0 to mean as fast as possible, and browsers substitute 10cs. So a GIF asking for 100fps plays at 10fps in Chrome, Firefox and Safari. Anything faster than 50fps is wasted bytes.
How do I find the frame rate of a GIF I already have?
Drop it into the reader on this page. It parses the graphic control blocks in your browser, lists every distinct delay value it finds, and tells you the average playback rate. Nothing is uploaded and the answer appears immediately.
Does a higher frame rate make a bigger file?
Directly. Frames are the unit GIF stores, so 25fps is roughly two and a half times the size of 10fps for the same clip. Dropping the frame rate is the second most effective size control after shortening the clip, which is why frame dropping is one of the methods in the compressor.
Can different frames have different delays?
Yes, and good encoders use that. When duplicate frames are removed, the frame that survives inherits the combined delay of the ones deleted, so a five frame still section becomes one frame with a 50cs delay. The animation looks identical and the file is a fifth of the size.