Initializing... drag & drop files here
Supports: XCF
XCF is GIMP's working file — a layer stack, not a picture. APNG is a finished animated image with full colour and real 8-bit transparency. This page bridges the two: upload XCF files, set a frame rate, and get back a single looping PNG that opens without GIMP installed. There is one important caveat about layers, and it is worth reading before you convert. Files upload over an encrypted connection, are processed on our servers, and are deleted automatically after a few hours — no sign-up, no watermark.
An XCF is decoded here as a multi-page image, one page per layer, and only the first page is used — which is the bottom layer of your stack. Anything painted on the layers above it is not composited in and does not appear in the output. If your XCF is a photo with text on top, you get the photo without the text.
We verified this on a two-layer test file: the bottom layer's content came through and the upper layer's content was absent from the finished APNG.
So, before uploading:
.xcf input is accepted. Flatten layered projects in GIMP first (Image → Flatten Image, then re-save the .xcf) — a multi-layer XCF is read as a multi-page image and a single layer is written, not the merged canvas. The order you add files is the order they play, so arrange the sequence before converting..apng.| What you upload | Result |
|---|---|
| One XCF | A valid but still PNG image — one frame is not a sequence, so no animation chunks are written |
| Several XCF files, Combine? = Single animation | One animated APNG, one frame per file, infinite loop |
| Several XCF files, Combine? = Individual files | One output per input |
| Any XCF with more than one layer | Only the bottom layer is rendered; upper layers are dropped |
| An XCF with transparency | Alpha is preserved — soft edges stay soft, not cut to a hard mask |
| Property | APNG | GIF |
|---|---|---|
| Colour per frame | Full colour, lossless | 256-colour palette |
| Transparency | 8-bit alpha, anti-aliased edges intact | 1-bit on/off, hard matte line |
| Gradients and soft shadows | Preserved | Band or dither visibly |
| Typical file size | Larger | Smaller, because of the palette reduction |
| Where unsupported | Shows the still image | Effectively always supported |
| Standard | W3C PNG Third Edition Recommendation, 24 June 2025, §4.9 | GIF89a, 1989 |
| Choose when | The artwork's colour and edges matter | Reach matters more than fidelity |
If you need the widest possible compatibility instead, XCF to GIF assembles the same set of files as a GIF; for a single flat picture, XCF to PNG is the simpler route.
Because a layered XCF is not composited before conversion — it is read as a multi-page image and only the first page, the bottom layer, is used. This is the single most common surprise on this page. Flatten the image in GIMP (Image ▸ Flatten Image) and save a copy before uploading, or export the composite as a PNG and convert that.
No. Layers are not turned into frames here; only the bottom one is read at all. To animate a layered file, export each layer to its own PNG or XCF from GIMP, then upload those files in the order you want them played with Combine? set to Single animation.
No — that is the expected result. A single image gives the assembler one frame, and one frame is not an animation, so it writes a plain lossless PNG under the .apng name. The file opens anywhere PNG is supported and keeps its transparency; it just does not move. Upload two or more files to get an actual loop.
Yes. XCF stores a per-pixel alpha channel and APNG supports full 8-bit alpha, so semi-transparent pixels and anti-aliased edges come through unchanged. We confirmed the transparent regions of a test XCF were still transparent in the finished file. That fidelity is the main argument for APNG over GIF here — GIF's single-bit transparency turns a soft edge into a jagged fringe.
Because XCF is a working format, not a delivery format. It mirrors GIMP's internal structures, it changes between GIMP versions, and outside GIMP almost nothing reads it reliably. Converting produces a file that any browser, chat client or image viewer can display without knowing anything about GIMP.
The APNG stage is lossless — the rendered frame is stored as-is, with no palette reduction and no lossy re-compression. The realistic sources of loss are elsewhere: rendering to 8 bits per channel, any resolution reduction you apply, and — the big one — layers above the bottom being dropped entirely, which is a content loss rather than a quality loss.
For frame-by-frame animation, 10 to 12 FPS reads as deliberate hand-drawn motion and keeps the file manageable — 12 FPS is the "on twos" rate, one drawing every second frame of 24 fps film. Drop to 2–5 FPS for a slideshow of stills, and go to 24–25 FPS only when you have enough distinct drawings to justify it; every extra frame is stored in full, so the file grows in step with the count.
Chrome 59 and later, Firefox 3 and later, Safari 8 and later, Edge 79 and later, and Opera 46 and later — roughly 95.94% of global traffic according to caniuse. Anything older shows the still image instead of animating, which the W3C PNG Third Edition Recommendation of 24 June 2025 defines as the correct fallback for a decoder that does not understand the animation chunks.