The basics
What is an MNG file?
When PNG was designed in 1995 as a free replacement for GIF, its authors left animation out to keep the format simple. MNG, Multiple-image Network Graphics, was the companion format for everything else: animations, sequences of images and composited scenes, built from the same chunks as PNG. The PNG Development Group approved MNG version 1.0 on 31 January 2001.
MNG aimed far beyond GIF. Frames could be lossless PNG images with full alpha transparency, or JPEG-compressed JNG images for photos. A file could loop sections, move and clip images, paste one image into another, magnify, and store only the changes between frames as delta-PNG images. In effect it was a small animation language.
That ambition is also why it faded. A complete MNG decoder was large and complicated, few programs supported it, and browsers removed what support they had. Today MNG is a legacy format: you'll meet it in old software, games and archives, while new animations use GIF, APNG, animated WebP or video.
Anatomy
What's inside an MNG file
There are no sample files on this page, so to show real bytes we made a three-frame 64 × 48 animation with ImageMagick from three PNG images: 1,009 bytes in all. An MNG file uses the same chunk layout as PNG: a 4-byte length, a 4-letter type, the data and a 4-byte CRC checksum. It starts with an MNG header chunk, ends with MEND, and in between mixes control chunks with complete PNG images.
8A 4D 4E 47 0D 0A 1A 0A
00 00 00 1C 4D 48 44 52
00 00 00 40 00 00 00 30 00 00 00 05 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 01
4C 90 B0 B3
00 00 00 0A 54 45 52 4D
03 00 00 00 00 01 7F FF FF FF
67 97 8B E9
00 00 00 01 73 52 47 42 00 AE CE 1C E9
offset chunk length contents
000053 IHDR 13 frame 1, an embedded PNG: 64 × 48,
00006C PLTE 84 8-bit palette (28 colours)
0000CC tIME 7
0000DF IDAT 141 the compressed pixels
000178 IEND 0 end of frame 1
000184 IHDR … IEND frame 2, built the same way
0002B5 IHDR … IEND frame 3
0003E5 MEND 0 end of the MNG:
00 00 00 00 4D 45 4E 44 21 20 F7 D5
end of file at 1,009 bytes- 1
8A 4D 4E 47 0D 0A 1A 0AThe signature
The PNG signature with
8AandMNGin place of89andPNG. The other bytes catch the same damage as in PNG: a stripped high bit, and line endings changed by a text-mode transfer. A JNG file starts with8BandJNG. - 2
MHDR: 00 00 00 40 00 00 00 30 00 00 00 05The MNG header
Always the first chunk, with 28 bytes of data: the frame size, 64 × 48 pixels, then the number of ticks per second, 5. With no other timing in the file, a viewer shows one frame per tick, so each frame stays up for 0.2 seconds.
- 3
00 00 00 00 00 00 00 00 00 00 00 01Counts and simplicity profile
The nominal layer count, frame count and play time are 0, meaning "not stated". The simplicity profile is 1: bit 0 says the profile is valid, and every other bit being 0 promises no complex features, no JNG, no delta images and no transparency to worry about. A decoder can check this before deciding whether it can play the file.
- 4
TERM: 03 00 00 00 00 01 7F FF FF FFWhat happens at the end
The termination chunk tells the viewer what to do after the last frame. Action 3 repeats the animation; the last four bytes,
7F FF FF FF, are how MNG writes infinity, so it loops forever, as a GIF with a loop count of 0 does. - 5
sRGB: 00A global chunk
An
sRGBchunk at the top level applies to every embedded image that doesn't carry its own colour information. A globalPLTEpalette can be shared the same way, which saves repeating it in every frame. - 6
IHDR … PLTE … IDAT … IENDEmbedded PNG images
Each frame is a complete PNG datastream without the PNG signature: header, palette, a
tIMEtimestamp, compressed pixels, end. Any PNG decoder can decode these pieces, which is how MNG reused the PNG libraries of its time. - 7
00 00 00 00 4D 45 4E 44MEND
An empty chunk that ends the MNG datastream, as
IENDends a PNG.
Under the hood
How an MNG file is put together
An MNG datastream starts with MHDR, ends with MEND, and in between holds objects (embedded images) and control chunks that say when and where to show them. The main chunks from the specification:
| Chunk | What it does |
|---|---|
MHDR | Header: frame size, ticks per second, nominal counts, simplicity profile |
TERM | What to do after the last frame: keep showing it, clear the display, show the first frame, or repeat |
BACK | Background colour or image |
LOOP, ENDL | Repeat the chunks between them a given number of times |
FRAM | Frame boundaries and timing: delays, timeouts, framing mode |
DEFI | Define an object: its number, position, visibility |
MOVE, CLIP, SHOW | Move objects, limit the area they draw in, show them again |
IHDR … IEND | An embedded PNG image |
JHDR … IEND | An embedded JNG (JPEG) image, optionally with an alpha channel |
BASI, DHDR | A base image and delta-PNG changes applied to it |
PAST, MAGN | Paste images into another; magnify an image |
PLTE, tRNS, sRGB… | Global palette, transparency and colour information shared by later images |
MEND | End of the MNG |
Timing works in ticks. MHDR gives the number of ticks per second, and FRAM chunks give delays in ticks. With no FRAM chunks, as in the example above, a viewer shows one frame per tick.
Profiles
MNG-LC and MNG-VLC: the simpler subsets
Because full MNG was so demanding, the PNG group defined two subsets that simpler decoders could support. The MHDR simplicity profile, a 32-bit field, tells a decoder which features a file uses before it starts.
| Profile | What it allows | Example profile values |
|---|---|---|
| MNG-VLC (very low complexity) | A plain sequence of PNG frames, each placed at the top-left corner of the frame. No JNG, no delta-PNG, no stored objects. LOOP may be ignored. | 65 (no transparency), 457, 473 (with JNG) |
| MNG-LC (low complexity) | Also allows what the specification calls simple MNG features, and transparency. Still no complex features, delta-PNG or stored object buffers; JNG only if flagged. | 459, 475 (with JNG) |
| Full MNG | Everything: object buffers, pasting, magnification, delta images, JNG. | Any, or 0 for "unspecified" |
The MNG files ImageMagick writes from a list of frames, like the example above, are simple sequences of this kind: their profile of 1 rules out every optional feature.
History
Why MNG lost to GIF and APNG
MNG briefly had a foothold in browsers: Netscape 6 and 7 and the Mozilla suite displayed it natively, as did early versions of KDE's Konqueror. On 3 June 2003, Mozilla removed MNG and JNG support (bug 195280), citing the size of the code and how little the format was used. The decision drew protests from MNG's developers and users, but it stuck, and no other major browser ever added MNG.
In 2004, two Mozilla developers, Stuart Parmenter and Vladimir Vukićević, proposed APNG instead: animation added to an ordinary PNG file with a few extra chunks, so old software still shows the first frame. The PNG Development Group rejected APNG as an official extension in 2007, but Firefox 3 shipped it in 2008, Chrome followed with version 59 in 2017, and the W3C's PNG third edition made it part of the PNG standard in 2025. MNG, meanwhile, became obsolete.
- Complexity: a complete MNG decoder was a large library; APNG adds only a handful of chunks to what a PNG decoder already does.
- Compatibility: an MNG file is unreadable to PNG software; an APNG file is still a valid PNG.
- Timing: by the time MNG was finished in 2001, animated GIF was already everywhere, and the GIF patents expired soon after.
Comparison
MNG vs GIF, APNG and animated WebP
| MNG | GIF | APNG | Animated WebP | |
|---|---|---|---|---|
| Colours | Millions, with full alpha | 256 per frame, on/off transparency | Millions, with full alpha | Millions, with full alpha |
| Photo frames | JPEG, as JNG | No | No | Yes, lossy |
| Readable by non-animated decoders | No | Yes, first frame | Yes, as a PNG | No |
| Browsers today | None | All | All current | All current |
| Status | Obsolete | Universal | Part of the PNG standard | Widely used |
For a new animation, use GIF where it must work everywhere, APNG (PNG) or WebP for better quality, or an MP4 video for anything long.
How to
How to open an MNG file and convert it to GIF or APNG
- View it: XnView, IrfanView (with its plug-ins) and KDE's Gwenview open MNG files; MPlayer plays them when built with libmng. No current browser displays them.
- Convert to GIF:
magick animation.mng animation.gifkeeps the frames and their timing, reduced to 256 colours per frame. - Extract the frames:
magick animation.mng frame-%02d.pngwrites one PNG per frame. - Make an APNG: extract the frames, then join them with ffmpeg, giving the frame rate:
ffmpeg -framerate 5 -i frame-%02d.png -plays 0 animation.apng. Rename the result to.pngif you like; it's a valid PNG either way. - Inspect one:
identify animation.mnglists the frames, and a hex dump shows the chunks, since each type is four readable letters.
Writing MNG
ImageMagick can still write MNG from PNG frames, for example magick -delay 20 -loop 0 frame-*.png -type TrueColor animation.mng. In our tests with ImageMagick 6.9, leaving out -type TrueColor failed with a palette error.
Troubleshooting
Common MNG problems
- Nothing shows in the browser. No current browser supports MNG. Convert it to GIF, APNG or WebP.
- Only one frame appears. The viewer reads MNG as a still image, or handles only part of the format. Try ImageMagick or XnView, or extract the frames.
- The file won't open at all. It may use full-MNG features, such as delta-PNG or JNG, that a simple decoder skips. The simplicity profile in
MHDRsays which ones. - Colours change after converting to GIF. GIF allows only 256 colours per frame and no partial transparency. Convert to APNG or WebP to keep them.
- Old decoders and untrusted files. Like any old, rarely used image library, an unmaintained MNG decoder is a risk with files from unknown sources. Convert them in an up-to-date tool.
Sample files
There are no sample MNG files on this page yet. To make one for testing, run magick -delay 20 -loop 0 frame-*.png -type TrueColor animation.mng with ImageMagick, using a few PNG images as frames.
Put it online
Have an MNG file? Give it a link.
Drop an MNG file on 99helpers and it gets its own web address to share. Browsers can't display MNG, so anyone who opens the link downloads the file; convert it to GIF or APNG if people should see the animation straight away.
Questions
MNG files, frequently asked
What is an MNG file?
An animation or multi-image file in Multiple-image Network Graphics format, built from PNG and JPEG (JNG) images. It was finished in 2001 as an alternative to animated GIF and is now obsolete.
How do I open an MNG file?
Use XnView, IrfanView with its plug-ins, Gwenview, or ImageMagick to convert it. Web browsers don't display MNG.
Do any browsers support MNG?
No current browser does. Netscape 6 and 7 and Mozilla did until support was removed in 2003; Firefox and every other current browser support APNG instead.
What's the difference between MNG and APNG?
MNG is a separate, complex format with its own signature. APNG adds a few animation chunks to a normal PNG, so software without APNG support still shows the first frame. APNG is now part of the PNG standard; MNG is obsolete.
How do I convert MNG to GIF?
With ImageMagick: magick animation.mng animation.gif. Frame timing is kept, but colours are reduced to 256 per frame.
What is a JNG file?
JPEG Network Graphics: a JPEG-compressed image in PNG-style chunks, with an optional alpha channel. It was defined alongside MNG and can be used for MNG frames; it's rarely seen on its own.
Is MNG lossless?
Frames stored as PNG images are lossless. Frames stored as JNG are JPEG-compressed and lossy.
Related formats
Other file types explained
Keep going
Related
Sources
- PNG Development Group: MNG Format Version 1.0
- MNG-LC (Low Complexity) Format Version 1.0
- MNG-VLC (Very Low Complexity) Format Version 1.0
- MNG developers: news and history from 2003 (Mozilla removal)
- Wikipedia: Multiple-image Network Graphics
- Wikipedia: APNG
Last reviewed 27 October 2026.