GIF to PNG Converter

Drop a GIF and save its first frame as a PNG, or extract every frame as numbered PNGs — decoded on your device, never uploaded.

  • Free
  • No account
  • Runs in your browser
  • Nothing uploaded
GIF to PNG ConverterNothing uploaded

Runs entirely in your browser — your input is never uploaded, logged, or stored.Privacy policy

What is GIF to PNG Converter?

This tool converts GIF images to PNG in your browser, either as a single PNG of the first frame or as one PNG for every frame of an animation. It is for designers pulling a still out of a GIF, people turning an animation into a sprite sheet or slides, and anyone who needs frames from a GIF without uploading it.

GIF, defined by CompuServe's GIF89a specification, stores images with a palette of at most 256 colours, compressed losslessly with LZW. An animated GIF is a series of image blocks drawn one after another onto a fixed "logical screen". Each frame can be smaller than the screen and placed at an offset, can mark one palette colour as transparent, carries a delay in hundredths of a second, and says what happens to it afterwards — its disposal method: leave it in place, clear its area, or restore what was underneath. That is why you cannot simply cut a GIF into pieces: frame 7 on its own may be a small patch that only makes sense on top of frames 1 to 6.

So this tool includes its own GIF decoder, written to the GIF89a specification and running in your browser. It reads the global and local colour tables, decodes the LZW data, puts interlaced rows back in order, applies transparency, offsets and disposal methods 0 to 3, and composites each frame onto the full logical screen as a browser shows it at that moment. Every PNG you get is therefore the complete picture, at the GIF's full size, not a fragment. We checked the decoder frame by frame against Chrome's own GIF decoder on several real animations, including transparent ones; every pixel matched. For disposal method 2, which the specification calls "restore to background colour", it clears the area to transparent, which is what Chrome does.

PNG is lossless and supports transparency, so each frame keeps the GIF's exact colours, and transparent pixels stay transparent. With "First frame", you get name.png. With "All frames", you get name-frame-001.png, name-frame-002.png and so on, numbered so they sort in order, plus the frame count, the pixel size, the total duration and the loop setting; each frame's delay is listed next to it. A 14-frame, 1430 × 338 px animation from our tests came out as 14 PNGs of about 95 KB each and a total duration of 7 seconds.

Limits: up to 1,000 frames and 400 megapixels of output per GIF in "All frames" mode, files up to 50 MB, and 20 GIFs per batch. PNG frames are larger than the GIF, because GIF only stores the changes between frames and PNG stores every full frame.

Nothing is uploaded. The GIF is read and decoded in your browser's memory; you can confirm in your browser's developer tools (Network tab) that no request carries the file.

1. The file must start with the GIF87a or GIF89a signature and be at most 50 MB; other formats are refused with a message naming what the file really is. 2. The blocks are parsed: logical screen size, global colour table, NETSCAPE2.0 loop count, and for each image its position, size, local colour table, interlace flag, and the preceding Graphic Control Extension (delay, transparency index, disposal method). 3. Each frame's LZW data is decoded (variable-length codes from the minimum code size up to 12 bits, with clear and end codes), and interlaced rows are put back in order (passes starting at rows 0, 4, 2 and 1). 4. Frames are composited onto a transparent canvas the size of the logical screen; any part of a frame outside the screen is clipped. Transparent indices leave the pixel underneath; after a frame is shown, disposal 2 clears its rectangle to transparent and disposal 3 restores the pixels from before it was drawn. 5. Each composited frame is written into a canvas and encoded with canvas.toBlob("image/png"), which is lossless. "First frame" stops after frame 1; "All frames" names files name-frame-001.png onward. Download each, or all as a ZIP.

First frame vs All frames
 First frameAll frames
OutputOne PNG per GIFOne PNG per frame, numbered
File namesname.pngname-frame-001.png, name-frame-002.png…
Each image showsThe first frameThe full screen at that frame (composited)
LimitsUp to 50 MB per GIFAlso ≤ 1,000 frames and ≤ 400 megapixels of output
Use it forA still or a thumbnailSprite sheets, slides, editing single frames

Worked examples

  • loop.gif, 3 frames, First frame → loop.png, with the note that the GIF is animated (3 frames) and only the first frame was converted.
  • loop.gif, 3 frames with delays of 10, 10 and 50 hundredths of a second, All frames → loop-frame-001.png, loop-frame-002.png, loop-frame-003.png; delays 100 ms, 100 ms and 500 ms, total 700 ms, loops forever.
  • A frame with disposal method 2 at x = 1 → in the next frame that pixel is transparent again, not the background colour.
  • anim.gif whose bytes are really a PNG → no conversion; the tool says the file is actually a PNG file and to use a PNG tool.

How to use GIF to PNG Converter

  1. Choose "First frame" or "All frames (one PNG each)" in the Frames menu.
  2. Click "Choose GIF images", drop GIFs onto the box, or paste one with Ctrl+V (Cmd+V on a Mac).
  3. Click "Convert to PNG" (or "Extract frames"), then download each PNG or click "Download all (.zip)".

Common errors

  • "…is actually a PNG file, not GIF" (or WebP, JPG…) — the extension does not match the contents; an animated WebP or APNG can be saved with a .gif name. Use the converter for the format named.
  • "This GIF is damaged: it contains no image data" — the file has a GIF header but no frames, usually a broken download. Download it again.
  • "…ends early (it looks cut off) — every frame that could be read was converted" — a truncated file. The frames before the cut are correct; re-download for the rest.
  • "…has 1,001 frames — more than the 1,000-frame limit…" or "…over the 400-megapixel limit…" — the animation is too large to extract fully in a browser tab. Use First frame, or shorten or shrink the GIF first.
  • Only one PNG came out — the Frames menu was on "First frame". Switch to "All frames" and convert again.

FAQ

How do I convert a GIF to PNG?

Drop the GIF onto this page, leave Frames on "First frame" and click "Convert to PNG". You get a lossless PNG of the first frame, free and without uploading the file.

How do I extract all frames from a GIF as PNG images?

Choose "All frames (one PNG each)", add the GIF and click "Extract frames". Each frame is saved as name-frame-001.png, name-frame-002.png and so on, and "Download all (.zip)" gives you every frame in one archive.

Why do some GIF frames look incomplete when other tools split them?

Animated GIFs often store only the part of the picture that changed in each frame. This tool composites every frame onto the full canvas, applying offsets, transparency and disposal methods, so each PNG is the complete image as it appears at that moment.

Does GIF to PNG keep transparency?

Yes. A GIF marks one palette colour as transparent, and those pixels are written as fully transparent in the PNG. Everything else keeps its exact palette colour.

Will converting GIF to PNG reduce quality?

No. Both formats are lossless, and the PNG holds exactly the colours the GIF decodes to. It cannot add colours the GIF never had — a GIF is limited to 256 colours per frame.

How can I see the frame delays of a GIF?

Extract all frames: each frame's delay, as stored in the GIF, is listed next to it in milliseconds, and the total duration and loop setting are shown above the results.

Is my GIF uploaded to a server?

No. The GIF is decoded by code running in your browser and never sent anywhere; the Network tab in your browser's developer tools shows no request carrying the file.

Is there a limit on GIF size or frame count?

Files can be up to 50 MB. In All frames mode a GIF can have up to 1,000 frames and up to 400 megapixels of output in total (frames × width × height), because every frame becomes a full-size PNG in your browser's memory.

G

Prefer AllUtil on Google

One click adds AllUtil to your Google preferences. You'll see our tools highlighted with a Preferred badge in Search and AI answers.

2× more likely to clickWorks in AI Overviews