fileformer
search⌘KtranslateENexpand_moreupload_fileConvert
Converters8 file families · 44 direct conversions
What changes in a conversionarrow_forward
home / images / avif

Convert AVIF Image Free

An AVIF is one AV1 video keyframe in a HEIF box

The picture is coded exactly as a frame of AV1 video, a run of OBUs (open bitstream units) starting with a sequence header. Around it sits the same item-and-property structure HEIC uses, with AVIF’s own rules: av1C must be marked essential, pixi is mandatory, alpha is a second AV1 image. Two places can describe the colour, the colr box and the sequence header, and they can disagree. This page reads both down to the bit, checks the AVIF rules, encodes new AVIFs with your browser’s AV1 encoder and tests how the colour labels change what you see.

folder_openOpen .avifPhoto (opaque)Sticker with alphaRule-breaking file
Loading the AVIF engine…
pendingtesting…createImageBitmap on the loaded file
pendingtesting…WebCodecs VideoEncoder, quantizer mode
pendingtesting…canvas.toBlob(…, 'image/avif')
hourglass_topReading…
Decoding…
Your browser decoded it in 65.4 ms at 768 × 512. Every check below passed.
-pixels
-depth · chroma
-profile · level
-file size
-bits per pixel
-alpha image
bitstream · the primary item’s OBUs, read bit by bit

The sequence header decides what the pixels are

Profile, level, bit depth, chroma subsampling and the colour description all live in a sequence header of roughly a dozen bytes. The av1C property copies the first few of these fields into the container so software can decide without parsing AV1. The bit strip shows every bit of the header coloured by the field it belongs to; the table on the right checks whether the copy and the original agree.

sequence header bitsno sequence header
bit · lenfieldvaluemeans
OBUs in the item data, to scale2 OBUs · 97.5 KB
fieldav1C boxsequence header
profile00remove
level3.03.0remove
tier00remove
bit depth88remove
monochrome00remove
subsampling x / y1 / 11 / 1remove
chroma position00remove
config OBUs15 Bin item dataremove
colour (colr vs bitstream)1/13/1 L1/13/1 Lremove
container · items, properties and AVIF’s extra rules

What the HEIF wrapper must say about the frame

AVIF 1.1 builds on MIAF and HEIF. Each image is an item; properties like ispe (size), pixi (bits per channel) and colr hang off it through ipma, each marked essential or not. A reader must refuse an item if it doesn’t understand one of its essential properties, so av1C, irot and auxC have to be flagged essential, and ispe has to be present.

file map, to scalecontainer overhead 6.2 KB of 103.7 KB
Item 1 · av01 · primary97.5 KB“Color” · no references
boxoffsetsize
encoder lab · WebCodecs AV1, wrapped by this page

Make an AVIF, then race it against JPEG and WebP at the same size

Your browser’s AV1 video encoder codes one keyframe at the quantizer you pick. The page drops the temporal delimiter, builds av1C from the sequence header, writes ftyp, meta and mdat itself (plus a second AV1 image for alpha if the source has transparency) and decodes the result. JPEG and WebP are then searched for the highest quality that still fits in the same number of bytes.

Generated harbour sceneUse your own image
formatsettingbytesPSNRms
AVIFencoding…100.5 KB41.22 dB39
JPEGwaiting97.3 KB37.80 dB30
WebPwaiting93.4 KB40.43 dB357
At 100.5 KB (2.05 bits per pixel): JPEG trails by 3.4 dB, WebP trails by 0.8 dB. PSNR is measured against the source over all opaque pixels; higher is closer. Crops are 2× nearest-neighbour from the top-left detail area.downloadDownload this AVIF
 crop at 2× zoom
Source…
 crop at 2× zoom
AVIF…
 crop at 2× zoom
JPEG, same size…
 crop at 2× zoom
WebP, same size…
colour label lab · same AV1 bytes, six different colr boxes

The pixels are stored as Y′CbCr; the label says how to turn them back into RGB

The page takes the loaded file’s primary image bitstream unchanged and rewraps it six times, changing only the nclx colour box: matrix coefficients, the full/limited range flag or the primaries. Your browser decodes each one. The difference from the correctly labelled version is measured in ΔE OK, where about 2 is a just-noticeable difference.

