Convert HEIC to JPG Under 100 KB

One flow: decode HEIC, re-encode as JPG, auto-compress under 100 KB.

Drop image here or tap to browse
JPG, PNG, WebP, HEIC, AVIF · up to 50 MB each

Conversion settings

Local · Private

How it works

  1. Step 1
    Drop your images
    Files stay in your browser. Batch drops welcome.
  2. Step 2
    We process locally
    Decode HEIC, re-encode JPG, compress in one pass.
  3. Step 3
    Download
    Grab files one by one or the whole batch as a ZIP.

The most common HEIC problem isn't just the format — it's the size. Even after converting to JPG at high quality, a modern iPhone photo can weigh several megabytes, far too large for a form that caps uploads at 100 KB. Normally that means two tools and two waits.

This tool combines them. Drop your HEIC file (or a batch), and ImgSolve decodes it, re-encodes it as JPG, and runs the compressor in a single pass, guaranteeing the output lands under 100 KB. The HEIC decoder is a WebAssembly module lazy-loaded only when needed, so the rest of the site stays fast.

Everything runs locally in your browser. There is no upload endpoint, and EXIF metadata (including GPS coordinates from your phone) is stripped automatically as a side effect of the re-encoding process.

Related tools

FAQ

How is this different from HEIC to JPG plus the compressor?+

It's the same engine, but chained into a single pass — no intermediate download or re-upload. Faster and less error-prone for the specific 'HEIC in, small JPG out' workflow.

Are my images uploaded to a server?+

No — never. Every conversion and compression happens directly in your browser using JavaScript and the Canvas API. ImgSolve does not run an upload endpoint; there is no server that could receive your files even if we wanted one.

Does ImgSolve remove EXIF data like GPS location?+

Yes, automatically. Re-encoding an image through a canvas strips all EXIF metadata — GPS coordinates, camera model, timestamps, and any other embedded tags — as a side effect of how canvases work. The output file contains only the pixels.