GIF timing is stored per frame

The GIF89a Graphic Control Extension can specify a delay time before the next frame is rendered. The unit is one hundredth of a second. A value of 10 therefore represents 0.10 seconds in the file. Frames in the same animation can carry different values.

Why creators use unequal delays

  • Hold a title card long enough to read.
  • Pause at the end of a gesture before the loop restarts.
  • Simulate a blink or impact with a very short frame.
  • Save frames by holding a mostly static image longer.
  • Create intentionally irregular, hand-drawn timing.

Forcing those frames to a fixed frame rate can make a readable caption flash too quickly or turn a deliberate pause into a mechanical loop.

Worked example

FrameStored delayTimePurpose
1500.50 sTitle hold
280.08 sMovement
380.08 sMovement
4340.34 sEnd pose

The loop lasts 1.00 second. Rebuilding it as four equal 0.25-second frames keeps the total duration but destroys the intended title hold and movement speed. Total duration alone is not enough; the sequence of delays matters.

How to inspect timing with GIF to Frames

  1. Select an authorized GIF and wait for local decoding.
  2. Review the frame list and the delay shown for each frame.
  3. Record or export the timing data before editing individual images.
  4. If you rebuild the animation elsewhere, enter each original delay rather than one average value.
  5. Compare the rebuilt loop beside the source in more than one current browser.

Why very short delays can behave differently

Historically, viewers have applied their own minimum delay to extremely small or zero values. As a result, two browsers or image tools may not play a malformed or aggressively timed GIF identically. Do not rely on a zero-delay frame for precise video-like timing. Test the destination and use a video format when exact playback cadence is essential.

Timing is not the only frame rule

A GIF frame may update only part of the canvas. Disposal instructions tell a decoder what to do with the previous image before drawing the next one. Exporting raw patches without compositing them can produce incomplete frames. The tool presents composited frames for practical extraction, while timing remains separate metadata.

Common mistakes

  • Assuming all frames use one FPS value.
  • Replacing individual delays with their average.
  • Ignoring zero or unusually short values without testing playback.
  • Confusing frame delay with disposal behavior.
  • Expecting a folder of PNG files to preserve animation timing by itself.

The GIF89a specification defines delay and disposal fields. For the complete extraction process, read how to extract every GIF frame and the tool guide.