GIF Reverser
Reversing a GIF is not simply showing the pictures backwards. A GIF frame usually stores only the rectangle that changed since the last one, so a tool that flips the frame order without rebuilding the animation first hands back a smear, and a tool that flips the pictures while leaving the delays where they were changes how long each frame is on screen. This tool decodes the file in this browser tab, plays it forward once with every frame's transparency and disposal rule applied, and then writes the frames out in the order you asked for, each one carrying the delay it had. Reverse plays the last frame first. Ping-pong plays the animation out and back in one file, and you choose what happens at the turn: hold both ends, which writes the first and last frame twice so every frame keeps the same time on screen, or trim both ends, which writes them once so the loop joins without a stutter. The loop block is read from the file rather than assumed, so a GIF that plays once stays that way unless you ask for Forever. Nothing is uploaded, there is no account, and the new file is measured after it is written, so the size beside the result is the real one.
Drop a GIF here, or choose one below.
Every frame is decoded, reordered and written again in this tab.
· or drop one anywhere on the stage
No GIF open yet. Choose one, or drop it on the stage.
Reverse writes the last frame first, and every delay travels with its own frame. The turn rule applies when you switch to Ping-pong. Hold both ends: the first and the last frame are written twice, once on the way out and once on the way back, so every frame keeps the same time on screen. The output is exactly twice as long. The loop block is read from the file, so a GIF that plays once stays that way unless you ask for Forever. The ceilings are 600 frames, 25 million pixels in one frame and 150 million across the animation, because the frame written first is the one decoded last: every frame is held in the memory of this tab while the new file is written.
Common questions
- How do I reverse a GIF without the animation smearing?
- Open the GIF and the reversed file is written here, in this tab. The step that stops the smearing is compositing: a GIF frame usually holds only the rectangle that changed since the last one, so the tool plays the animation forward once, drawing each frame onto a running canvas and applying its disposal rule, before any frame is written out of order. What gets written is the picture a player would actually have shown at that moment, which is why a difference-encoded GIF comes back whole instead of leaving trails. A tool that reverses the stored rectangles on their own cannot do this, and that is the usual reason a reversed GIF looks broken.
- Are the frame delays kept when the GIF plays backwards?
- Yes, and each delay travels with its own frame rather than staying in position. If frame A was on screen for 100 ms, B for 200 ms and C for 300 ms, the reversed file plays C for 300 ms, B for 200 ms and A for 100 ms, so it runs for exactly as long as the original did. That distinction matters on an animation with uneven timing, such as one that pauses on a final frame: leaving the delays where they were would move the pause to the start and change the animation. The readout prints the delay pattern the file carries, even or a range, and the total duration of the new file beside the old one.
- What does ping-pong do with the first and the last frame?
- It writes the animation out and back in one file, and you pick the rule at the turn because both are defensible and the difference is visible. Hold both ends writes the first and the last frame twice, once on the way out and once on the way back, so every frame keeps exactly the same time on screen and a 48 frame GIF becomes 96 frames. Trim both ends writes those two frames once, so the turn does not stutter and the loop joins cleanly, and the same GIF becomes 94 frames. The page names the rule in force and the frame count it produces before you download anything.
- Will the reversed GIF still loop?
- That is yours to decide, and the default keeps what the file already said. The tool reads the GIF's own loop block: a file that repeats forever is written back repeating forever, a file that names a count keeps that count, and a file that carries no loop block at all plays once instead of being quietly set to loop. If you want something different, Forever and Once override it for the file you download. The chip under the output pane says what the new file's loop block will carry, before you download it.
- Is my GIF uploaded anywhere?
- No. The file is read by a JavaScript GIF decoder running in this tab, reordered by this page's own code and written back out by a JavaScript GIF encoder here. There is no upload, no queue, no account and no request of any kind: no byte of the animation reaches a server, an analytics call or an error report. The only thing kept between visits is which direction, turn rule and loop setting you last chose, stored in this browser, and the platform's Start over button clears that.
- Why do the colours shift slightly in the reversed file?
- Because a GIF frame can hold at most 256 colours, and the frames this tool writes are whole composited pictures rather than the small patches the original stored. Each output frame therefore gets a fresh 256 colour palette chosen from its own pixels, and each pixel is mapped to the nearest entry, so a large flat area or a soft gradient can move by a shade. Transparency is stored as a single bit in a GIF rather than as a fraction, so a partly see-through pixel lands on either fully clear or fully solid. The frame order and the timing are exact; the palette is the part that is re-picked.
- What are the limits, and why does a local tool have any?
- 600 frames, 25 million pixels in a single frame, which is roughly 5000 by 5000, and 150 million pixels across the whole animation. They exist because a reversal cannot be streamed: the frame written first is the one decoded last, so every frame is held in the memory of this tab at once, and past that point a phone stops responding rather than finishing. Nothing is uploaded either way, so the ceiling is this machine's memory rather than a server's patience, and a file over any of the three is refused with the number it actually reached instead of a frozen tab. A long run also has a Cancel button that really stops it.
- Can I make a boomerang from a video or a still GIF?
- Ping-pong is the boomerang effect, so an animated GIF in gives a boomerang out, with the turn rule you chose. A GIF that holds a single frame is accepted and the page says plainly that the order cannot change, rather than pretending to reverse it. Video is a different job: this tool reads GIF files, so convert the clip to a GIF first and reverse that. Once the file is written, Copy puts the frame counts, the timing and the loop setting on your clipboard, and Download GIF saves the file named after the one you opened.
Every frame is composited in order and then written back in reverse carrying its own delay, so a reversed GIF runs for exactly as long as the one that went in. A GIF frame holds at most 256 colours, so rewriting the file re-picks each frame's palette and a large flat area can shift by a shade. Nothing is uploaded: the file is decoded, reordered and written in this browser tab.