Initializing... drag & drop files here
Supports: BMP
Drop in a set of BMP bitmaps and this tool stacks them in order into a single animated PNG — each BMP becomes one frame of the loop. BMP stores raw pixels with no compression, so a folder of them is enormous and completely static; APNG wraps the same pictures in PNG's lossless DEFLATE compression, adds animation chunks, and produces one file that moves. Upload a single BMP and you simply get a clean static PNG — there is no animation to write, so no animation chunks are added. Files are uploaded over an encrypted connection, assembled on our servers, and deleted automatically after a few hours.
.apng. No sign-up, no watermark, and nothing is shared or made public.The Framerate dropdown is doing more work than it looks. Every frame gets the same on-screen time, and that time is simply one divided by the framerate — so the setting decides the pace and the total runtime, since an APNG built from N bitmaps runs for N ÷ FPS seconds.
| Framerate setting | Each frame shows for | 12 bitmaps run for | Suits |
|---|---|---|---|
| 1 FPS (Slideshow) | 1 second | 12 seconds | Photo slideshows, before/after pairs |
| 2 FPS (Slow) | 0.5 seconds | 6 seconds | Step-by-step diagrams |
| 5 FPS | 0.2 seconds | 2.4 seconds | Simple icon animation |
| 10 FPS (Recommended) | 0.1 seconds | 1.2 seconds | Loading spinners, stickers, UI loops |
| 15 FPS | ~0.067 seconds | 0.8 seconds | Hand-drawn animation |
| 25 FPS | 0.04 seconds | ~0.5 seconds | Screen-capture sequences |
| 30 FPS (Smooth) | ~0.033 seconds | 0.4 seconds | Smooth motion from rendered frames |
| 50 FPS (Max Speed) | 0.02 seconds | 0.24 seconds | Fast flicker effects |
Two practical notes. First, frame order comes from upload order, not from filename parsing, so name files frame-01.bmp, frame-02.bmp, frame-03.bmp and add them together — that way the list you see matches the loop you get. Second, resolution multiplies everything: each frame carries its own compressed pixel data, so doubling the pixel dimensions costs far more than adding a couple of extra frames does. If the output feels heavy, shrink the dimensions before you start trimming frames.
| Property | BMP (input) | APNG (output) |
|---|---|---|
| Origin | Microsoft's Windows device-independent bitmap | Proposed at Mozilla in 2004; folded into the W3C PNG specification, Third Edition (June 24, 2025) |
| Compression | Typically none — raw pixel data | Lossless DEFLATE, the same algorithm PNG uses |
| Animation | None — one still per file | Multiple frames plus acTL, fcTL, and fdAT animation chunks |
| Colour | 1-, 4-, 8-bit indexed through 24- and 32-bit | Full 24-bit colour, plus an 8-bit alpha channel |
| Transparency | Defined in the spec but rarely used in practice | Smooth 8-bit alpha, so edges anti-alias against any background |
| Typical size | About 3 bytes per pixel — a 1920x1080 bitmap is roughly 6 MB | A fraction of the combined bitmaps, since DEFLATE packs flat regions hard |
| Browser support | Not a web delivery format | About 95.9% of users: Chrome 59+, Firefox 3+, Safari 8+, Edge 79+, Opera |
| Behaviour when unsupported | n/a | Decoders that do not understand the animation chunks show the static first image |
| Best for | Editing sources, legacy Windows tooling, clipboard interchange | Animated logos, stickers, spinners, short UI loops |
Frames play in the order the files appear in the upload list, top to bottom. Because bitmaps carry no frame-number metadata, the reliable approach is to name them so they sort in sequence — frame-01.bmp, frame-02.bmp and so on, with leading zeros so 10 does not sort before 2 — and add them all in one go. The Framerate you pick then applies uniformly to every frame.
Frames divided by framerate. Twenty-four bitmaps at 10 FPS (Recommended) give a 2.4-second loop; the same twenty-four at 2 FPS (Slow) give twelve seconds. There is no per-frame timing control on this page, so if you need one frame to linger longer than the others, duplicate that bitmap in the upload list — two copies of the same frame at 10 FPS hold it on screen for 0.2 seconds.
Because BMP usually applies no compression at all. A 24-bit bitmap spends three bytes on every pixel regardless of content, so an 800x600 bitmap is about 1.44 MB and a 1920x1080 one is about 6.2 MB whether it shows a photograph or a blank white square. APNG stores the same pixels through PNG's lossless DEFLATE compression, which collapses flat colour and repeated patterns dramatically — graphics, screenshots, and line art shrink the most, photographic frames the least.
Not from the compression itself. APNG inherits PNG's lossless DEFLATE encoding, so there is no JPEG-style blocking or colour smearing in the output, and this page exposes no quality or palette slider that could quietly degrade it. The one way to lose detail here is deliberate: shrinking the output under Image resolution. Leave it on Keep original if you want the frames at their native size.
Roughly 95.9% of browsers worldwide, including Chrome 59+, Firefox 3+, Safari 8+, Edge 79+, and Opera, on both desktop and mobile. The failure mode is unusually gentle: because the animation lives in ancillary chunks that a plain PNG decoder ignores, anything that does not understand APNG displays the first frame as an ordinary static PNG rather than showing a broken image. If you need motion in genuinely ancient software, keep a BMP to GIF copy as a fallback.
It is a standard now. APNG began as a Mozilla proposal in 2004 and lived for years as a widely implemented but unofficial extension. It is now part of the W3C's Portable Network Graphics specification, Third Edition, published as a Recommendation on June 24, 2025, which defines the acTL animation-control, fcTL frame-control, and fdAT frame-data chunks and the backward-compatible fallback to the static image.
Either works. One bitmap produces a static PNG — useful when you simply want the bitmap losslessly compressed into the PNG family, though no animation chunks are written because there is no motion to describe. Several bitmaps become an animation. There is no minimum beyond one file and no fixed frame ceiling; the real constraint is upload size and time, since uncompressed bitmaps are large on the wire.
APNG itself carries a full 8-bit alpha channel, so semi-transparency survives where the source has it — but most BMP files in the wild are opaque 24-bit images with no alpha at all, in which case the output is simply opaque too. If transparency matters to your result, confirm the source really is a 32-bit RGBA bitmap before converting, or produce the alpha in an editor first. For a still transparent web image rather than an animation, convert BMP to PNG instead.
Your bitmaps are uploaded over an encrypted connection, assembled into the animation on our servers, and the uploads are deleted automatically after a few hours. There is no sign-up, no watermark on the output, and files are never shared or made public.