Skip to content

AVIF → JPG

Open an AVIF as JPG or PNG

Designers and CDNs ship AVIF. Email clients, printers, and old CMS fields still want JPEG. Shift does that conversion in the tab.

Why this page exists

AVIF is efficient and still awkward. You receive a .avif from a developer, double-click it, and Preview or an email compose window shrugs. Converting “in the cloud” means giving someone else a photo that was already compressed once. Shift decodes here: browser createImageBitmap first, then a local WASM decoder if native decode fails, then Canvas encode to JPG or PNG.

This is the opposite of the default Shift job. Most visitors convert JPEG to WebP. This URL is for the inbound file that is already modern and needs to go backwards — a printer, a lawyer’s portal that only accepts JPEG, a CMS media library from 2014, or a teammate on an older iPhone Mail.app.

Steps

Drop the AVIF. Set output to JPG for photographs you will attach; PNG if you must keep sharp edges or you suspect transparency. Quality 90–95 for JPG if this is the last generation before print or a client review. Convert. Download. If decode fails, the row shows a clear error — this browser could not open that AVIF. Trying Chrome or Edge on desktop is the usual fix; Shift will not invent pixels it cannot decode.

If native decode fails, Shift loads the same local WASM codec used for encode and tries again. That decoder is a static asset from this origin, not a conversion API. If both fail, the file may be truncated, not actually AVIF, or an animated/HDR variant this build does not handle. Open it in a desktop browser before assuming Shift is broken.

WebP to JPG is the same control

Output JPG or PNG also works on .webp. That is the compatibility escape hatch when a partner cannot take modern codecs. It is not a compressor. If the WebP is already 80 KB, the JPEG may be larger. That is expected. A lossy WebP decoded and re-encoded as JPEG is a generation of loss — raise JPG quality (90–95) so you are not stacking artefacts for no reason.

Color and transparency

JPG has no alpha. Shift fills the canvas with white before drawing so transparent AVIF/WebP/PNG does not become a black hole. If you needed the hole, pick PNG. Wide-gamut / HDR AVIF is not a promised pipeline in v1 — you get what this browser’s decoder hands the canvas.

Soft proofing, CMYK, and ICC preservation are out of scope. The canvas is the color pipeline. If a print shop sent a spec for ISO coated, they do not want a browser convert. They want a TIFF from the original. Use Shift when the destination is “please just send a JPEG.”

How to tell the inbound file is actually AVIF

Real AVIF starts with an ISO-BMFF box: ftyp and a brand that includes avif or avis. JPEG starts with FF D8. WebP starts with RIFF then WEBP. If someone emailed you “hero.avif” and Shift says it is not a supported image, look at the header before filing a bug. Shift already does that check; a renamed JPEG will be treated as JPEG if the bytes say so, or rejected if the extension and bytes disagree badly.

When not to go back to JPG

If the destination is a modern website you control, keep the AVIF and add a WebP fallback — do not flatten to JPEG just because email can. If the destination is this site’s converter default, you probably wanted JPG to WebP instead. If you needed metadata stripped, that is Strip, and converting codecs is the wrong tool.

Encoding the other direction: JPG to WebP and the guide. Codec choice: WebP vs AVIF.

Convert AVIF to JPG