Convert PPM to APNG Online

Upload a PPM image and convert it to APNG with optional quality controls for smooth, shareable animated PNG output.

Initializing... drag & drop files here

Supports: PPM

OptionsAdvanced Options - Our defaults are optimized for the best results. We recommend you keeping the defaults unless you have a specific need.
Image resolution
Framerate
Framerate
Combine?
Select Single animation to combine all uploaded images into a single animation. Use Individual files to create a separate animation for each individual file.

PPM Frames to APNG: Which Animation Container Should You Target?

A folder of .ppm files is almost always a render, simulation or computer-vision pipeline writing one uncompressed frame at a time. Netpbm's own specification calls the layout "egregiously inefficient", and it is not exaggerating: every pixmap is a tiny ASCII header followed by raw RGB bytes, so a 480 x 360 frame is 518,415 bytes no matter what is in it. The short answer for that sequence is APNG if the frames are photographic, gradient-heavy or synthetic-smooth, and GIF only if you need a container older than 2017 to play it.

APNG vs GIF vs Animated WebP for a PPM Sequence

Property APNG (this page) GIF Animated WebP
Colour per frame Full 24-bit RGB 256-colour palette per frame Full 24-bit RGB
Frame compression Lossless (PNG deflate) Palette + LZW Lossy or lossless
Gradients and soft shading Held exactly Banded or dithered Held well
Transparency model 8-bit alpha 1-bit on/off 8-bit alpha
Timing resolution Exact rational delay Centiseconds Milliseconds
Global browser support (caniuse) 95.94% Effectively universal Broad in current browsers
Behaviour in a viewer that cannot decode it Shows the first frame as a normal PNG n/a Usually fails to render
Our 12-frame gradient test sequence 50,376 bytes 614,447 bytes

The last row is not a rounding difference. Palette formats have to approximate a smooth gradient with 256 colours plus dithering, and dither noise is expensive to compress; APNG simply stores the real pixels. On flat, low-colour frames the ordering reverses and GIF often wins, which is the honest reason both tools exist.

When APNG Is the Right Target

  • Your frames came out of a renderer, ray tracer, physics sim or shader — smooth gradients and soft shadows are exactly what a 256-colour palette destroys.
  • You want the frames back bit-for-bit later. APNG frame data is losslessly compressed, so nothing is thrown away on the way in.
  • You need a file that degrades gracefully. An APNG opened by something that does not know the format still shows frame one as an ordinary PNG rather than breaking.
  • You are embedding on a web page and want an <img> tag with no video element, no autoplay policy and no muted-attribute gymnastics.

When to Reach for GIF or WebP Instead

  • The frames are flat vector-style artwork with a handful of colours — a palette format will be smaller, and PPM to GIF is the direct route.
  • A destination refuses anything but GIF. Some older forum software, ad networks and chat clients still whitelist it by extension.
  • You want the smallest file and the destination is a modern browser — PPM to WebP beats both on size for most content, at the cost of a worse fallback story.

How to Convert PPM to APNG

  1. Upload Your PPM Frames: Drag and drop the pixmaps or click "+ Add Files". Order matters — the first file added becomes frame one. Both P3 (plain ASCII) and P6 (raw binary) pixmaps are accepted.
  2. Pick a Framerate: The Framerate dropdown opens on "10 FPS (Recommended)" and runs from "1 FPS (Slideshow)" up to "50 FPS (Max Speed)". Whatever you pick becomes an exact per-frame delay of 1/FPS seconds, so 10 FPS is 100 ms per frame.
  3. Set Combine and Image Resolution (Optional): Combine? opens on "Single animation", which is what merges your uploads into one APNG; switch it to "Individual files" to get one output per input instead. Image resolution stays on "Keep original" unless you set a percentage, preset or explicit width and height.
  4. Convert and Download: Click Convert and save the .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.

One Image In: What Actually Comes Out

