User Rating 0.0
Total Usage 0 times

Drop a GIF here or click to browse

Max 50 MB · GIF89a / GIF87a

Is this tool helpful?

Your feedback helps us improve.

About

GIF frame delay is stored in Graphics Control Extension blocks as a 16-bit unsigned integer in hundredths of a second. A delay of 10 equals 100 ms per frame, or 10 FPS. Most browsers clamp delays below 2 (i.e., 20 ms) to 100 ms, silently overriding the intended speed. This tool parses the full GIF89a binary, modifies every frame's delay field to match a target FPS, and re-encodes the file with correct LZW compression. No server upload occurs. The entire decode-modify-encode pipeline runs in a Web Worker inside your browser.

Incorrect frame timing produces stuttering or unintentionally fast playback across platforms. Email clients, messaging apps, and social media each enforce their own minimum delay thresholds. This tool lets you validate the actual per-frame delay in centiseconds and set a uniform rate that behaves predictably. It preserves transparency, disposal methods, and the original Netscape loop count. Note: re-encoding may slightly increase file size due to LZW dictionary reset boundaries. For GIFs exceeding 500 frames, expect processing times of several seconds.

gif framerate gif speed change gif fps gif editor animation speed gif delay

Formulas

The GIF specification (GIF89a) stores frame timing as a 16-bit little-endian unsigned integer representing hundredths of a second. Converting a desired frames-per-second value to this delay unit:

delay = round(100FPS)

Where delay is the value written to bytes 4-5 of each Graphics Control Extension block, and FPS is the target frames per second. The result is clamped: delay 2 to avoid browser-specific override behavior. Effective playback speed is then:

FPSeff = 100delay

Where FPSeff = effective frames per second after rounding. Total animation duration for N frames:

T = N × delay × 0.01 s

Reference Data

Target FPSDelay (1/100s)Delay (ms)Use CaseBrowser Safe
11001000SlideshowYes
250500Slow animationYes
520200Moderate paceYes
812120Standard cartoonYes
1010100Common GIF defaultYes
12880Smooth loopYes
15770Video-like feelYes
20550Fast animationYes
25440Film-likeYes
30330Smooth videoYes
33330Near-realtimeYes
50220Maximum safe speedThreshold
100110Extremely fastNo - clamped to 100ms
0 (delay=0)00As-fast-as-possibleNo - clamped to 100ms

Frequently Asked Questions

Browsers enforce a minimum delay threshold. Most modern browsers treat any frame delay below 20 ms (delay value < 2) as 100 ms instead. This means setting FPS above 50 will not produce faster playback in Chrome, Firefox, or Safari. The tool clamps the minimum delay to 2 (20 ms, i.e., 50 FPS) to ensure cross-browser consistency.
No. This tool modifies only the delay field in each frame's Graphics Control Extension block. The pixel data, color tables, transparency settings, and disposal methods remain identical. Frame count stays the same. To change frame count, you would need a frame interpolation or frame-dropping tool.
The output file size will be very close to the original since the tool preserves the original LZW-compressed image data blocks. Only the Graphics Control Extension delay bytes are modified in-place. The binary structure is otherwise preserved byte-for-byte, so file size changes are negligible (typically 0 bytes difference).
Many GIFs use different delays per frame (e.g., pausing longer on the last frame). This tool applies a uniform delay across all frames based on your target FPS. The original per-frame delays are shown in the info panel before conversion. If you need variable timing, consider the uniform rate as a baseline.
A delay value of 0 in the GIF spec means "as fast as possible." In practice, Internet Explorer used ~100 ms, Firefox uses ~100 ms, and Chrome uses ~100 ms for delay values of 0 or 1. This is why the tool enforces a minimum delay of 2 (20 ms). Setting delay to 0 gives you no speed advantage and introduces unpredictable behavior.
Yes. The tool reads and preserves the full Graphics Control Extension for each frame, including the disposal method (0-3), transparency flag, and transparent color index. Only the delay bytes (positions 4 and 5 in the extension) are overwritten. All other metadata, including the Netscape 2.0 loop extension, is retained.