Verify Our Privacy Promise Yourself

Your photos never leave your device. heic-to.io converts images entirely in your browser. No image, thumbnail, or metadata is uploaded, ever. Here is exactly how to check that for yourself.

Step 1 — Open DevTools

Right-click anywhere on this page and choose Inspect, or press F12 (Windows/Linux) or Cmd+Opt+I (Mac). Click the Network tab in the panel that opens.

Step 2 — Clear the log and filter to XHR/Fetch

Click the clear icon (a circle with a line through it) to empty the current request log, then select the Fetch/XHR filter so you are only watching data requests, not the page’s own HTML/CSS/JS (which loaded once, from this same origin, before you dropped any photo).

Step 3 — Convert a photo

Go to any converter page (for example HEIC to JPG) and drop a HEIC photo in. Watch the Network panel while it converts and downloads.

Step 4 — See for yourself: zero uploads

You will see, at most, one tiny request to /api/stats per source and target format combination after the batch finishes (usually just one) — an anonymous counter update under 512 bytes, containing only the format pair, the success and failure counts, and the total input size rounded to the nearest MB (no filename, no image data, no identifier). Decoding, resizing, re-encoding and ZIP/PDF packing all run inside your browser tab. The only other requests you may see are the converter’s own files from this same site: its code (JavaScript and WebAssembly), fetched the first time you use a feature such as AVIF, GIF, PDF or “Download all”, and a tiny sample image used to test what your browser can decode — they are downloads to your browser and carry none of your data.

You can go further: convert one photo to JPG or PNG, then disconnect your Wi-Fi or turn on airplane mode and convert more photos to that same format — single-file downloads keep working with no connection at all. (Other formats and ZIP/PDF downloads need their code loaded once while you are online.)

What your browser enforces

Every page carries a strict Content-Security-Policy (connect-src 'self' blob:, where blob: is data local to your browser), as a <meta> tag in the page source or a response header. It tells your browser to refuse any network request this page tries to make to any origin other than heic-to.io itself — so no third party (analytics vendor, CDN, ad network) can receive anything from this page, even if a script misbehaved.

A CSP cannot stop a page from talking to its own site, so it is not the whole proof on its own. That is why the steps above ask you to watch the Network panel: every request the page makes is listed there, with its size, and you can confirm that none of them carries your photos.

What we do collect

One anonymous aggregate beacon per source and target format combination in a batch (usually just one): the source and target formats, how many files succeeded or failed, and the total input size rounded to the nearest MB. No filenames, no image content, no IP address, and no identifier that could tie a beacon to you or your device. See our privacy policy for full details.