User Rating 0.0
Total Usage 0 times

Drop a GIF here or click to upload

Max 50 MB • GIF89a format

Is this tool helpful?

Your feedback helps us improve.

About

Animated GIF timing is controlled by a delay value embedded in each frame's Graphics Control Extension (GCE) block, specified in hundredths of a second. A value of 10 equals 100ms, producing roughly 10fps. Most GIF creators default to a uniform delay, but the spec (GIF89a) allows distinct timing per frame. Incorrect delays cause jerky playback, desynchronized lip-flaps in reaction GIFs, or unreadable text frames that flash past in 20ms. Browsers also clamp delays below 20ms to roughly 100ms, silently altering your intended speed.

This tool parses the raw GIF binary, exposing every frame's GCE delay for direct editing. You can set a global delay or fine-tune individual frames. The preview renders at true decoded timing. The output is a standards-compliant GIF89a file with your modified delays. No re-encoding of pixel data occurs, so image quality remains lossless. Note: this tool processes standard GIF89a files only. APNG and WebP animations require different container parsing not covered here.

gif editor frame delay animation speed gif speed changer frame timing

Formulas

The GIF89a specification stores frame delay in the Graphics Control Extension block as a 16-bit unsigned integer in centiseconds (hundredths of a second). The conversion between display milliseconds and the stored value is:

delaycs = delayms10

The effective frames per second for uniform delay is:

FPS = 1000delayms

Total animation duration across n frames:

T = ni=1 delayi

Where delaycs is the value written to bytes 4-5 of the GCE block, delayms is the human-readable millisecond value, FPS is frames per second, and T is total loop duration in milliseconds.

Reference Data

Delay (ms)Delay (cs)Effective FPSTypical UseBrowser Behavior
101100Ultra-fast flashClamped to ~100ms in most browsers
20250Minimum reliable speedMay be clamped in Firefox/Chrome
30333.3Smooth animationRendered accurately
40425Film-like motionRendered accurately
50520Standard smooth GIFRendered accurately
80812.5Common default speedRendered accurately
1001010Standard default (most tools)Rendered accurately
150156.7Slow motion effectRendered accurately
200205Deliberate slow paceRendered accurately
330333Slideshow-likeRendered accurately
500502Text-reading framesRendered accurately
10001001Slow slideshowRendered accurately
20002000.5Very slow transitionRendered accurately
50005000.2Long pause framesRendered accurately
1000010000.1Maximum practical delayRendered accurately

Frequently Asked Questions

Modern browsers (Chrome, Firefox, Safari) enforce a minimum delay clamp. Any GCE delay value of 0, 1, or 2 centiseconds (0-20ms) is overridden to approximately 100ms (~10fps). This was implemented to prevent CPU abuse from ultra-fast GIFs. To ensure your intended speed is honored, use delay values of 30ms (3cs) or higher.
No. This tool modifies only the 2-byte delay field within each Graphics Control Extension block. The LZW-compressed pixel data, color tables, and all other binary data remain untouched byte-for-byte. The output is a lossless modification of the original file.
The delay field is a 16-bit unsigned integer in centiseconds, giving a theoretical maximum of 65535cs or 655,350ms (~10.9 minutes per frame). This tool caps input at 10,000ms (1000cs) for practical usability, but the format itself allows much longer pauses.
The disposal method (also in the GCE block) controls what happens to the canvas after a frame's delay expires. Method 0/1 leaves pixels in place, method 2 restores to background color, and method 3 restores to the previous frame state. This tool preserves the original disposal method. Changing delays does not affect disposal behavior, but very short delays with disposal method 2 can cause visible flicker.
Yes. The GIF89a spec assigns an independent GCE block to each frame. This tool exposes per-frame delay controls, allowing you to hold a text frame for 2000ms while keeping action frames at 50ms. Switch to "Per Frame" mode in the interface to access individual frame delay inputs.
Some GIF encoders omit the GCE block entirely or set delay to 0, relying on the viewer's default behavior. Browsers typically render these at ~100ms intervals. The tool reads 0 as the stored value. Set your desired delay and export - the tool will write proper GCE blocks with your specified timing.