You saved an image from the web, it came down as a .avif, and now half your apps won't open it. AVIF is great for the web and increasingly common — but the moment you need it in an older editor, a form upload, or just to preview it, you hit a wall. Here's what AVIF is and the fastest way to convert AVIF to JPG.
What is AVIF, and why won't it open?
AVIF (AV1 Image File Format) is a modern image format built on the AV1 video codec. It compresses dramatically better than JPG — often 30–50% smaller at similar quality — which is why sites serve it. The trade-off: support is still catching up. Modern browsers display it fine, but plenty of desktop apps, older phones, image libraries, and upload forms still choke on it. JPG, meanwhile, opens literally everywhere. So converting AVIF → JPG is about compatibility, not quality.
The fastest way: convert in your browser
You don't need to install anything. Because current browsers can already decode AVIF, a browser-based converter can read the AVIF and re-save it as JPG entirely on your machine.
With the free image converter:
- Drop your
.aviffile in. - Choose JPG (or PNG / WebP) as the output.
- Click convert and download.
Nothing is uploaded — the decode and re-encode happen in your browser via the Canvas API, so your image never leaves your device. Got a folder of them? Batch mode converts the whole set to one format in a single pass.
One caveat: AVIF reading relies on your browser. Current Chrome, Edge, Firefox, and Safari all handle it; a very old browser might not — update it and retry.
Doing it in code
If you'd rather script it, the same browser primitive works:
// In the browser: AVIF File -> JPG blob
const img = await createImageBitmap(avifFile);
const canvas = Object.assign(document.createElement("canvas"), {
width: img.width, height: img.height,
});
canvas.getContext("2d").drawImage(img, 0, 0);
canvas.toBlob((jpgBlob) => {
// download or upload jpgBlob
}, "image/jpeg", 0.9);
On the server or CLI, sharp (libvips) or ImageMagick handle AVIF decoding:
# ImageMagick
magick input.avif output.jpg
# sharp (Node)
await sharp("input.avif").jpeg({ quality: 90 }).toFile("output.jpg");
A quick note on quality and transparency
- JPG is lossy and has no transparency. If your AVIF has an alpha channel you want to keep, convert to PNG or WebP instead.
- Converting AVIF → JPG won't restore detail AVIF already discarded; it just repackages the image into a universally readable format. For photos that's invisible; for hard-edged graphics, PNG is the safer target.
TL;DR
AVIF is a compatibility headache, not a quality one. To open or upload it anywhere, convert it to JPG — fastest in the browser (no install, nothing uploaded), or with sharp/ImageMagick if you're scripting.
Related Tools
- convert AVIF or WebP to JPG, PNG and more free — change any image's format in your browser, no upload
- compress JPEG, PNG and WebP without losing quality — shrink the converted file before sharing or uploading
- resize an image to exact pixel dimensions — hit a required width/height after converting
Got an AVIF that won't open? Convert AVIF to JPG free → — drop it in, pick JPG, download. No signup, no upload, no watermark.
Top comments (0)