Initializing... drag & drop files here
Supports: JPG, JPEG, JFIF
APNG (Animated PNG) stores a moving image as an ordinary PNG plus three extra chunks that describe the animation, so it keeps full 24-bit colour and per-pixel alpha instead of GIF's 256-colour palette. This converter turns a set of JPG photos into one looping APNG: each image you upload becomes a frame, in upload order, at a frame rate you choose. It is the right target when your frames are photographic — skies, skin tones and gradients are exactly where GIF's palette breaks down.
.apng. Files upload over an encrypted connection, are processed on our servers, and are deleted automatically after a few hours. No sign-up, no watermark.| Property | Value |
|---|---|
| Standard | Part of the PNG Specification (Third Edition), a W3C Recommendation published 24 June 2025 |
| Origin | Written at Mozilla as "APNG 1.0" by Stuart Parmenter and Vladimir Vukićević; shipped in Firefox 3 and used unregistered for years before standardisation |
| Animation chunks | acTL (animation control, must precede IDAT), fcTL (per-frame control), fdAT (frame data) |
| Colour depth | Full truecolour, up to 16-bit per channel, same as PNG |
| Transparency | 8-bit per-pixel alpha |
| Compression | Lossless DEFLATE — no generational loss when frames are reassembled |
| Native browser support | 95.94% of tracked global traffic per caniuse: Chrome 59+, Edge 79+, Firefox 3+, Safari 8+, Opera 46+ |
| Fallback behaviour | A decoder without APNG support ignores the animation chunks and displays the static base image |
| File extension | .apng (also served as .png, since the container is a valid PNG) |
| Property | APNG | GIF |
|---|---|---|
| Colours per frame | 16.7 million (24-bit truecolour) | 256, from a palette |
| Transparency | 8-bit alpha, so soft edges work | 1-bit on/off, so edges get a halo |
| Photo gradients | Reproduced as-is | Banding and dithering noise |
| Compression | Lossless DEFLATE | Lossless, but after palette reduction |
| Typical size on photos | Larger — it is storing far more colour data | Smaller, because the palette threw data away |
| Typical size on flat graphics | Often smaller than the GIF | Competitive on 2-3 colour art |
| Where it is unsupported | Shows the first frame as a still PNG | Effectively universal |
Each JPG is decoded and written as a PNG frame, then the frames are assembled into the APNG with an exact per-frame delay of 1/framerate seconds and an infinite loop count. The finished file is then re-compressed with a Zopfli pass, which shrinks the DEFLATE streams without touching a single pixel. Because JPEG is lossy and PNG is lossless, the APNG preserves whatever quality your originals already had and adds no new compression artefacts — unless you resize, in which case the frames are resampled.
If your images are not all the same size, they cannot be stacked as-is: APNG frames share one canvas. The converter scales each frame to fit the largest frame's dimensions, centres it, and leaves the surrounding area transparent rather than filling it with white or black. Uploading a single image is a special case — with only one frame there is nothing to animate, so what you get back is effectively a static PNG carrying the .apng name.
At least two. APNG animation is driven by the acTL and fcTL chunks, which only make sense across multiple frames; a single uploaded image yields a static file that any viewer will show as a normal PNG. Add every frame in playback order before you convert.
Frame delay is uniform and derived from the Framerate dropdown: 10 FPS gives each frame 1/10 second, 1 FPS gives it a full second, 50 FPS gives it 1/50 second. There is no per-frame timing control on this page, so build the sequence with a constant cadence in mind.
It loops forever. The animation is written with a loop count of zero, which the PNG specification defines as infinite repetition, so the sequence restarts as soon as the last frame finishes.
Not from the photos themselves — JPEG has no alpha channel, so every pixel arrives opaque. The one exception is mixed-size uploads: smaller frames are centred on a common canvas and the surrounding margin stays transparent. If you need genuine transparency inside the artwork, start from files that have it with PNG to APNG.
No additional loss is introduced. APNG's DEFLATE compression is lossless, so it stores the decoded JPEG pixels exactly; the lossy damage your photos already carry from JPEG stays as it is but nothing new is added. Resizing is the only step that resamples pixels, so leave Image resolution on Keep original for a byte-faithful result.
Because it is keeping colour data GIF discards. GIF quantises every frame to 256 colours before compressing; APNG stores all 16.7 million and compresses losslessly. On photographic frames that difference is large. If size matters more than fidelity, JPG to GIF makes the opposite trade.
Chrome 59+, Edge 79+, Firefox 3+, Safari 8+ and Opera 46+ render APNG natively, covering about 96% of tracked global traffic. Internet Explorer and Opera Mini never supported it. In any decoder without support the file does not break — the animation chunks are ignored and the base image is displayed as a still PNG.
It is now official. APNG began at Mozilla in 2004 as a separate "APNG 1.0" document, shipped in Firefox 3, and then ran for roughly two decades as a de-facto format that browsers supported without any standards body having blessed it. That gap closed on 24 June 2025, when the W3C published the PNG Specification (Third Edition) as a Recommendation: it specifies the acTL, fcTL and fdAT animation chunks in the core PNG document and registers image/apng as an official media type alongside image/png. Anything you read describing APNG as a non-standard browser extension predates that.
Yes. Set "Combine?" to "Individual files" and each JPG is converted separately. Leave it on "Single animation" — the default — to merge every upload into one looping APNG.
Files are uploaded over an encrypted connection, processed on our servers, and deleted automatically after a few hours — no sign-up, no watermark, never shared or made public.