HEIC to JPG Without Uploading
Your photos contain where you live, who you were with, and when. They should not have to leave your laptop.
Drop your HEIC or HEIF files here
or choose files — up to 100 at once, 100 MB each
No upload. Files are processed in your browser.
Files never leave your device · EXIF and GPS removed
Works on Chrome, Safari, Firefox and Edge · No installation
This version of the converter never uploads anything. Decoding runs in the browser, there is no server-side copy, and conversion keeps working after you disconnect from the internet.
Every mainstream converter — iLoveIMG, CloudConvert, Convertio — uploads your file, converts it on a server, then sends it back. That is fine for a stock photo and less fine for a passport scan or a picture of your kids.
FormatWave loads a WebAssembly decoder into your browser and converts locally. There is no upload endpoint in the code, and once the page has loaded you can switch off Wi-Fi and keep converting.
Last reviewed November 2026
What “no upload” actually means
Nothing is transmitted
Decoding and re-encoding happen in your tab. You can verify in DevTools: no network request carries your file.
No server-side retention
There is no storage bucket, no 24-hour deletion policy to trust, and nothing to leak.
Location data removed
Re-encoding drops EXIF, including the GPS coordinates iPhone cameras embed.
How to convert HEIC → JPG
- Load the page once. The decoder (~1.5 MB) is cached by your browser.
- Disconnect if you like. Turn off the network — conversion still works.
- Convert and download. Files go straight from memory to your downloads folder.
Upload-based converters vs this one
| Typical upload-based converter | This converter | |
|---|---|---|
| Where your file goes | Their server | Nowhere — it stays in the tab |
| Retention | Deleted after N hours, per their policy | Nothing is stored, so there is nothing to delete |
| Works offline | No | Yes, once the page and decoder are cached |
| Speed for one photo | Upload + queue + download | Decode and encode only |
| Size limit | Their cap, often 5–25 MB on free tiers | Your available memory |
| How you verify it | Read the privacy policy and trust it | Watch the Network tab yourself |
How to verify the claim in about 30 seconds
You should not have to take this on faith, and you do not. Open DevTools — F12, or Cmd-Option-I on a Mac — switch to the Network tab, clear it, then convert a photo. A local conversion produces no request that carries the file: no POST, no multipart body, nothing with an image payload. The only requests are the page itself, the decoder, and the analytics beacon.
The stronger test is to disconnect. Load this page, convert one photo so the decoder is cached, then turn off Wi-Fi and convert the rest. If anything were being uploaded, it would fail immediately. It does not, because the conversion path never calls `fetch` with your image.
The decoder itself is a WebAssembly build of libheif, roughly two megabytes, downloaded once and cached by the browser. That download is the only network activity in the whole flow, which is also why the very first conversion needs a connection even though later ones do not.
What is sent: a page-view beacon, cookieless and aggregate. No filename, no image data, no identifier that survives the session. If you want even that gone, a content blocker will stop it without affecting the conversion.
If you are not convinced yet
These are the objections people raise after watching the Network tab, and what each one actually means.
| What you see | What it is | What it means |
|---|---|---|
| Requests still appear while converting | The page, the cached decoder, and analytics — none of them carry image bytes | Filter the Network tab to Fetch/XHR and check the request bodies |
| A POST request shows up | Analytics beacons are POSTs with a small text payload | Click it and read the body: a page-view event, not your photo |
| Conversion fails right after going offline | The decoder had not been cached yet | Convert one file while online first, then disconnect |
| Offline conversion fails in a private window | Incognito may not retain the cached decoder between loads | Use a normal window for the offline test |
| The page needs internet on first load | That is the two-megabyte decoder download | Unavoidable, and it is the only download |
What "no upload" does not mean
Worth being precise about, because the phrase is used loosely across the category.
| Claim | True here? | Detail |
|---|---|---|
| Your image is never transmitted | Yes | Decoding and encoding happen in the tab |
| Nothing is stored on a server | Yes | There is no upload endpoint in the code |
| It works with the network off | Yes, after first load | The decoder is cached locally |
| It is anonymous | Mostly | Cookieless analytics still sees a page view |
| It is immune to browser exploits | No | Local processing removes the upload risk, not every risk — keep the browser updated |
The honest summary: local conversion removes the entire class of risk that comes from handing a file to a stranger’s server. It does not make the browser itself safer.
Questions
How can I be sure nothing is uploaded?
Open your browser’s Network tab and convert a file. The only requests are for the page and the decoder; no file data is sent. The source is also inspectable in DevTools.
Does it really work offline?
Yes. Once the page and decoder are cached, the conversion path has no network dependency.
What about the analytics?
We use cookieless, aggregate page-view analytics. No filenames, no image data, no personal identifiers.
Is it slower than cloud conversion?
For a single photo, usually faster — there is no upload. For 100 photos, a fast desktop finishes in under a minute.
Can I check this without trusting the page?
Yes — open the Network tab, convert a file, and look for a request whose body contains image data. There is none. You can also disconnect the network after loading and keep converting.
Does the offline mode work on every browser?
It works wherever the decoder has been cached. That is reliable in Chrome, Edge, Firefox and Safari in a normal window; private windows may drop the cache between sessions.
Related converters
Same engine, different formats — all processed locally.