GIF Speed Changer & Reverser
Change a GIF’s speed without re-encoding it — or reverse it, boomerang it and cut frames.
Original
Result
Change the speed to see the result here.
Speed and looping
Reverse, boomerang and frames
About the GIF Speed Changer & Reverser
Make an animated GIF faster or slower — ×0.25 to ×4, every frame at one fixed delay, or a total length you choose — and change how often it loops. Speed and loop changes are lossless: only the delay numbers stored in the file are rewritten, so every colour and pixel stays exactly as it was and the file keeps its size.
You can also reverse the animation, make a seamless boomerang (forward, then back) or delete frames. Those change the order of the pictures, so the frames are encoded again; colours stay exact when each frame uses 255 colours or fewer. Everything runs in your browser — the GIF is never uploaded.
How to use it
- Drop a GIF onto the box, choose it, or paste it with Ctrl+V (⌘V on a Mac).
- Choose Speed × and pick a factor such as ×2 (twice as fast) or ×0.5 (half speed), or set a fixed delay per frame or the total length of one play.
- Optionally set the looping: forever, once, or a number of plays.
- The result plays next to the original as soon as you change the speed. For Reverse, Boomerang or removed frames, open Reverse, boomerang and frames and select Apply.
- Select Download GIF.
Examples
48 frames of 60 ms (2.88 s) · Speed ×2
48 frames of 30 ms — 1.44 s. Lossless: only the 2-byte delay of each frame is rewritten; every other byte stays the same.
4 frames of 50 ms (200 ms) · Speed ×2
Delays of 30, 20, 30 and 20 ms — 100 ms in total, exactly half.
GIF delays are whole hundredths of a second. 25 ms cannot be stored, so the rounding is carried from frame to frame and the overall speed comes out exact.
30 frames of 30 ms · Speed ×4
Every frame at 20 ms (×1.5 overall), with a note that 30 frames were raised to 20 ms.
A delay of 10 ms would play as 100 ms in Chrome, Firefox and Safari — ten times slower than intended.
Frames 1–5 · Boomerang
Plays 1, 2, 3, 4, 5, 4, 3, 2 — and loops back to 1 without showing the first and last frame twice.
Common uses
- Slowing down a GIF to see what happens, or speeding up a slow screen recording.
- Fixing GIFs that play too fast or too slow in a chat app, website or presentation.
- Making a GIF loop forever — or play only once — without touching its pictures.
- Turning a short clip into a seamless back-and-forth loop, or playing it backwards.
- Cutting unwanted frames at the start or end of a GIF.
Why 20 ms is the fastest delay
A GIF stores each frame’s delay in hundredths of a second (the Delay Time of the Graphic Control Extension in the GIF89a specification). Browsers do not play very short delays as stored: Chrome shows any frame of 10 ms or less for 100 ms (DeferredImageDecoder), and Firefox (FrameTimeout.h) and Safari (ImageDecoderCG.cpp) do the same. A GIF saved with 0 or 10 ms delays therefore plays at 10 frames per second.
So 20 ms (50 frames per second) is the fastest delay that plays reliably. This tool never writes less: frames that would come out faster are set to 20 ms, and the page tells you how many. It also starts from what browsers show — a frame stored as 0 ms counts as 100 ms, so ×2 really makes it twice as fast.
Lossless or re-encoded?
- Lossless — speed, fixed delay, total length and looping. The tool walks the file’s blocks and rewrites only the 2-byte delay of each frame and the loop count; the colour tables and compressed pixels are copied byte for byte. Frames without a timing block get one, and an old GIF87a header becomes GIF89a (the version that allows timing blocks).
- Re-encoded — reverse, boomerang and removing frames. GIF frames are usually stored as changes to the previous picture, so changing their order means drawing every full picture and encoding it again. Colours stay exact when every frame uses at most 255 colours (one palette entry is kept for transparency); otherwise they are reduced to a palette of 255 colours. The file size can change.
How loop counts work
Looping is stored in a NETSCAPE2.0 block. A stored count of 0 means loop forever; a count of N means “repeat N more times”, so the GIF plays N + 1 times; a GIF without the block plays once. This is how Chrome’s GIF decoder (Wuffs, decode_gif.wuffs) reads it. Choose Play 3 times and the tool writes 2.
Limitations
- GIF files up to 100 MB. Reversing, boomerangs and frame removal work on GIFs up to 4,096 px per side and 2,000 frames.
- Delays are whole hundredths of a second (10 ms steps) — the GIF format cannot store anything finer.
- Some apps and messengers convert GIFs to video or play them at their own speed, whatever the file says.
- Speed changes keep everything else in the file, including comments. Re-encoded GIFs keep the pictures, timing and looping only.
Privacy
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
Does changing the speed reduce the quality?
No. Speed, fixed delays, total length and loop changes only rewrite timing numbers in the file — every frame stays byte-for-byte identical. Only reversing, boomerangs and removing frames re-encode the frames.
Why does my GIF not get any faster above a certain speed?
Browsers show frames of 10 ms or less for 100 ms, so 20 ms per frame is the practical limit. If the frames are already 20–30 ms, ×4 cannot make them any faster; to make the animation shorter, remove frames instead (for example every second frame) and keep the delay.
How do I make a GIF loop forever or stop it from looping?
Set Looping to Loop forever or Play once and download — this is lossless and leaves the speed as it is if you keep the speed at ×1.
What is the difference between reverse and boomerang?
Reverse plays the frames backwards. Boomerang plays them forwards and then backwards, without repeating the turning frames, so the loop looks continuous — the GIF lasts nearly twice as long.
Is my GIF uploaded?
No. The GIF is read and rewritten by your browser on your device. The page keeps working offline once it has loaded.