AVIF to PNG Converter
Repackage .avif images as lossless PNGs — transparency intact, decoded by your browser's own AVIF codec, converted and verified right here, nothing uploaded.
Convert AVIF files to PNG
Drop .avif files and download verified PNGs — alpha preserved, real before/after sizes shown.
Nothing to download: your browser is the decoder
This page fetches no decoder. In the methodology page's words, current Chrome and Edge, Firefox 93+, and Safari 16.4+ decode AVIF natively, so AVIF to PNG uses the browser's own codec with a runtime feature probe and a plain-language notice when a browser cannot. The engine records that arrangement in its native-only decode list — AVIF — the formats it marks as decoded by the browser's own codec with no vendored fallback, on purpose; asked whether AVIF is on that list, the engine answers yes. The list is not a verdict on the other formats the engine decodes (PNG, JPEG, WebP, GIF, BMP, HEIC): in the methodology page's words, every other tool here decodes with the browser's own codecs, and HEIC is the exception that loads a decoder. The native-only entry marks where the site deliberately vendors nothing. The probe is a decode, not a version check: when the page loads it asks the browser to decode a tiny known-good AVIF, and only if that fails is the notice beneath the drop zone revealed. Nothing about your browser's name or version is consulted, which is why the notice can be trusted when it appears and trusted to stay hidden when it does not.
Decoding goes through createImageBitmap with
imageOrientation: 'from-image', so any orientation the file declares is applied
as the pixels are produced. From there the lane is short: the decoded bitmap is drawn to a
canvas and written out by the browser's own PNG encoder. No vendored codec runs on this page
in either direction. The self-hosted modules the site keeps under /vendor/ serve other
lanes — libheif on the HEIC pages, libavif + aom on the pages that produce AVIF, MozJPEG on the
Compress JPEG lane — and none of them is fetched here.
Guide: HEIC and AVIF: decoding and licensing. On this lane the licensing questions never arise: the decoder is the browser's and the target
is lossless PNG, so no vendored module and no quality parameter is involved. The guide is where
those questions live — it reads the ftyp box beside its HEIC sibling, explains in
the methodology page's words why the site loads libheif for HEIC yet vendors nothing to decode
AVIF, why it encodes AVIF but never HEIC, and how the tests pin every vendored file's size and
SHA-256. Go there when the question is about the container; stay here when it is about what this
conversion keeps.
What the detector sees in an .avif file
The first thing the tool does with a file is read its leading bytes. PNG, JPEG, WebP, GIF and
BMP announce themselves with fixed signatures; AVIF does not. It is an ISO-BMFF container, so
the detector looks for an ftyp box at the front and walks it field by field: a big-endian
size in the first four bytes, the ASCII tag ftyp, then the major brand, a
minor-version field, and however many four-character compatible brands fit before the declared
size runs out. Every brand is read from its fixed offset — the detector never
substring-searches the file for the letters avif. The declared size is clamped to
the bytes actually present; a box whose declared size cannot hold the size, type, major-brand
and minor-version fields is rejected outright, so the same two-compatible box declaring
15 bytes is unrecognized while declaring 16 yields the brand
list avif — the major brand alone, because the declared size ends before
the first compatible — and is AVIF. A brand that is not printable ASCII ends the
brand list, and an unreadable major brand rejects the box. A file is AVIF when the list
carries avif or
avis, unless an explicitly HEVC-coded brand (heic, heix,
hevc, hevx) is also present, in which case HEIC wins. Every verdict
in the table was produced at build time on a box constructed from the brand list shown.
| Constructed ftyp box | Brands the parser read | Detected as | Image sequence |
|---|---|---|---|
| major avif; compatibles avif, mif1, miaf |
avif avif mif1 miaf
|
AVIF | no |
| major avis; compatibles avif, avis, msf1, mif1 |
avis avif avis msf1 mif1
|
AVIF | yes |
| major mif1; compatibles mif1, avif, miaf |
mif1 mif1 avif miaf
|
AVIF | no |
| major mif1; compatibles mif1, miaf — no avif brand anywhere |
mif1 mif1 miaf
|
HEIC | no |
| major mif1; compatibles heic, avif |
mif1 heic avif
|
HEIC | no |
| major avif, but the box declares a size of 0 |
box rejected
|
unrecognized | no |
| major avif; compatibles avif, mif1, but the box declares a size of 15 |
box rejected
|
unrecognized | no |
| major avif; compatibles avif, mif1, but the box declares a size of 16 |
avif
|
AVIF | no |
| the first 11 bytes of the still box |
box rejected
|
unrecognized | no |
Reading the rows: a major brand of mif1 — one of the structural HEIF brands the methodology
page lists among the HEIC brands — still resolves to AVIF when
avif sits among the compatibles, because an avif or avis
brand anywhere in the list outranks the structural brands. On their own the structural brands resolve
to HEIC: the box listing only mif1 and miaf is
HEIC, and this page would refuse it. The mixed box that lists both
heic and avif is HEIC, by precedence; drop such a file
here and the row refuses it as HEIC rather than AVIF and points you to
the HEIC converter instead, since a page built for one source format does not quietly accept another.
The box declaring a size of 0 is unrecognized: the parser rejects it
before reading a brand, so a hostile header cannot push the read past the buffer. The
11-byte slice is unrecognized for the same reason — too short to be a box at all.
Only the avis brand sets the image-sequence column to yes, and that column is what
drives the first-frame caveat below.
Names are compared, not trusted. After detection the filename's extension is checked
against the verdict. An invented poster.avif wrapped around the still box reports a
mismatch of no. The same bytes named poster.png are detected as AVIF while the name claims PNG, mismatch yes: the row says so, the
conversion runs from the actual AVIF content, and the download is named poster-converted.png — a suffix, because poster.png would otherwise shadow the file you dropped. Named
poster.heif, the extension claims
HEIC and the mismatch is yes; the bytes are still AVIF,
and that is what gets converted.
The plan for AVIF to PNG: three flags and no quality
Before any pixel moves, a pure planning module takes the detected source and the target and returns a plan. For this pair, computed at build time by the same function the tool calls on your file:
-
Encoded as
image/png, the MIME type handed to the browser's encoder; the download carries the.pngextension. -
Flatten over a background:
no. The capability table says PNG
holds alpha, so the flag is off and no background colour is composited — the plan still
records its default of
#ffffff, and never uses it. - Quality: none. PNG is lossless in the capability table, so the plan carries no quality and the page shows no slider.
-
First frame only:
yes. The planner sets this flag from the source format alone — AVIF can be an
image sequence under the
avisbrand, so every AVIF plan carries it — while the row's "first frame only" note waits for the detector's sequence verdict on the actual file: yes for the sequence box in the table, no for the still box. A still AVIF therefore converts whole even though its plan carries the flag.
The planner refuses rather than guesses. Asked for this conversion with an illustrative quality of 0.8 on the engine's zero-to-one scale, it returns "This output format is lossless and has no quality setting." — the engine's own wording, and the reason no quality control exists on this page. The contrast with the JPEG lane is one flag: the same AVIF source planned to JPEG sets flatten to yes, because JPEG cannot hold alpha. That single difference is why this is the lane that keeps transparency, and why AVIF to JPG asks for a background colour and this page does not.
The encoder: the browser's own PNG writer
PNG output on this lane is written by the browser's PNG encoder through the canvas. The
methodology page names the browser's PNG, JPEG and WebP encoders and, beside them, the two
self-hosted ones; this lane uses the PNG encoder and neither self-hosted module. The plan
passes image/png and no quality parameter; there is nothing to tune and nothing to
vendor. That makes this page different from JPG to AVIF and
PNG to AVIF, which load the self-hosted libavif + aom encoder,
from
Compress JPEG, which runs MozJPEG, and from the HEIC pages,
which load libheif: the licence texts under /vendor/libheif/ and
/vendor/mozjpeg/ and the licence and patent-grant texts under
/vendor/avif/ describe modules this page never fetches. The guide restates those licensed
facts in the methodology page's words; here, the only code that touches your pixels is the browser's
and the site's own page logic.
What a lossless target means mechanically: the encoder stores the pixels exactly as the canvas holds them, alpha included, so re-saving the PNG later adds no further generation of loss. What it cannot do is reach behind the decode. The PNG is a faithful copy of the picture as your browser decoded it, not of the picture that was encoded into the AVIF: whatever the AVIF's own compression discarded, if it discarded anything, stays discarded. The conversion preserves; it does not restore.
How the download is named
The output name keeps your stem and swaps in the target's canonical extension,
png. Computed at build time on invented names:
photo.avif becomes photo.png; IMG_0427.AVIF becomes
IMG_0427.png, the stem's case untouched; hero.v2.final.avif becomes
hero.v2.final.png, because only the last dot marks the extension; a file with no
extension at all, download, becomes download.png; and a path such as
exports/2026/banner.avif is reduced to its final segment, banner.png. The only time a suffix appears is when the name would not change — the misnamed
poster.png above, which becomes poster-converted.png.
What re-encoding strips
Canvas re-encoding strips all embedded metadata: EXIF (including GPS location, camera model and timestamps), colour-profile tags and text chunks. The methodology page presents this as both a feature and a caveat, because it is both — a converted picture cannot leak where it was taken, and equally, copyright fields and ICC profiles are gone, so originals should be kept. Orientation is applied during decoding, before metadata is discarded, so uprightness survives even though the orientation tag does not. On this lane the PNG the browser writes carries nothing from the AVIF but the pixels; there is no option to carry more, and the page does not pretend otherwise. The full account is in what re-encoding does to metadata.
How the output is verified
A download button on this page means the output has already been checked. The produced bytes
are sniffed with the same detector applied to inputs — this lane must yield bytes the detector
classifies as PNG, image/png behind a
.png extension — so a browser silently substituting another format
is reported as an error, never handed to you as a mislabelled file. The blob is then re-decoded
and its pixel dimensions compared with the canvas that was drawn; a disagreement is an error, not
a rounding note. Only then does the row show the verified format, the verified dimensions, and the
output's true byte count beside the input's.
The percentage on a row is computed from those two measured byte counts for your file and nothing else. To show the wording without implying an expectation, here is the engine's arithmetic on invented counts: 240,000 bytes before and 3,120,000 after reads "1200% larger — keep your original"; 96,000 before and 88,000 after reads "8.3% smaller"; identical counts of 50,000 read "same size". None of these is a measurement of any real file. The site publishes no blanket compression percentages, because no percentage is true for every image — and a lossless landing can grow, in which case the row says "larger — keep your original" in the same breath as the number.
What the tool cannot know
- Whether the AV1 coding inside your AVIF discarded detail, or how much. The PNG preserves the image as it decodes; nothing on this page measures or judges picture quality.
- Whether the result is right for its destination. The row reports a verified format, verified dimensions and a measured byte count; whether a form, an editor or a workflow will accept the file is not something the detector can read.
-
What the dropped frames of an image sequence contained. When the
avisbrand is present the first frame is converted and the row says so; the remaining frames are not inspected. - Your intent for a file whose box says HEIC. The detector reports what the brands declare, and a file that is HEIC is sent to the HEIC lane rather than decoded here.
Common misreadings
- "Converting to PNG improves the picture." It preserves the picture as decoded. Lossless describes what the encoder adds — nothing — not what the source already lost.
- "The page downloads a decoder." The native-only list is AVIF; no module is fetched. The probe decodes a tiny known-good AVIF and reveals the notice only when that decode fails.
-
"A file named .png is a PNG." The invented
poster.pngabove is AVIF by its bytes, converted as AVIF, and delivered asposter-converted.png. - "There is a quality setting I am missing." There is not. The planner's answer to a quality on this lane is "This output format is lossless and has no quality setting."
-
"An animated AVIF converts whole." The first-frame flag is yes on this plan, and a file whose box declares
aviskeeps its first frame only; the row says so. - "PNG output is always larger." The site states no percentage in advance. The row measures your file and uses the engine's wording — "1200% larger — keep your original" on one invented pair, "8.3% smaller" on another — whichever the bytes dictate.
- "The notice means the site is broken." The notice is the probe's result: this browser could not decode the test AVIF. The decoder is the browser's own; the notice names the browsers the methodology page lists.
Related tools
Need a target that cannot hold transparency instead? AVIF to JPG plans a flatten over a colour you choose. Going the other way, PNG to AVIF encodes with the self-hosted libavif + aom module while keeping alpha, and reports the measured change per file. For editing pipelines that continue elsewhere, the Image Resizer works on the PNG you just made. The container questions — brands, decoders, licences — are in HEIC and AVIF: decoding and licensing; the other guides cover detection, the pipeline, and what re-encoding strips.
Frequently asked questions
Why convert AVIF to PNG?
For a copy that keeps everything the decode produced, with nothing to tune and nothing to fetch. This is the lane with no quality parameter — the plan’s quality field is none and the planner refuses one — and no vendored module in either direction: your browser decodes the AVIF and its own PNG encoder writes the result. The flatten flag is no, so alpha comes through as it decoded. What you pay is bytes, and the row reports the measured change for your file rather than hiding it.
Does transparency survive?
Yes. The conversion plan for this pair sets its flatten flag to no, because PNG holds alpha: transparent and semi-transparent areas come through as they decoded, no background colour is asked for, and none is composited.
How does this page decode AVIF without downloading a decoder?
Your browser already has one. Current Chrome and Edge, Firefox 93+, and Safari 16.4+ decode AVIF natively, so this page uses the browser’s own codec with a runtime feature probe and a plain-language notice when a browser cannot — nothing extra is fetched, and the probe is a real decode of a tiny known-good AVIF, not a check of your browser’s name or version.
Will the PNG be much bigger than the AVIF?
The site states no percentage in advance, because no percentage is true for every image. PNG stores every decoded pixel losslessly, so a lossless landing can grow, and when it does the row says so in the engine’s own wording — on invented byte counts of 240,000 before and 3,120,000 after it reads “1200% larger — keep your original”. Whatever your file measures is what the row shows.
Is any quality lost in the conversion?
No new loss is added: PNG encodes the decoded pixels exactly. What you cannot recover is whatever the AVIF’s own compression already discarded — converting to PNG preserves the image as it currently decodes, it does not restore detail.
Why is there no quality slider on this page?
Because the planner refuses one. Asked to plan this conversion with an illustrative quality of 0.8 on the engine's zero-to-one scale, the engine returns “This output format is lossless and has no quality setting.” — PNG is lossless, the plan’s quality field is none, and the browser’s PNG encoder is given no parameter to tune.
My file is named .png but the row says it is AVIF. What happens?
The tool reads the file’s leading bytes and compares them with the name. An invented poster.png whose bytes open with an AVIF ftyp box is detected as AVIF while the name claims PNG; the row states the mismatch, converts from the actual AVIF content, and names the download poster-converted.png so it cannot shadow the original.
Is my file uploaded anywhere?
No. Decoding, converting, and verification all run in your browser tab, and the site’s security policy blocks requests to any other origin — verifiable in your network inspector.
Local processing: your images are decoded, converted, and verified inside your browser and never transmitted — see the methodology page for how to verify the no-upload claim yourself.