How to Convert HEIC to JPG Without Uploading the File
Why iPhone photos are HEIC, where the format breaks outside the Apple world, and how a browser converter can decode HEIC locally without sending the photo to a server.
How to Convert HEIC to JPG Without Uploading the File
Most iPhones shipped since 2017 save photos as HEIC by default. Most software in the world, including Windows File Explorer, every webmail upload form, and most Android gallery apps, still cannot open a HEIC file. The result is a small, repeating friction: you want to send a photo somewhere, the receiving system rejects the file, and you have to convert it.
The reflex move is to drop it on a converter website. That works, but it also means your photo is uploaded to someone else's server, stored long enough for the conversion to happen, and on most free sites kept around in cache for hours or days. For a vacation photo this is not a real privacy problem. For a screenshot of a bank statement, a medical document, or anything else that incidentally got shot as HEIC, it is.
There is a third option: convert the file inside the browser, on your device, with no upload. This post explains what HEIC actually is, where it breaks down, and how a browser-side converter works end to end.
What HEIC actually is
HEIC is a container format. The pixel data inside it is encoded with HEVC, the same codec family used for 4K video on streaming services. The standard that defines the container is called HEIF (High Efficiency Image File Format). HEIC is the Apple-branded variant of HEIF, with a few extra metadata fields specific to iOS.
The reason Apple made the switch in iOS 11 was size. A typical 12 megapixel iPhone photo lands around 2 to 3 MB as HEIC. The same photo exported as JPG at matched visual quality runs 4 to 6 MB. On a phone that takes thousands of photos a year, the savings add up to gigabytes of storage and meaningful reductions in iCloud upload bandwidth.
The format is not Apple-only. Samsung enables HEIF capture on Galaxy phones under "Storage Saver" mode, Sony does the same on the Xperia series, and a small number of other Android phones and standalone cameras follow. Those phones save the file with a .heif extension instead of .heic, but the codec inside is identical, which is why a single decoder handles both.
Where HEIC breaks
The compression savings are real, but they come at the cost of compatibility. The list of places HEIC is awkward or impossible is long.
Windows is the biggest one. Windows 10 and 11 do not preview HEIC files in File Explorer by default. Microsoft sells a HEIF Image Extension for $0.99 that adds preview support, but many users do not know about it, will not pay for it, or cannot install Store apps on a locked-down work machine. The result is that an iPhone photo emailed to a Windows colleague shows up as a thumbnail-free file with a generic icon.
Webmail is the second one. Gmail, Outlook on the web, and most other browser-based email clients reject HEIC inline previews and many will refuse the attachment outright if their content scanner cannot inspect it. Same for most ticketing systems, most chat tools, and a significant fraction of CMS upload forms.
Older Android is the third. Android Gallery apps that have not been updated since 2019 or 2020 frequently cannot open HEIF files at all. The Samsung HEIF mode itself is restricted on its own ecosystem; Samsung's Gallery handles its own captures, but third-party apps on the same phone often do not.
Print and design workflows are the fourth. Print shops standardize on PDF, TIFF, or PNG. Older versions of Photoshop, Lightroom, GIMP, and almost every consumer photo editor written before 2020 cannot import HEIC at all. Even modern tools that do support it sometimes lose the embedded color profile in transit.
For any of these targets, JPG is the conversion that gets the file back to "works everywhere." PNG is the conversion if you also want a lossless copy.
How browser-side HEIC conversion works
The HEIC file lands on your machine as a binary blob. To produce a JPG, three things have to happen: the container has to be parsed, the HEVC-encoded image data has to be decoded into raw pixels, and those pixels have to be re-encoded as JPG. Doing all three inside a browser tab requires a few specific pieces to fall into place.
The first piece is a WebAssembly build of libheif, the open-source library that most native HEIC viewers use under the hood. libheif is a C++ codebase that parses the HEIF container and includes (or wraps) an HEVC decoder. A WebAssembly build compiles that same C++ to a .wasm binary that a browser can load and execute. The current build is about 1.4 MB compressed, which is large for a script but well within what a single tool page can ship.
The second piece is the browser's ImageBitmap and canvas APIs, which give JavaScript a way to receive decoded pixels from libheif, hold them in GPU-backed memory, and re-encode them as a different format. canvas.toBlob() handles the encode step for JPG, PNG, and WebP natively in every modern browser, with no extra library.
End to end, the flow looks like this:
- The user drops a
.heicfile. The browser exposes it as aFileobject, which is a tiny wrapper around an ArrayBuffer. - libheif (loaded as WebAssembly) parses the container, locates the primary image item, and decodes the HEVC data into a raw RGB or RGBA bitmap.
- The decoded bitmap is passed to a
<canvas>element. The canvas now holds the photo as ordinary pixels. canvas.toBlob(callback, "image/jpeg", 0.92)encodes those pixels as a JPG blob in the browser's native encoder. Quality 0.92 is near-lossless and produces a file about double the size of the HEIC source.- The resulting blob is wrapped in a
Fileobject and exposed to the page as a download link.
A typical 12 megapixel iPhone photo runs through this pipeline in around 800 milliseconds on a modern laptop and 1.5 to 2 seconds on a phone. The first conversion of a session is slightly slower because the WebAssembly module has to download and warm up; after that, each conversion reuses the warmed-up decoder.
At no point in this sequence does the file leave the device. The network tab in DevTools confirms it: zero requests during the actual conversion, only the initial page and asset loads.
JPG, PNG, or WebP: which target to pick
The three output formats are not interchangeable. Each makes a different tradeoff.
JPG is the right pick when compatibility matters more than file size. Every operating system, every webmail client, every social network, and every photo editor written in the last 30 years opens a JPG without comment. The file is roughly twice the size of the HEIC source at near-lossless quality. The encoder is lossy, so there is some quality loss compared to the HEIC source, but at quality 0.92 the loss is invisible at normal viewing sizes.
PNG is the right pick when you need a lossless copy of the HEIC pixels. The encoding step is lossless, so the output is a perfect pixel-for-pixel copy of what libheif decoded. The cost is size: a typical iPhone photo lands around 15 to 25 MB as PNG, five to ten times the HEIC source. Use PNG when the next step in the workflow is editing the image, sending it to a print shop, or preserving every detail for archival purposes. Do not use PNG just for "I want quality"; the JPG output at quality 0.92 is visually identical and a fifth of the size.
WebP is the right pick when the destination is the modern web. WebP is supported by every browser shipped since 2020, encodes at roughly 25 to 35 percent smaller than JPG at matched quality, and supports transparency. The downside is that many upload forms, embed tools, and older mobile apps do not accept it. Check the destination before committing.
If you do not know which to pick, JPG is the safe default.
When HEIC conversion is the wrong move
Conversion is not free. A few cases where you should think twice.
Live Photos are not just a single HEIC. An iPhone Live Photo is a still HEIC plus a .mov video clip that captures the moment around the shutter press. A converter that operates on a single file only converts the still. The video is left alone or, if it was not included in the export, lost. If the video portion matters, transfer the Live Photo directly from your iPhone to a destination that understands it, then convert the still separately.
Portrait depth maps ride along inside the HEIC container as an auxiliary image. The depth data is what makes the iOS Photos app render those background blur effects after the fact. Converting to JPG flattens the photo and discards the depth map. If you plan to keep editing the portrait blur, keep the HEIC original.
HDR metadata in iPhone photos lives in fields that JPG and PNG do not preserve. Most browsers will not pass it through during the conversion. If you are converting a photo specifically because you want HDR display, JPG is going to look duller than the HEIC source on a capable monitor. WebP preserves HDR metadata in some browsers and not others; YMMV.
Burst capture stacks save as multiple HEICs grouped together. A browser converter typically gets only the primary capture. The rest of the burst stays on the source device. If you need a specific frame other than the primary, pick it on the device first.
For everyday photo conversion of a single capture, none of these caveats apply. They are worth knowing if you ever convert in bulk and notice something is missing afterward.
The privacy angle is verifiable
Browser-side conversion is one of the few cases where the privacy claim is easy to check. Open the browser's DevTools, switch to the Network tab, and watch as you drop the file. If the converter is doing the work locally, you will see zero outbound requests during the conversion itself. The only network activity is the initial page load and asset fetches, all of which happened before you dropped the file.
This matters for files that are HEIC by accident. A photo of a passport, an insurance card, a prescription, a private message screenshot. The iPhone saved it as HEIC the same as any other photo, and if you upload it to a converter site to share it, you are also handing it to an unknown server with an unknown retention policy. Local conversion is the same workflow without that step.
A browser-side converter you can use today
The HEIC to JPG converter on ReezoAI runs this pipeline end to end in your browser. Drop a .heic or .heif file, pick JPG, PNG, or WebP as the output, and download the converted copy. The original file stays on your device; the network tab in DevTools will confirm zero outbound requests during the conversion.
Most people want HEIC to JPG; that covers the everyday "this file will not open on Windows" case. HEIC to PNG is the right choice when you plan to edit the photo and want a lossless copy. If your phone saved the file with a .heif extension instead of .heic, HEIF to JPG is the same conversion under the format's standard name; Samsung and Sony captures land there. All three are free and require no signup.
Summary
HEIC is half the size of JPG at matched quality, which is why iPhones use it. It is also unsupported across most of the non-Apple world, which is why you keep having to convert it. Browser-side conversion solves the compatibility problem without uploading the file to anyone's server, and the WebAssembly build of libheif is fast enough that the round trip feels instant on a recent machine. Pick JPG by default, PNG when you need lossless for editing, and WebP when the destination is the modern web. The HEIC original is worth keeping around if you care about Live Photos, depth maps, or HDR; convert a copy and leave the source alone.
Open the tool.
Free with daily credits. The right tool for what you just read.
Related reading
Other articles
tools-tutorials
How PDF Compression Works in the Browser, and When Each Level Helps
A practical look at why PDFs get bloated, what compression actually changes inside the file, and how to pick a quality level. With real numbers from a browser-based tool.
10 min read
tools-tutorials
How to Merge PDF Files in the Browser Without Uploading Them
Combining PDFs is one of the most-Googled file operations on the web. Here is what merging actually does inside a PDF, how it can run in the browser without an upload, and what survives the combine.
10 min read
tools-tutorials
How to Split a PDF by Page Range in the Browser
Extracting specific pages from a PDF is a daily task for anyone who handles contracts, receipts, or long reports. Here is what splitting actually does to a PDF, how page ranges work, and why running it in the browser keeps the document private.
10 min read