GIF splitter
Pull every frame out of an animated GIF as a separate image, with each frame's delay, and download the set as a ZIP.
GIF frame extractor
Drop an animated GIF here
or paste one with Ctrl+V. Up to 50 MB. Nothing is uploaded.
Your GIF never leaves your device. It is decoded and redrawn in your browser with the Canvas API, and the ZIP is built there too.
Want a still GIF cut into a grid of tiles instead? The main image splitter does that. It reads the GIF's first frame and treats it like any other image.
Drop an animated GIF above and this splitter pulls out every frame as a separate PNG, shows you how long each one is held on screen, and packs the set into a ZIP. It runs in your browser with no upload, so even a large GIF is ready in a couple of seconds.
What you get
One PNG per frame, at the GIF’s full pixel dimensions, numbered in playback order. Transparency is preserved, because PNG carries an alpha channel and the frames are never flattened onto a background you did not ask for.
Alongside each frame you get its delay, the time the GIF holds that frame before moving on. The GIF format stores this per frame rather than once for the whole file, in hundredths of a second, which is why a GIF’s frame rate can change partway through. A delay of 10 means one tenth of a second on screen.
Every frame is composited, not raw. This matters more than it sounds like.
Why raw GIF frames come out broken
A GIF does not store complete pictures. To save space, most encoders write only the rectangle that changed since the last frame, along with a disposal instruction saying what to do with the previous frame before drawing the new one: leave it, clear it to the background, or restore what was underneath.
Pull the frames out naively and you get exactly that: a full first frame, then a series of small patches floating on transparency. Anyone who has extracted GIF frames with the wrong tool has seen this, usually as a character’s arm with no character attached.
This splitter replays the animation internally, applying each frame’s disposal method in order, and exports what you would actually have seen on screen at that moment. Every exported frame is a complete image.
How to extract GIF frames
- Add the GIF. Drag it in, click to browse, or paste from the clipboard. Up to 50 MB.
- Check the frames. Every frame appears with its number and delay. Long GIFs are paged rather than dumped all at once.
- Download. Take the whole set as a ZIP, or click a single frame to save just that one. Useful when all you wanted was one good still to use as a thumbnail.
Splitting a still GIF into a grid
Two different jobs share the word “split”, and this page only does the first one.
Extracting animation frames is what happens here. Cutting a single picture into a grid of tiles is a different operation, and the main image splitter does that: it reads the GIF’s first frame and treats it like any other image, giving you rows and columns of tiles as PNG, JPG, or WebP.
If you want a GIF cut into a grid and still animated, that is a third thing again, and nothing on this site does it. GIF grids of that kind need every frame cut and every tile re-encoded as its own animation, which is a much heavier job than either of the above.
What happens to the colours
GIF stores at most 256 colours per frame, chosen from a palette. That constraint is baked into the file, so extracted frames carry it too: a GIF made from a photograph will have visible banding whatever you export it as.
Exporting as PNG does not add anything back, but it does not take anything away either. PNG is lossless, so each frame is exactly the pixels the GIF described. Exporting as JPG would re-compress a palette image, which tends to smear the hard colour edges GIFs are full of. PNG is the right output here and it is the default.
Specifications
- Maximum file size: 50 MB.
- Input: animated or still GIF (GIF87a and GIF89a).
- Output: PNG by default (lossless, keeps transparency), or JPG and WebP if you want smaller files. One file per frame, at the GIF’s own dimensions.
- Frame delays: read from each frame’s Graphic Control Extension and shown in the frame list.
- Disposal handling: every frame is composited against the preceding frames, so no partial frames are exported.
- Naming:
{base}_frame_{n}.png, zero-padded so the folder sorts in playback order. - ZIP: all frames in one archive, built in the browser.
- Processing: the GIF is decoded and drawn entirely on your device. No upload, no server, no queue.
Related tools
- Image splitter for cutting any image, GIF included, into a grid of tiles
- Split a PNG for lossless tile output with transparency
- Split into tiles when you want to specify tile size rather than a grid
- How to split an image for the general method
FAQ
How do I extract all frames from a GIF?
Drop the GIF onto this page and every frame appears as a separate PNG, numbered in playback order and labelled with its delay. Download the whole set as a ZIP, or save individual frames. Nothing is uploaded; the file is decoded and drawn on your own device.
Why do my extracted GIF frames look incomplete?
Because most GIF encoders store only the changed part of each frame plus a disposal instruction, rather than a full picture. A tool that exports the raw frame data gives you fragments on transparency. This splitter replays the animation and applies each disposal step, so every frame exports complete.
What format are the frames saved in?
PNG by default. It is lossless, keeps transparency, and handles the hard colour edges typical of GIFs without adding compression artefacts. You can switch to JPG or WebP for smaller files, but JPG drops transparency and both re-compress an already palette-limited image, so keep PNG unless size matters more.
How long is each GIF frame displayed?
The GIF format stores a delay per frame, in hundredths of a second, so the rate can vary within a single file. A delay of 10 holds the frame for a tenth of a second, roughly ten frames per second. Each frame’s delay is shown next to it in the frame list.
Can I split a GIF into a grid instead of frames?
Yes, on the main splitter, which reads the GIF’s first frame and cuts it into rows and columns like any other image. The output tiles are still images rather than animations. Splitting an animated GIF into animated tiles is not something this site does.
Is there a limit on GIF size or frame count?
The file limit is 50 MB, which covers almost any GIF in practice. Frame count is not capped, though a GIF with several hundred frames takes longer to decode and produces a large ZIP. Long GIFs are paged in the frame list rather than rendered all at once.