User Rating 0.0 โ˜…โ˜…โ˜…โ˜…โ˜…
Total Usage 0 times
Drop your APNG file here or click to browse · Max 50 MB
Leave empty to use source timing
Is this tool helpful?

Your feedback helps us improve.

โ˜… โ˜… โ˜… โ˜… โ˜…

About

APNG (Animated Portable Network Graphics) stores lossless frame sequences with alpha transparency, but video editors, legacy media players, and hardware decoders rarely support it. Feeding an APNG into a pipeline that expects AVI will silently fail or produce a single static frame. This tool parses the APNG binary structure, extracts every frame with its delay_num รท delay_den timing, and muxes them into a RIFF-AVI 1.0 container with uncompressed DIB frames. The output plays in VLC, Windows Media Player, and imports cleanly into NLE software. All processing runs in your browser. No file leaves your machine.

Limitations: the converter produces uncompressed AVI (BI_RGB), so output files are large. For a 256ร—256 animation with 100 frames, expect roughly 19 MB. Alpha channel is composited against a white background since AVI does not natively carry transparency. Frame timing is averaged to a constant FPS because AVI requires a fixed rate. Variable-delay APNGs will be approximated.

apng to avi apng converter avi converter animated png video converter browser converter client-side

Formulas

Each APNG frame carries a frame control chunk (fcTL) specifying delay as a rational number. The per-frame duration in seconds is:

tframe = delay_numdelay_den

If delay_den = 0, the spec mandates treating it as 100. The average FPS for the entire animation is computed as:

FPSavg = NNโˆ‘i=1 ti

where N is the total number of frames. AVI requires a constant frame rate stored as microseconds per frame in the avih header:

ฮผs_per_frame = 1,000,000FPSavg

Each uncompressed frame occupies W ร— H ร— 3 bytes (BGR24). Rows are stored bottom-up and padded to 4-byte boundaries:

stride = ceil(W ร— 3 รท 4) ร— 4

where W = width in pixels, H = height in pixels. The total movi list size is N ร— (stride ร— H + 8) bytes, where 8 accounts for each chunk's FourCC and size field.

Reference Data

PropertyAPNGAVI (Uncompressed)
ContainerPNG (extended)RIFF
CompressionDeflate (lossless)None (BI_RGB)
Alpha ChannelYes (8/16-bit)No (composited)
Frame RateVariable per frameConstant (fixed)
Max Resolution231 โˆ’ 1 px65535 ร— 65535 px
Color DepthUp to 48-bit + 16-bit ฮฑ24-bit BGR
Bit OrderBig-endianLittle-endian
Chunk Signature89 50 4E 4752 49 46 46
Animation ControlacTL chunkavih + strh headers
Frame DatafdAT / IDAT chunks00db DIB chunks
IndexSequential chunksidx1 index table
Browser SupportFirefox, Chrome, Edge, SafariVia plugin only
Typical UseWeb animations, stickersVideo editing, archival
StreamingProgressive decodeRequires full download
MetadatatEXt, iTXt chunksINFO LIST chunk
Loop ControlacTL num_plays fieldNo native loop flag
File Size (100 frames, 256ร—256)~500 KB~19 MB
SpecificationAPNG 1.0 (Mozilla)AVI RIFF (Microsoft, 1992)

Frequently Asked Questions

APNG uses deflate compression and stores only changed regions per frame via dispose and blend operations. The AVI output uses uncompressed BGR24 bitmaps (BI_RGB), meaning every pixel of every frame is stored raw. A 256ร—256 frame at 24-bit color is 196,608 bytes. Multiply by frame count and add headers. For downstream compression, import the AVI into FFmpeg or a video editor and re-encode to H.264 or VP9.
AVI 1.0 requires a single constant frame rate defined in the avih header as microseconds per frame. The converter computes the average FPS across all frames by summing individual delay_num/delay_den values. If you override FPS manually, that value is used instead. Frames that originally held longer will play faster, and vice versa. For precise variable timing, consider a container like MKV or MP4 instead.
AVI with BI_RGB codec does not support alpha. The converter composites each APNG frame against a solid white (#FFFFFF) background before writing BGR24 data. If your APNG uses transparency for overlay effects, the result will show white where transparency existed.
The converter enforces a 50 MB input limit and 2000 frames maximum to prevent browser memory exhaustion. Each extracted frame is held as an ImageData object (Wร—Hร—4 bytes). For a 512ร—512 animation with 500 frames, that is approximately 500 MB of raw pixel data in memory. If your browser tab crashes, reduce the frame count or resolution of the source APNG.
Yes. The FPS override field lets you set any value between 1 and 60. When set, the converter ignores all fcTL delay values and uses your specified rate. This is useful when your APNG has a delay_den of 0 (defaults to 100, giving 10 FPS) but you want smoother playback at 24 or 30 FPS.
No. The entire conversion pipeline - APNG parsing, frame extraction, canvas rendering, and AVI muxing - runs in a Web Worker inside your browser. The file never leaves your device. You can verify this by disconnecting from the internet before converting.