Matches the bitstreamreferencedecoding…The reference: the label the encoder meant. Every other card is measured against this decode.
No colr boxΔE 0.0 · max 0.0decoding…Readers fall back to the sequence header’s colour description, or to defaults if it has none. Measured: mean RGB shift +0.0 / +0.0 / +0.0.
Matrix BT.601 (6)ΔE 1.3 · max 2.5decoding…The classic mismatch: a different Y′CbCr→RGB matrix. Skin and greens drift; greys stay grey. Measured: mean RGB shift -2.6 / -3.8 / +0.0.
Range flag flippedΔE 3.1 · max 7.4decoding…Limited (16–235) read as full, or the reverse: washed-out or crushed contrast. Measured: mean RGB shift -0.4 / +3.2 / +2.4.
Matrix BT.2020 (9)ΔE 0.7 · max 2.1decoding…The HDR-era matrix applied to SDR data. Smaller shift than 601, still visible on saturated colours. Measured: mean RGB shift -1.6 / -1.6 / +0.0.
Primaries BT.2020 (9)ΔE 2.6 · max 7.3decoding…Same RGB numbers, but declared on wider primaries: colour-managed browsers make everything more saturated. Measured: mean RGB shift +8.7 / -5.1 / -0.6.
colour_primaries
1BT.709 / sRGB
4BT.470 M
5BT.601 625
6BT.601 525
9BT.2020
10XYZ
11DCI-P3
12Display P3
22EBU 3213
transfer_characteristics
1BT.709
4gamma 2.2
5gamma 2.8
6BT.601
8linear
13sRGB
14BT.2020 10-bit
16PQ (SMPTE 2084)
17SMPTE 428
18HLG
matrix_coefficients
0identity (RGB)
1BT.709
5BT.601 625
6BT.601 525
9BT.2020 NCL
10BT.2020 CL
14ICtCp

Reference

levelmax picturemax wmax hthis file
2.0147,4562,0481,152too small for 768 × 512
2.1278,7842,8161,584too small for 768 × 512
3.0665,8564,3522,448declared here; size fits
3.11,065,0245,5043,096would fit
4.02,359,2966,1443,456would fit
4.12,359,2966,1443,456would fit
5.08,912,8968,1924,352would fit
5.18,912,8968,1924,352would fit
6.035,651,58416,3848,704would fit
brandmeaning
avifAVIF still image (primary item is AV1).
avisAVIF image sequence: a moov track of AV1 samples.
mif1HEIF image file; required.
msf1HEIF image sequence; required with avis.
miafMIAF interoperability constraints; required.
MA1BBaseline profile: AV1 Main, level ≤ 5.1 (8192 × 4352).
MA1AAdvanced profile: AV1 High, level ≤ 6.0, allows 4:4:4.
MIMEimage/avif for stills, image/avif-sequence for animations. Registered with IANA by AOMedia.
Extension.avif (and .avifs, rarely, for sequences).
Signatureftyp at offset 4, then major brand avif or avis: 66 74 79 70 61 76 69 66. Size bytes 0-3 vary.
Max sizeispe is 32-bit, but one AV1 frame stops at 65,536 px a side and level 6.x at 16,384 × 8,704. Bigger images use a grid of tiles.
Bit depth8, 10 or 12 bits per channel. 10-bit with PQ or HLG transfer gives HDR stills.
AlphaA separate AV1 image (usually monochrome or 4:2:0 luma only), linked by auxl. Can be premultiplied, flagged with prem.
ProgressiveAVIF 1.1 can carry layered images (a1lx, lsel) that decode coarse first; few encoders write them.
LicenceAV1 is royalty-free under the AOMedia patent licence, unlike HEVC in HEIC.
2015AOMedia foundedGoogle, Mozilla, Microsoft, Cisco, Netflix, Amazon and Intel pool codec work.
2018AV1 1.0The video bitstream is frozen in March.
2019AVIF 1.0AV1 Image File Format published in February.
2020Chrome 85First major browser to decode AVIF, in August.
2021Firefox 93AVIF on by default in October.
2022Safari 16iOS 16 and macOS Ventura add AVIF in September.
2024Edge 121Microsoft’s browser joins in January; every major engine now decodes it.

Related formats and tools