Portable Network Graphics (PNG, officially pronounced
, colloquially pronounced ) is a
raster-graphics file
format
Format may refer to:
Printing and visual media
* Text formatting, the typesetting of text elements
* Paper formats, or paper size standards
* Newspaper format, the size of the paper page
Computing
* File format, particular way that informati ...
that supports
lossless data compression. PNG was developed as an improved, non-patented replacement for
Graphics Interchange Format
The Graphics Interchange Format (GIF; or , see pronunciation) is a bitmap image format that was developed by a team at the online services provider CompuServe led by American computer scientist Steve Wilhite and released on 15 June 1987. ...
(GIF) — unofficially, the initials PNG stood for the
recursive acronym "PNG's not GIF".
PNG supports palette-based images (with palettes of 24-bit
RGB or 32-bit
RGBA colors),
grayscale images (with or without an
alpha channel for transparency), and full-color non-palette-based RGB or RGBA images. The PNG working group designed the format for transferring images on the
Internet
The Internet (or internet) is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a ''internetworking, network of networks'' that consists ...
, not for professional-quality print graphics; therefore non-RGB
color space
A color space is a specific organization of colors. In combination with color profiling supported by various physical devices, it supports reproducible representations of colorwhether such representation entails an analog or a digital representa ...
s such as
CMYK are not supported. A PNG file contains a single image in an extensible structure of ''chunks'', encoding the basic
pixels and other information such as textual comments and
integrity checks documented in
RFC
RFC may refer to:
Computing
* Request for Comments, a memorandum on Internet standards
* Request for change, change management
* Remote Function Call, in SAP computer systems
* Rhye's and Fall of Civilization, a modification for Sid Meier's Civ ...
2083.
PNG files use the
file extension PNG
or
png
and have been assigned the
MIME media type
image/png
.
PNG was published as
informational RFC 2083 in March 1997 and as an
ISO/IEC 15948 standard in 2004.
History and development
The motivation for creating the PNG format was the realization that, on 28 December 1994, the
Lempel–Ziv–Welch (LZW)
data compression algorithm used in the
Graphics Interchange Format
The Graphics Interchange Format (GIF; or , see pronunciation) is a bitmap image format that was developed by a team at the online services provider CompuServe led by American computer scientist Steve Wilhite and released on 15 June 1987. ...
(GIF) format was
patent
A patent is a type of intellectual property that gives its owner the legal right to exclude others from making, using, or selling an invention for a limited period of time in exchange for publishing an sufficiency of disclosure, enabling disclo ...
ed by
Unisys. The patent required that all software supporting GIF pay royalties, leading to a flurry of criticism from
Usenet users. One of them was Thomas Boutell, who on 4 January 1995 posted a precursory discussion thread on the
Usenet newsgroup "comp.graphics" in which he devised a plan for a free alternative to GIF. Other users in that thread put forth many propositions that would later be part of the final file format. Oliver Fromme, author of the popular
JPEG
JPEG ( ) is a commonly used method of lossy compression for digital images, particularly for those images produced by digital photography. The degree of compression can be adjusted, allowing a selectable tradeoff between storage size and imag ...
viewer
QPEG, proposed the PING name, eventually becoming PNG, a
recursive acronym meaning ''PING is not GIF'', and also the
.png
extension. Other suggestions later implemented included the
deflate compression algorithm and
24-bit color support, the lack of the latter in GIF also motivating the team to create their file format. The group would become known as the PNG Development Group, and as the discussion rapidly expanded, it later used a mailing list associated with a
CompuServe forum.
The full specification of PNG was released under the approval of
W3C on 1 October 1996, and later as
RFC
RFC may refer to:
Computing
* Request for Comments, a memorandum on Internet standards
* Request for change, change management
* Remote Function Call, in SAP computer systems
* Rhye's and Fall of Civilization, a modification for Sid Meier's Civ ...
2083 on 15 January 1997. The specification was revised on 31 December 1998 as version 1.1, which addressed technical problems for
gamma
Gamma (uppercase , lowercase ; ''gámma'') is the third letter of the Greek alphabet. In the system of Greek numerals it has a value of 3. In Ancient Greek, the letter gamma represented a voiced velar stop . In Modern Greek, this letter re ...
and
color correction. Version 1.2, released on 11 August 1999, added the
iTXt
chunk as the specification's only change, and a reformatted version of 1.2 was released as a second edition of the W3C standard on 10 November 2003,
and as an International Standard
ISO/IEC 15948:2004 on 3 March 2004.
Although GIF allows for
animation, it was decided that PNG should be a single-image format. In 2001, the developers of PNG published the
Multiple-image Network Graphics (MNG) format, with support for animation. MNG achieved moderate application support, but not enough among mainstream web browsers and no usage among web site designers or publishers. In 2008, certain
Mozilla developers published the
Animated Portable Network Graphics (APNG) format with similar goals. APNG is a format that is natively supported by
Gecko
Geckos are small, mostly carnivorous lizards that have a wide distribution, found on every continent except Antarctica. Belonging to the infraorder Gekkota, geckos are found in warm climates throughout the world. They range from .
Geckos ar ...
- and
Presto
Presto may refer to:
Computing
* Presto (browser engine), an engine previously used in the Opera web browser
* Presto (operating system), a Linux-based OS by Xandros
* Presto (SQL query engine), a distributed query engine
* Presto (animation s ...
-based web browsers and is also commonly used for thumbnails on Sony's
PlayStation Portable
The PlayStation Portable (PSP) is a handheld game console developed and marketed by Sony Computer Entertainment. It was first released in Japan on December 12, 2004, in North America on March 24, 2005, and in PAL regions on September 1, 2005, ...
system (using the normal PNG file extension). In 2017, Chromium based browsers adopted APNG support. In January 2020,
Microsoft Edge became
Chromium
Chromium is a chemical element with the symbol Cr and atomic number 24. It is the first element in group 6. It is a steely-grey, lustrous, hard, and brittle transition metal.
Chromium metal is valued for its high corrosion resistance and h ...
based, thus inheriting support for APNG. With this all major browsers now support APNG.
PNG Working Group
The original PNG specification was authored by an ad hoc group of
computer graphics
Computer graphics deals with generating images with the aid of computers. Today, computer graphics is a core technology in digital photography, film, video games, cell phone and computer displays, and many specialized applications. A great deal ...
experts and enthusiasts. Discussions and decisions about the format were conducted by email. The original authors listed on RFC 2083 are:
*Editor:
Thomas Boutell
The GD Graphics Library is a graphics software library by Thomas Boutell and others for dynamically manipulating images. Its native programming language is ANSI C, but it has interfaces for many other programming languages. It can create GIFs, JP ...
*Contributing Editor:
Tom Lane
*Authors (in alphabetical order by last name):
Mark Adler,
Thomas Boutell
The GD Graphics Library is a graphics software library by Thomas Boutell and others for dynamically manipulating images. Its native programming language is ANSI C, but it has interfaces for many other programming languages. It can create GIFs, JP ...
,
Christian Brunschen
Christians () are people who follow or adhere to Christianity, a monotheistic Abrahamic religion based on the life and teachings of Jesus Christ. The words ''Christ'' and ''Christian'' derive from the Koine Greek title ''Christós'' (Χρισ ...
,
Adam M. Costello
Adam; el, Ἀδάμ, Adám; la, Adam is the name given in Genesis 1-5 to the first human. Beyond its use as the name of the first man, ''adam'' is also used in the Bible as a pronoun, individually as "a human" and in a collective sense as " ...
,
Lee Daniel Crocker,
Andreas Dilger,
Oliver Fromme,
Jean-loup Gailly,
Chris Herborth,
Aleks Jakulin
ALEKS (Assessment and Learning in Knowledge Spaces) is an online tutoring and assessment program that includes course material in mathematics, chemistry, introductory statistics, and business.
Rather than being based on numerical test scores, ...
,
Neal Kettler,
Tom Lane,
Alexander Lehmann
Alexander is a male given name. The most prominent bearer of the name is Alexander the Great, the king of the Ancient Greek kingdom of Macedonia who created one of the largest empires in ancient history.
Variants listed here are Aleksandar, Al ...
,
Chris Lilley, Dave Martindale,
Owen Mortensen,
Keith S. Pickens
Keith may refer to:
People and fictional characters
* Keith (given name), includes a list of people and fictional characters
* Keith (surname)
* Keith (singer), American singer James Keefer (born 1949)
* Baron Keith, a line of Scottish barons ...
,
Robert P. Poole
The name Robert is an ancient Germanic given name, from Proto-Germanic "fame" and "bright" (''Hrōþiberhtaz''). Compare Old Dutch ''Robrecht'' and Old High German ''Hrodebert'' (a compound of '' Hruod'' ( non, Hróðr) "fame, glory, honou ...
,
Glenn Randers-Pehrson Glenn may refer to:
Name or surname
* Glenn (name)
* John Glenn, U.S. astronaut
Cultivars
* Glenn (mango)
* a 6-row barley variety
Places
In the United States:
* Glenn, California
* Glenn County, California
* Glenn, Georgia, a settlem ...
,
Greg Roelofs Greg is a masculine given name, and often a shortened form of the given name Gregory. Greg (more commonly spelled " Gregg") is also a surname.
People with the name
*Greg Abbott (disambiguation), multiple people
* Greg Abel (born 1961/1962), Canad ...
, Willem van Schaik,
Guy Schalnat
Guy or GUY may refer to:
Personal names
* Guy (given name)
* Guy (surname)
* That Guy (...), the New Zealand street performer Leigh Hart
Places
* Guy, Alberta, a Canadian hamlet
* Guy, Arkansas, US, a city
* Guy, Indiana, US, an unincorp ...
,
Paul Schmidt,
Tim Wegner,
Jeremy Wohl
File format
File header
A PNG file starts with an 8-
byte
The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable unit ...
signature (refer to hex editor image on the right):
"Chunks" within the file
After the header, comes a series of
chunks, each of which conveys certain information about the image. Chunks declare themselves as ''critical'' or ''ancillary'', and a program encountering an ancillary chunk that it does not understand can safely ignore it. This chunk-based storage layer structure, similar in concept to a
container format
A container format (informally, sometimes called a wrapper) or metafile is a file format that allows multiple data streams to be embedded into a single file, usually along with metadata for identifying and further detailing those streams. Notab ...
or to
Amigas
IFF
In logic and related fields such as mathematics and philosophy, "if and only if" (shortened as "iff") is a biconditional logical connective between statements, where either both statements are true or both are false.
The connective is bicondi ...
, is designed to allow the PNG format to be extended while maintaining compatibility with older versions—it provides
forward compatibility, and this same file structure (with different signature and chunks) is used in the associated
MNG,
JNG, and
APNG formats.
A chunk consists of four parts: length (4 bytes,
big-endian), chunk type/name (4 bytes), chunk data (length bytes) and
CRC (cyclic redundancy code/checksum; 4 bytes
). The CRC is a network-byte-order
CRC-32 computed over the chunk type and chunk data, but not the length.
Chunk types are given a four-letter
case sensitive ASCII type/name; compare
FourCC. The case of the different letters in the name (bit 5 of the numeric value of the character) is a
bit field that provides the
decoder with some information on the nature of chunks it does not recognize.
The case of the first letter indicates whether the chunk is critical or not. If the first letter is uppercase, the chunk is critical; if not, the chunk is ancillary. Critical chunks contain information that is necessary to read the file. If a decoder encounters a critical chunk it does not recognize, it must abort reading the file or supply the user with an appropriate warning.
The case of the second letter indicates whether the chunk is "public" (either in the specification or the registry of special-purpose public chunks) or "private" (not standardised). Uppercase is public and lowercase is private. This ensures that public and private chunk names can never conflict with each other (although two private chunk names could conflict).
The third letter must be uppercase to conform to the PNG specification. It is reserved for future expansion. Decoders should treat a chunk with a lower case third letter the same as any other unrecognised chunk.
The case of the fourth letter indicates whether the chunk is safe to copy by editors that do not recognize it. If lowercase, the chunk may be safely copied regardless of the extent of modifications to the file. If uppercase, it may only be copied if the modifications have not touched any critical chunks.
Critical chunks
A decoder must be able to interpret critical chunks to read and render a PNG file.
*
IHDR
must be the first chunk; it contains (in this order) the image's
**width (4 bytes)
**height (4 bytes)
**bit depth (1 byte, values 1, 2, 4, 8, or 16)
**color type (1 byte, values 0, 2, 3, 4, or 6)
**compression method (1 byte, value 0)
**filter method (1 byte, value 0)
**interlace method (1 byte, values 0 "no interlace" or 1 "
Adam7 interlace") (13 data bytes total).
As stated in the
World Wide Web Consortium, bit depth is defined as "the number of bits per sample or per palette index (not per pixel)".
*
PLTE
contains the
palette
Palette may refer to:
* Cosmetic palette, an archaeological form
* Palette, another name for a color scheme
* Palette (painting), a wooden board used for mixing colors for a painting
** Palette knife, an implement for painting
* Palette (company), ...
: a list of colors.
*
IDAT
contains the image, which may be split among multiple IDAT chunks. Such splitting increases filesize slightly, but makes it possible to generate a PNG in a streaming manner. The IDAT chunk contains the actual image data, which is the output stream of the compression algorithm.
*
IEND
marks the image end; the data field of the IEND chunk has 0 bytes/is empty.
The
PLTE
chunk is essential for color type 3 (indexed color). It is optional for color types 2 and 6 (truecolor and truecolor with alpha) and it must not appear for color types 0 and 4 (grayscale and grayscale with alpha).
Ancillary chunks
Other image attributes that can be stored in PNG files include
gamma
Gamma (uppercase , lowercase ; ''gámma'') is the third letter of the Greek alphabet. In the system of Greek numerals it has a value of 3. In Ancient Greek, the letter gamma represented a voiced velar stop . In Modern Greek, this letter re ...
values, background color, and textual
metadata
Metadata is "data that provides information about other data", but not the content of the data, such as the text of a message or the image itself. There are many distinct types of metadata, including:
* Descriptive metadata – the descriptive ...
information. PNG also supports
color management through the inclusion of
ICC color profiles
In color management, an ICC profile is a set of data that characterizes a color input or output device, or a color space, according to standards promulgated by the International Color Consortium (ICC). Profiles describe the color attributes of a ...
.
*
bKGD
gives the default background color. It is intended for use when there is no better choice available, such as in standalone image viewers (but not web browsers; see below for more details).
*
cHRM
gives the
chromaticity coordinates of the display
primaries and
white point.
*
dSIG
is for storing digital signatures.
*
eXIf
stores
Exif metadata.
*
gAMA
specifies
gamma
Gamma (uppercase , lowercase ; ''gámma'') is the third letter of the Greek alphabet. In the system of Greek numerals it has a value of 3. In Ancient Greek, the letter gamma represented a voiced velar stop . In Modern Greek, this letter re ...
. The gAMA chunk contains only 4 bytes, and its value represents the gamma value multiplied by 100,000; for example, the gamma value 1/3.4 calculates to 29411.7647059 ((1/3.4)*(100,000)) and is converted to an integer (29412) for storage.
*
hIST
can store the histogram, or total amount of each color in the image.
*
iCCP
is an
ICC color profile
In color management, an ICC profile is a set of data that characterizes a color input or output device, or a color space, according to standards promulgated by the International Color Consortium (ICC). Profiles describe the color attributes of ...
.
*
iTXt
contains a keyword and
UTF-8 text, with encodings for possible compression and translations marked with
language tag
An IETF BCP 47 language tag is a standardized code or tag that is used to identify human languages in the Internet. The tag structure has been standardized by the Internet Engineering Task Force (IETF) in ''Best Current Practice (BCP) 47''; the su ...
. The
Extensible Metadata Platform
The Extensible Metadata Platform (XMP) is an ISO standard, originally created by Adobe Systems Inc., for the creation, processing and interchange of standardized and custom metadata for digital documents and data sets.
XMP standardizes a data ...
(XMP) uses this chunk with a keyword 'XML:com.adobe.xmp'
*
pHYs
holds the intended pixel size (or pixel aspect ratio); the pHYs contains "Pixels per unit, X axis" (4 bytes), "Pixels per unit, Y axis" (4 bytes), and "Unit specifier" (1 byte) for a total of 9 bytes.
*
sBIT
(significant bits) indicates the color-accuracy of the source data; this chunk contains a total of between 1 and 5 bytes, depending on the color type.
*
sPLT
suggests a palette to use if the full range of colors is unavailable.
*
sRGB
indicates that the standard
sRGB color space is used; the sRGB chunk contains only 1 byte, which is used for "rendering intent" (4 values—0, 1, 2, and 3—are defined for rendering intent).
*
sTER
stereo-image indicator chunk for
stereoscopic
Stereoscopy (also called stereoscopics, or stereo imaging) is a technique for creating or enhancing the depth perception, illusion of depth in an image by means of stereopsis for binocular vision. The word ''stereoscopy'' derives . Any stere ...
images.
*
tEXt
can store text that can be represented in
ISO/IEC 8859-1
ISO/IEC 8859-1:1998, ''Information technology — 8-bit single-byte coded graphic character sets — Part 1: Latin alphabet No. 1'', is part of the ISO/IEC 8859 series of ASCII-based standard character encodings, first edition published in ...
, with one
key-value pair for each chunk. The "key" must be between 1 and 79 characters long. Separator is a null character. The "value" can be any length, including zero up to the maximum permissible chunk size minus the length of the keyword and separator. Neither "key" nor "value" can contain null character. Leading or trailing spaces are also disallowed.
*
tIME
stores the time that the image was last changed.
*
tRNS
contains transparency information. For indexed images, it stores alpha channel values for one or more palette entries. For truecolor and grayscale images, it stores a single pixel value that is to be regarded as fully transparent.
*
zTXt
contains compressed text (and a compression method marker) with the same limits as
tEXt
.
The lowercase first letter in these chunks indicates that they are not needed for the PNG specification. The lowercase last letter in some chunks indicates that they are safe to copy, even if the application concerned does not understand them.
Pixel format
Pixels in PNG images are numbers that may be either indices of sample data in the
palette
Palette may refer to:
* Cosmetic palette, an archaeological form
* Palette, another name for a color scheme
* Palette (painting), a wooden board used for mixing colors for a painting
** Palette knife, an implement for painting
* Palette (company), ...
or the sample data itself. The palette is a separate table contained in the PLTE chunk. Sample data for a single
pixel consists of a tuple of between one and four numbers. Whether the pixel data represents palette indices or explicit sample values, the numbers are referred to as
channels and every number in the image is encoded with an identical format.
The permitted formats encode each number as an unsigned integer value using a fixed number of bits, referred to in the PNG specification as the ''bit depth''. Notice that this is not the same as
color depth, which is commonly used to refer to the total number of bits in each pixel, not each channel. The permitted bit depths are summarized in the table along with the total number of bits used for each pixel.
The number of channels depends on whether the image is grayscale or color and whether it has an
alpha channel. PNG allows the following combinations of channels, called the ''color type''.

The color type is specified as an 8-bit value however only the low 3 bits are used and, even then, only the five combinations listed above are permitted. So long as the color type is valid it can be considered as a bit field as summarized in the adjacent table:
* bit value 1: the image data stores palette indices. This is only valid in combination with bit value 2;
* bit value 2: the image samples contain three channels of data encoding
trichromatic color
Color (American English) or colour (British English) is the visual perceptual property deriving from the spectrum of light interacting with the photoreceptor cells of the eyes. Color categories and physical specifications of color are assoc ...
s, otherwise the image samples contain one channel of data encoding
relative luminance,
* bit value 4: the image samples also contain an alpha channel expressed as a linear measure of the opacity of the pixel. This is not valid in combination with bit value 1.
With indexed color images, the palette always stores trichromatic colors at a depth of 8 bits per channel (24 bits per palette entry). Additionally, an optional list of 8-bit alpha values for the palette entries may be included; if not included, or if shorter than the palette, the remaining palette entries are assumed to be opaque. The palette must not have more entries than the image bit depth allows for, but it may have fewer (for example, if an image with 8-bit pixels only uses 90 colors then it does not need palette entries for all 256 colors). The palette must contain entries for all the pixel values present in the image.
The standard allows indexed color PNGs to have 1, 2, 4 or 8 bits per pixel; grayscale images with no alpha channel may have 1, 2, 4, 8 or 16 bits per pixel. Everything else uses a bit depth per channel of either 8 or 16. The combinations this allows are given in the table above. The standard requires that decoders can read all supported color formats, but many image editors can only produce a small subset of them.
Transparency of image
PNG offers a variety of transparency options. With true-color and grayscale images either a single pixel value can be declared as transparent or an
alpha channel can be added (enabling any percentage of partial transparency to be used). For paletted images, alpha values can be added to palette entries. The number of such values stored may be less than the total number of palette entries, in which case the remaining entries are considered fully opaque.
The scanning of pixel values for binary transparency is supposed to be performed before any color reduction to avoid pixels becoming unintentionally transparent. This is most likely to pose an issue for systems that can decode 16-bits-per-channel images (as is required for compliance with the specification) but only output at 8 bits per channel (the norm for all but the highest end systems).
Alpha ''storage'' can be "associated" ("
premultiplied") or "unassociated", but PNG standardized
on "unassociated" ("non-premultiplied") alpha, which means that imagery is not alpha ''encoded''; the emissions represented in RGB are not the emissions at the pixel level. This means that the over operation will multiply the RGB emissions by the alpha, and cannot represent emission and occlusion properly.
Compression


PNG uses a 2-stage compression process:
* pre-compression: filtering (prediction)
* compression:
DEFLATE
PNG uses
DEFLATE, a non-patented
lossless data compression algorithm involving a combination of
LZ77 and
Huffman coding.
Permissively-licensed DEFLATE implementations, such as
zlib, are widely available.
Compared to formats with
lossy compression such as JPEG, choosing a compression setting higher than average delays processing, but often does not result in a significantly smaller file size.
Filtering

Before DEFLATE is applied, the data is transformed via a prediction method: a single ''filter method'' is used for the entire image, while for each image line, a ''filter type'' is chosen to transform the data to make it more efficiently compressible. The filter type used for a scanline is prepended to the scanline to enable inline decompression.
There is only one filter method in the current PNG specification (denoted method 0), and thus in practice the only choice is which filter type to apply to each line. For this method, the filter predicts the value of each pixel based on the values of previous neighboring pixels, and subtracts the predicted color of the pixel from the actual value, as in
DPCM. An image line filtered in this way is often more compressible than the raw image line would be, especially if it is similar to the line above, since the differences from prediction will generally be clustered around 0, rather than spread over all possible image values. This is particularly important in relating separate rows, since DEFLATE has no understanding that an image is a 2D entity, and instead just sees the image data as a stream of bytes.
There are five filter types for filter method 0; each type predicts the value of each byte (of the image data before filtering) based on the corresponding byte of the pixel to the left (''A''), the pixel above (''B''), and the pixel above and to the left (''C'') or some combination thereof, and encodes the ''difference'' between the predicted value and the actual value. Filters are applied to byte values, not pixels; pixel values may be one or two bytes, or several values per byte, but never cross byte boundaries. The filter types are:
The Paeth filter is based on an algorithm by
Alan W. Paeth
Alan W. Paeth (11 May 1956 - 3 June 2018) was a Canadian computer scientist and author.
Life and education
Alan William Paeth was born on May 11, 1956 in Seattle, Washington. He obtained a Bachelor's degree in Computer Science from Caltech and hi ...
.
Compare to the version of
DPCM used in
lossless JPEG, and to the
discrete wavelet transform using 1×2, 2×1, or (for the Paeth predictor) 2×2 windows and
Haar wavelets.
Compression is further improved by choosing filter types adaptively on a line-by-line basis. This improvement, and a heuristic method of implementing it commonly used by PNG-writing software, were created by
Lee Daniel Crocker, who tested the methods on many images during the creation of the format; the choice of filter is a component of file size optimization, as discussed below.
If interlacing is used, each stage of the interlacing is filtered separately, meaning that the image can be progressively rendered as each stage is received; however, interlacing generally makes compression less effective.
Interlacing

PNG offers an optional 2-dimensional, 7-pass
interlacing scheme—the
Adam7 algorithm. This is more sophisticated than GIF's 1-dimensional, 4-pass scheme, and allows a clearer low-resolution image to be visible earlier in the transfer, particularly if interpolation algorithms such as
bicubic interpolation are used.
However, the 7-pass scheme tends to reduce the data's compressibility more than simpler schemes.
Animation

PNG itself does not support animation.
MNG is an extension to PNG that does; it was designed by members of the PNG Group. MNG shares PNG's basic structure and chunks, but it is significantly more complex and has a different file signature, which automatically renders it incompatible with standard PNG decoders. This means that most web browsers and applications either never supported MNG or dropped support for it.
The complexity of MNG led to the proposal of
APNG by developers at the Mozilla Foundation. It is based on PNG, supports animation and is simpler than MNG. APNG offers fallback to single-image display for PNG decoders that do not support APNG. Today, the APNG format is supported by all major web browsers.
APNG is supported in
Firefox 3.0 and up,
Pale Moon (all versions), and
Safari
A safari (; ) is an overland journey to observe wild animals, especially in eastern or southern Africa. The so-called "Big Five" game animals of Africa – lion, leopard, rhinoceros, elephant, and Cape buffalo – particularly form an importa ...
8.0 and up. Chromium 59.0 added APNG support, followed by Google Chrome.
Opera supported APNG in versions 10–12.1, but support lapsed in version 15 when it switched to the
Blink rendering engine; support was re-added in Opera 46 (inherited from Chromium 59).
Microsoft Edge has supported APNG since version 79.0, when it switched to a Chromium-based engine.
The PNG Group decided in April 2007 not to embrace APNG. Several alternatives were under discussion, including ANG, aNIM/mPNG, "PNG in GIF" and its subset "RGBA in GIF". However, currently only APNG has widespread support.
Examples
Displayed in the fashion of
hex editors, with on the left side byte values shown in
hex format, and on the right side their equivalent characters from
ISO-8859-1
ISO/IEC 8859-1:1998, ''Information technology — 8-bit single-byte coded graphic character sets — Part 1: Latin alphabet No. 1'', is part of the ISO/IEC 8859 series of ASCII-based standard character encodings, first edition published in 1 ...
with unrecognized and control characters replaced with periods. Additionally the PNG signature and individual chunks are marked with colors. Note they are easy to identify because of their human readable type names (in this example PNG, IHDR, IDAT, and IEND).
Advantages
Reasons to use this International Standard may be:
*Portability: Transmission is independent of the software and hardware platform.
*Completeness: it's possible to represent truecolor, indexed-color, and greyscale images.
*Coding and decoding in series: allows to generate and read data streams in series, that is, the format of the data stream is used for the generation and visualization of images at the moment through serial communication.
*Progressive presentation: to be able to transmit data flows that are initially an approximation of the entire image and progressively they improve as the data flow is received.
*Soundness to transmission errors: detects the transmission errors of the data stream correctly.
*Losslessness: No loss: filtering and compression preserve all information.
*Efficiency: any progressive image presentation, compression and filtering seeks efficient decoding and presentation.
*Compression: images can be compressed efficiently and consistently.
*Easiness: the implementation of the standard is easy.
*Interchangeability: any PNG decoder that follows the standards can read all PNG data streams.
*Flexibility: allows future extensions and private additions without affecting the previous point.
*Freedom of legal restrictions: the algorithms used are free and accessible.
Comparison with other file formats
Graphics Interchange Format (GIF)
* On small images,
GIF
The Graphics Interchange Format (GIF; or , see pronunciation) is a bitmap image format that was developed by a team at the online services provider CompuServe led by American computer scientist Steve Wilhite and released on 15 June 1987. ...
can achieve greater compression than PNG (see the
section on filesize, below).
* On most images, except for the above case, a GIF file has a larger size than an indexed PNG image.
* PNG gives a much wider range of transparency options than GIF, including
alpha channel transparency.
* Whereas GIF is limited to 8-bit
indexed color, PNG gives a much wider range of color depths, including 24-bit (8 bits per channel) and 48-bit (16 bits per channel)
truecolor, allowing for greater color precision, smoother fades, etc. When an alpha channel is added, up to 64 bits per pixel (before compression) are possible.
* When converting an image from the PNG format to GIF, the image quality may suffer due to
posterization if the PNG image has more than 256 colors.
* GIF intrinsically supports animated images. PNG supports animation only via unofficial extensions (see the
section on animation, above).
PNG images are less widely supported by older browsers. In particular, IE6 has limited support for PNG.
JPEG

The
JPEG
JPEG ( ) is a commonly used method of lossy compression for digital images, particularly for those images produced by digital photography. The degree of compression can be adjusted, allowing a selectable tradeoff between storage size and imag ...
(Joint Photographic Experts Group) format can produce a smaller file than PNG for
photographic (and photo-like) images, since JPEG uses a
lossy encoding method specifically designed for photographic image data, which is typically dominated by soft, low-contrast transitions, and an amount of noise or similar irregular structures. Using PNG instead of a high-quality JPEG for such images would result in a large increase in filesize with
negligible
{{Short pages monitor
Poor compression increases the PNG file size but does not affect the image quality or compatibility of the file with other programs.
When the color depth of a truecolor image is reduced to an 8-bit palette (as in GIF), the resulting image data is typically much smaller. Thus a truecolor PNG is typically larger than a color-reduced GIF, although PNG could store the color-reduced version as a palettized file of comparable size. Conversely, some tools, when saving images as PNGs, automatically save them as truecolor, even if the original data use only 8-bit color, thus bloating the file unnecessarily. Both factors can lead to the misconception that PNG files are larger than equivalent GIF files.
Optimizing tools
Various tools are available for optimizing PNG files; they do this by:
* (optionally) removing ancillary chunks,
* reducing color depth, either:
** use a palette (instead of RGB) if the image has 256 or fewer colors,
** use a smaller palette, if the image has 2, 4, or 16 colors, or
** (optionally) lossily discard some of the data in the original image,
* optimizing line-by-line filter choice, and
* optimizing DEFLATE compression.
Tool list
* pngcrush is the oldest of the popular PNG optimizers. It allows for multiple trials on filter selection and compression arguments, and finally chooses the smallest one. This working model is used in almost every png optimizer.
* advpng and the similar advdef utility in the AdvanceCOMP package recompress the PNG IDAT. Different DEFLATE implementations are applied depending on the selected compression level, trading between speed and file size: zlib at level 1, libdeflate at level 2, 7-zip's LZMA DEFLATE at level 3, and zopfli at level 4.
* pngout was made with the author's own deflater (same to the author's zip utility, kzip), while keeping all facilities of color reduction / filtering. However, pngout doesn't allow for using several trials on filters in a single run. It's suggested to use its commercial GUI version, pngoutwin, or used with a wrapper to automate the trials or to recompress using its own deflater while keep the filter line by line.[Use pngout -f6 to reuse previous filter set]
* zopflipng was also made with a self-own deflater, zopfli. It has all the optimizing features pngcrush has (including automating trials) while providing a very good, but slow deflater.
A simple comparison of their features is listed below.
Before zopflipng was available, a good way in practice to perform a png optimization is to use a combination of 2 tools in sequence for optimal compression: one which optimizes filters (and removes ancillary chunks), and one which optimizes DEFLATE. Although pngout offers both, only one type of filter can be specified in a single run, therefore it can be used with a wrapper tool or in combination with pngcrush, acting as a re-deflater, like advdef.
Ancillary chunk removal
For removing ancillary chunks, most PNG optimization tools have the ability to remove all color correction data from PNG files (gamma, white balance, ICC color profile, standard RGB color profile). This often results in much smaller file sizes. For example, the following command line options achieve this with pngcrush:
pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB ''InputFile.png'' ''OutputFile.png''
Filter optimization
pngcrush, pngout, and zopflipng all offer options applying one of the filter types 0–4 globally (using the same filter type for all lines) or with a "pseudo filter" (numbered 5), which for each line chooses one of the filter types 0–4 using an adaptive algorithm. Zopflipng offers 3 different adaptive method, including a brute-force search that attempts to optimize the filtering.[ pngout-f OR zopflipng --filters]
pngout and zopflipng provide an option to preserve/reuse[zopflipng --filters=p] the line-by-line filter set present in the input image.
pngcrush and zopflipng provide options to try different filter strategies in a single run and choose the best. The freeware command line version of pngout doesn't offer this, but the commercial version, pngoutwin, does.[Pngoutwin's setting dialog for optimization offers the user a selection of filter strategies.]
DEFLATE optimization
Zopfli and the LZMA SDK provide DEFLATE implementations that can produce higher compression ratios than the zlib reference implementation at the cost of performance. AdvanceCOMP's advpng
and advdef
can use either of these libraries to re-compress PNG files. Additionally, PNGOUT contains its own proprietary DEFLATE implementation.
advpng
doesn't have an option to apply filters and always uses filter 0 globally (leaving the image data unfiltered); therefore it should not be used where the image benefits significantly from filtering. By contrast, advdef
from the same package doesn't deal with PNG structure and acts only as a re-deflater, retaining any existing filter settings.
Icon optimization
Since icons intended for Windows Vista and later versions may contain PNG subimages, the optimizations can be applied to them as well. At least one icon editor
In computing, an icon is a pictogram or ideogram displayed on a computer screen in order to help the user navigate a computer system. The icon itself is a quickly comprehensible symbol of a software tool, function, or a data file, accessible on th ...
, Pixelformer, is able to perform a special optimization pass while saving ICO files, thereby reducing their sizes. FileOptimizer (mentioned above) can also handle ICO files.
Icons for macOS may also contain PNG subimages, yet there isn't such tool available.
See also
* Computer graphics
Computer graphics deals with generating images with the aid of computers. Today, computer graphics is a core technology in digital photography, film, video games, cell phone and computer displays, and many specialized applications. A great deal ...
, including:
* Ima