What a HEIC file holds that a JPG cannot

A HEIC is a container, not just a picture. A JPG is one flat image. Here is what actually survives the trip.

Two tests, run today One image out No transparency in JPG

Short answer: a HEIC file can hold more than one image, an alpha channel for transparency, and extra data tracks such as depth or HDR gain maps. A JPG holds exactly one flat image and no transparency. Converting keeps the picture you were looking at and drops the rest — and most converters drop it without telling you.

What I measured on this site today (quality set to 95%): I built a HEIC holding two 300×300 images — a green one marked as the primary and a magenta one as the second — and ran it through the converter. It produced one JPG, 300×300, 1,302 bytes, and every pixel I sampled was rgb(0, 200, 0): the green one. The magenta image never appeared, and nothing on the page mentioned that a second one had existed. Then I built a 400×400 HEIC whose right half was fully transparent, with blue stored underneath it. That came out as a 400×400 JPG of 2,231 bytes: left half rgb(254, 0, 0), right half rgb(0, 0, 0). The transparency turned into solid black, and the blue underneath went with it.

A container versus a picture

The two formats are not built the same way, and that is the whole reason for the loss.

So the difference is not about sharpness or file size. It is about the extra items and channels that a HEIC has room for and a JPG does not.

What I measured, item by item

Two images in one file → one JPG out

I made a 689-byte HEIC containing two 300×300 images and confirmed with libheif that the file really does hold two, with the green one flagged as the primary. Dropping it into this converter produced a single 300×300 JPG of 1,302 bytes. I sampled three points — (10,10), (150,150) and (290,290) — and all three were rgb(0, 200, 0). The magenta image is nowhere in the output, and no warning was shown.

Transparency → black

I made a 4,248-byte HEIC, 400×400: left half opaque red, right half fully transparent with rgb(0, 0, 254) stored under the transparency. Reopening the file confirmed the alpha really is 0 across that half. The JPG came out 400×400 and 2,231 bytes. The left half read rgb(254, 0, 0). The right half read rgb(0, 0, 0) at (250,200), (350,350) and (390,10).

A JPG has no alpha channel, so a transparent area has to be filled with something rather than left empty. In this conversion it was filled with black, and the colour that had been stored underneath the transparency was discarded along with the alpha.

Depth maps and HDR gain maps → I did not measure these

I could not produce a real depth-map or HDR gain-map file with the tools available here, so I have no measured result for them and I will not put a number on it. What I can say is structural: both live as extra items inside the HEIC container, and a JPG has nowhere to put an extra item.

When this matters, and when it does not

Questions

Will I get two JPGs if my HEIC holds two images?

No. I measured this: the file with two images produced one JPG, and it was the primary one.

Can a JPG keep transparency?

No — the format has no alpha channel. In my test the transparent half came out solid black.

Does this mean my photo loses quality?

That is a different question from the one this page answers. What disappears here is extra data — additional images, transparency, auxiliary tracks — not sharpness. I did not measure sharpness or file size comparisons for this page.

How do I keep everything the HEIC holds?

Keep the HEIC. Converting to JPG is for the case where you need a file that opens anywhere, and what you need from it is the picture.

Will the converter warn me if something is dropped?

It did not in either of my tests. The two-image file converted silently to one JPG.

Try it with your own file: open the converter, drop a HEIC in, and compare the result against the original.

First published: 21 September 2026