Converter · No upload
Convert HEIC to JPG on your device
Choose iPhone photos and download them as JPGs at the quality you choose.
A HEIF the decoder cannot open (AV1 or JPEG inside, or damage) is refused as undecodable; no-image files are refused by name. Several stills in one file give numbered JPGs. A row counts images that fail to decode; images the decoder drops before the page sees them are not counted. 10-bit and HDR become 8-bit, transparency is flattened onto white, and EXIF and GPS are not copied. Takes HEVC-coded .heic and .heif.
How this converter works
Your browser reads the photo into memory. A WebAssembly build of libheif decodes its HEVC-compressed image into pixels, the pixels are drawn to a canvas, and the canvas is saved as a JPG at the quality you chose and offered as a download. All of this happens in this tab, and the photo is not uploaded.
To check that it works offline, convert one photo while you are online, so the decoder is downloaded and cached. Then disconnect from the internet and convert another. If that one converts, the conversion did not need a server. The methodology page explains two other ways to check network activity.
Memory use depends on resolution. Measured on this decoder, a 12-megapixel photo uses about 500 MB of memory while it converts and a 48-megapixel photo needs over a gigabyte, which can strain a low-memory phone. Files in a batch are converted one at a time, but all the decoded images in a multi-image file are held until they have been exported, and finished JPGs stay in memory for download until you leave the page. An embedded colour profile is not carried over: a wide-gamut (Display P3) iPhone photo is written as sRGB with its numbers unconverted. Rotation recorded in the file is applied, so photos come out upright. The quality dial applies to every file not yet encoded when it moves; completed outputs are unchanged.