Skip to main content

GIF to PNG converter

Convert GIF images to PNG format

No watermarkFree & unlimited
All processing happens in your browser. No data is sent to any server.

The single most important thing about this conversion is that you get one frame. PNG has no concept of a timeline, so an animated GIF is reduced to the picture it shows when the browser hands it over, which is the opening frame. In exchange you get a lossless still with a proper eight-bit alpha channel instead of the on-or-off transparency GIF is stuck with. If the animation itself is the point, this is the wrong pair.

Key facts about GIF to PNG converter

Key facts about GIF to PNG converter
Frames keptOne. The GIF is decoded into an Image element and drawn once, so an animation of any length collapses to its first frame with no frame picker.
Colour rangeA GIF frame holds at most 256 distinct colours. The PNG is 8-bit RGBA and can describe far more, but it cannot invent colours the GIF never had.
TransparencyGenuinely improved. GIF marks a single palette index transparent; the PNG stores a real alpha byte per pixel, preserving exactly what the browser rendered.
QualityLossless. There is no quality slider, because canvas.toBlob writes PNG without a quality argument and every pixel survives exactly.
Typical size deltaUsually larger. A 500x500 flat-art GIF of 40 KB often becomes a 60 to 120 KB PNG, since the canvas writes 32 bits per pixel before Deflate rather than one palette index.
InterlacingAn interlaced GIF decodes normally and the PNG is written non-progressive, so the output loads in a single pass.
Animation metadataFrame delays, loop counts, disposal methods and comment extensions are discarded; none has a PNG equivalent.
Opens the resultEvery browser, every operating system preview pane, every editor. PNG is the safest still-image format to hand to someone.

What happens to your file

Your GIF is decoded by the browser and never by us. The file is wrapped in an object URL, handed to an Image element so the browser's GIF decoder produces pixels, and those pixels are painted into a canvas this page created. The PNG comes back from canvas.toBlob, the browser's own Deflate-based encoder. There is no upload request in the conversion path and no server component behind this page.

About this tool

  1. 1

    Add the GIF

    Drag a .gif onto the drop zone or browse for it. Twenty files per batch, up to 500 MB each.

  2. 2

    Check the preview

    The preview shows the frame that will be captured, on a checkerboard, so you can confirm both the frame and the transparency.

  3. 3

    Resize if you want

    Presets cap the long edge from 3840 down to 200 pixels. Downscaling is fine; upscaling is not offered.

  4. 4

    Convert and download

    Press Convert and save the PNG. Multiple files come back as converted-png-files.zip built inside the browser.

Specs & compatibility
Input and outputTakes .gif only (image/gif) and returns .png with the image/png type; any other extension is refused before decoding.
Conversion pathGIF to PNG runs in three steps: an <img> element decodes the GIF and only its first frame reaches the canvas; the pixels land on a 2D canvas in this tab; then canvas.toBlob with the image/png type returns the finished file.
Browser supportThe GIF side decodes in every browser ever shipped, while writing the PNG is just as universal, canvas.toBlob having produced it since canvas existed.
Controls for this pairNo quality slider, PNG not being a lossy target here, so the max-dimension presets from 3840 down to 200 px are the only way to hold the PNG down in size against the GIF.
Batch, caps and namingTwenty GIF files per run at 500 MB each; one result downloads as a single PNG, several as converted-png-files.zip, zipped by JSZip 3.10 in page memory.
Device ceilingThe canvas caps it: past roughly 16,384 px a side Chromium refuses the bitmap and iPhone Safari gives up sooner, so an oversized GIF fails before any PNG bytes exist.
  • For an animated GIF this is effectively a poster-frame extractor for the still you show before a looping asset loads.
  • Since the source had 256 colours at most, a palette optimiser afterwards will usually push the PNG back below the GIF size.
  • A transparent GIF keeps its shape but the edge stays hard; that jaggedness came from the source and cannot be recovered.
  • Converting a static GIF is almost always worth it, since a still GIF is a worse PNG in every respect but size.
  • First-frame extraction with alpha intact
  • Lossless 8-bit RGBA PNG output
  • Checkerboard preview for transparency
  • Up to twenty stills extracted in one pass
  • Grabbing a poster frame from an animated GIF as a placeholder.
  • Converting a static GIF logo from an old site into a format design tools accept cleanly.
  • Getting a clean still out of a screen-recording GIF so it can be annotated.
PNG is a single-image format in the form a canvas can write. The conversion draws the GIF once, capturing whichever frame is showing, in practice the first, and there is no frame picker here. For every frame you need an extractor that parses GIF blocks; for the motion, keep the GIF or use MP4 or WebM.
Frequently. A GIF stores one palette index per pixel and compresses those with LZW, while the canvas writes full 8-bit RGBA for Deflate, a much larger starting point. Flat artwork can double. The PNG is worth having for alpha or editing headroom, not for size.
Yes, and it comes out cleaner than it went in. GIF has one transparent palette index, which is why cut-outs have stair-stepped edges. PNG stores a full alpha byte per pixel, so whatever the browser produced is preserved exactly. The original hard edges remain hard, but nothing further is lost.
Not from this page. A canvas has one pixel format, 8-bit RGBA, and canvas.toBlob writes a truecolour PNG from it with no way to request a palette. Run the output through pngquant afterwards; since the source really did have 256 colours or fewer, quantising back is lossless in practice.
They are gone. Those live in the graphic control extension and the Netscape application extension inside the GIF, and nothing in a PNG can express them. The browser consumes them while decoding, the canvas never sees them, and the encoder has no field for them.
View all

Need the opposite? Try PNG to GIF

Updated

We use anonymous analytics to improve ToolChamp. No personal data is stored or sold. Privacy Policy