Skip to content

Extract

Split an animation into frames

Drop in an animated GIF or WebP and get every frame as a separate PNG, with its timing shown, ready to download individually or as a ZIP. You can drop frames you do not want, reverse the order, or lay them all out on one contact sheet. Two things worth knowing before you start. This needs a browser feature called ImageDecoder, which Chrome and Edge have and Firefox and Safari currently do not - the page checks and tells you rather than quietly returning the same frame repeatedly. And it takes animations apart; it does not put them back together.

Loading the animation tools...

How to split an animation into frames

  1. Drop in an animated GIF or WebP.
  2. Look through the frames - each shows its own display time.
  3. Deselect any you do not want, and reverse the order if you need to.
  4. Download them as a ZIP, or as one contact sheet.

Supported formats

This tool accepts GIF, WebP, PNG and AVIF files. Everything is decoded by your own browser, so the formats available depend on what your browser can open - which for HEIC in particular varies between Safari and other browsers.

Frequently asked questions

Why does this not work in my browser?

Because reading one specific frame out of an animation needs a browser feature called ImageDecoder, part of WebCodecs, and at the time of writing Chrome and Edge have it while Firefox and Safari do not. There is no reasonable workaround: drawing an animated GIF onto a canvas gives you whichever frame the browser happened to be displaying, with no way to ask for frame seven - so a tool built that way returns the same picture over and over and looks like it succeeded. Refusing is the honest option.

Can I turn the frames back into a GIF?

Not here, and the reason is worth being straight about rather than listing it as coming soon. Writing an animated GIF means implementing LZW compression, a colour quantiser that picks 256 colours per frame, and the disposal-method state machine that decides what each frame does to the one before it. A poor quantiser bands every frame visibly, and shipping a bad encoder would be worse than not having one. This tool takes animations apart well and leaves assembling them to software built for it.

Why do some frames show no timing?

Because the file does not record one for them. GIF stores a delay per frame and most encoders write it, but not all do, and some formats leave it out entirely. When the timing is missing the tool says so rather than assuming a default and presenting the guess as a fact - which matters if you are measuring the frame rate of something.

Is there a limit on the number of frames?

Yes, 600. Every frame decodes to a full-size image, so a file declaring tens of thousands of them would allocate far more memory than the tab has - which is a way of crashing a browser with a small file, in the same family as a decompression bomb. The tool checks the declared frame count before it starts reading and refuses with an explanation.

What is the contact sheet for?

Seeing the whole animation at once, which is much easier to judge than scrubbing through it - useful for picking a thumbnail, spotting a duplicated frame, or checking where a loop is not quite seamless. It lays the selected frames out in the order they play, at the number of columns you choose.

Is my animation uploaded?

No. The file is decoded frame by frame by your own browser on your own device, and each frame is released as soon as it has been drawn so a long animation does not hold every frame in memory at once. A content security policy the browser enforces prevents this page from sending anything to another domain.

Looking for something else? Browse all ImageUtility tools.