This is the behaviour that surprises people, so here it is measured rather than described. The assembler collapses consecutive identical frames, and a single upload is internally duplicated to form a two-frame sequence — which the assembler immediately merges back into one.

Upload Frames written acTL animation chunk What you actually get
1 PPM 1 absent A plain static PNG carrying an .apng name — valid, viewable, but not animated
12 distinct PPMs 12 present (with 12 fcTL and 11 fdAT chunks) A real looping animation

So a single pixmap is not an error case, but it is not an animation either. If a still image is all you have and all you need, PPM to PNG is the honest destination. If you have a sequence, add all of it in one go — this tool has no way to append frames to an existing APNG afterwards.

Frequently Asked Questions

I uploaded one PPM and the result does not animate — is that a bug?

No, it is how the assembler behaves. A single image is duplicated into a two-frame sequence, and because those two frames are byte-identical the assembler merges them back into one and writes no animation control chunk. We reproduced this and confirmed the output contains no acTL, fcTL or fdAT chunks at all — it is a static PNG with an .apng extension. Animation requires two or more genuinely different pixmaps.

How long will my animation run at the default framerate?

Exactly the frame count divided by the framerate. The delay is written as a true rational value of 1/FPS rather than being rounded, so twelve frames at the default 10 FPS run for 1.2 seconds, and the same twelve at 25 FPS run for 0.48 seconds. There is no per-frame timing control — every frame gets the same delay.

Can I change how many times the APNG loops?

No. The loop count is fixed at infinite and is not exposed as an option, so the animation repeats until the page or viewer is closed. If you need a play-once file you will need to edit the acTL num_plays field with a dedicated APNG tool afterwards, or target a video container instead.

Do all my PPM frames have to be the same size?

No, but mismatched frames get normalised. The assembler cannot resize, so differently-sized uploads are first fitted onto one common canvas sized to the largest width and largest height in the set. Each smaller frame is scaled with its aspect ratio intact, centred, and padded out — never cropped or stretched. The padding is transparent, which APNG stores natively as 8-bit alpha, so it stays transparent in the final file rather than becoming a black or white bar.

Why is the APNG so much smaller than a GIF of the same frames?

Because palette quantization backfires on smooth content. We ran the same twelve 480 x 360 gradient frames through both makers this site uses — apngasm for APNG and gifski for GIF — and got 50,376 bytes of APNG against 614,447 bytes of GIF. GIF has to squeeze full-colour gradients into 256 palette entries and cover the error with dithering, and that dither noise is far harder to compress than the original smooth pixels. Reverse the content to flat two-colour artwork and GIF usually wins instead.

Will an APNG play everywhere a GIF does?

Almost, but not quite. caniuse currently puts APNG at 95.94% of tracked global browser usage — Chrome 59+, Firefox, Safari 8+, Edge 79+ and Opera 46+ all animate it. The gaps are Internet Explorer and Opera Mini, plus some desktop image viewers and chat previews that treat it as an unknown extension. The fallback is benign: anything that can read a PNG but not the animation chunks displays frame one as a still image.

Does converting to APNG lose any of my PPM's colour data?

For an ordinary 8-bit pixmap, no — APNG frames are compressed losslessly and this page exposes no quality, palette or colour-reduction control, so the RGB values arrive intact. There is one caveat for high-precision sources: Netpbm allows a maxval up to 65535, which means 16 bits per channel, and the pipeline normalises every uploaded image to an 8-bit PNG before assembly. We checked a maxval-65535 pixmap through that step and the resulting PNG reported a bit depth of 8, so a 16-bit pixmap is reduced to 8 bits per channel even though APNG itself could hold more. Frames larger than 4096 pixels on the long edge are also scaled down to fit that limit.

How are my files handled, and how long are they kept?

Your pixmaps are uploaded over an encrypted connection and assembled on our servers. Files are deleted automatically after a few hours, there is no sign-up and no watermark, and nothing is shared or made public.

Rate Convert PPM to APNG Online Tool

Rating: 0.0 / 5 - 1 reviews