Skip to content
Run here 100% in your browser, no upload, no login

GIF Splitter

Split a GIF into single frames as PNG, decoded locally with a hand-written parser.

Frames

Frames are decoded in your browser and rendered on a canvas. Interlaced frames are deinterlaced automatically; frame disposal handling covers the common cases.

How to use it

  1. Pick a .gif file — the decoder reads it locally, nothing is uploaded.
  2. The tool walks the GIF structure block by block: logical screen descriptor, global and local color tables, graphic control extensions and LZW-compressed image data.
  3. Every decoded frame appears in the grid with its delay in milliseconds; click any frame to download it as PNG.
  4. Download all as PNG saves every frame in one go.

Common use cases

Why it stays private

The parser and LZW decoder run inside this page. Your file is read with FileReader into memory and never leaves the browser.

FAQ

Q: Which GIF versions are supported? A: GIF87a and GIF89a, including global and local color tables, interlaced frames and transparent frame indices.

Q: Why are some frames half-empty? A: GIFs often store only the changed region with a transparent index. This tool renders each frame's own indices against the palette; for delta-encoded animations the combined playback is rebuilt cleanly with the GIF maker.

Q: What happens with a damaged file? A: The decoder stops at the first unreadable block and reports the issue, while any frames decoded before that are still shown.

Your data stays on this device

GIF Splitter runs 100% locally. Everything you paste or drop is processed by your own browser and never transmitted. Nothing is stored on our servers — close the tab and it is gone.

Nothing you type is sent to a server, logged, or used for analytics. The page works even with your network disconnected after first load.