Extract Individual Frames From Any GIF
Animated GIFs are sequences of images packed into a single file. Sometimes you need just one of those images — a specific reaction face, a single frame for a thumbnail, or every frame laid out for a sprite sheet. This tool pulls them apart.
The problem
A GIF is not a video. It's a stack of images, each with its own delay value, played in sequence. But there's no obvious way to get at those individual images. You can't just rename it to .zip and extract. Screenshot tools capture whatever frame happens to be showing at the moment you click. And video editors treat GIFs as video streams, which loses the original frame boundaries and timing data.
What you actually need is a tool that understands the GIF format — one that reads the frame table, respects disposal methods, and exports each frame as a clean PNG.
How it works
- Drop or select a GIF file. The tool parses the binary GIF data and extracts every frame.
- Browse the frames. Each frame is displayed as a thumbnail with its index and delay timing in milliseconds.
- Select the frames you want. Pick one, pick several, or grab all of them.
- Download as PNG. Individual frames download as single PNGs. Multiple frames download as a zip.
Your data never leaves your browser. All processing happens locally — the GIF is decoded in JavaScript, not uploaded to a server.
When to use this tool
- Finding the perfect frame from a reaction GIF to use as a static image
- Extracting frames to build a sprite sheet for game development or CSS animations
- Editing a single frame in an image editor, then reassembling the GIF
- Pulling a thumbnail from an animated product demo or tutorial GIF
- Analyzing frame timing to understand why a GIF looks choppy or too fast
Why I built it
I was making sprite sheets from animated GIFs and got tired of the workaround: open in GIMP, flatten each layer, export one by one. That's a five-minute process for something that should take five seconds. I wanted to drop a GIF and immediately see every frame with its timing, then grab exactly the ones I needed.
Built with vanilla HTML/JS. No frameworks, no backend, loads instantly.