HEIC / HEIF
Apple's modern still-image format. ISOBMFF container — same as MP4 — wrapping HEVC-encoded pixels.
- Extensions
- .heic · .heif
- MIME
- image/heic
- Strip
- Lossless
- Updated
- 2026-05-14
HEIC is the default photo format on iPhones since iOS 11 (2017). It’s smaller than JPEG at equivalent quality, supports 10-bit colour and HDR, and is built on the same ISO Base Media File Format (ISOBMFF) container as MP4 video — which means the same box-walking parser handles both.
If you’ve ever AirDropped a photo and seen .heic arrive, that’s this format.
What it carries
HEIC’s metadata model is fundamentally different from JPEG’s. Instead of APP segments in a linear byte stream, HEIC has items, boxes, and references:
- meta box — the metadata container. Holds an
iinf(item info) declaring what items exist, aniloc(item locations) pointing at byte offsets, and the actual item data. - Exif item — the EXIF blob, referenced by an iinf entry with type
Exif. Same TIFF wire format as JPEG. - mime item — XMP packets and other typed payloads.
- Apple AssetIdentifier — buried inside an EXIF MakerNote tag (17). The UUID that pairs this HEIC with its companion MOV in a Live Photos pair.
- iref / iloc — boxes that describe relationships between items. The thumbnail item is referenced via
thmb; the main image viapitm(primary item). - HDR metadata —
mdcv(mastering display colour volume),clli(content light level info). Decoder hints for HDR rendering.
What’s unique
The Live Photos cross-asset identifier is HEIC’s most privacy-relevant payload. When your iPhone takes a Live Photo it writes two files — a .heic still and a .mov 3-second video — and stamps both with the same identifier. Anyone with both files can prove they’re a pair, even after renames. See the MOV page for how the same identifier appears on the video side via Apple’s com.apple.quicktime.content.identifier ilst key.
HEIC’s HEVC encoding is patent-encumbered, which is why most web browsers don’t decode it natively. Tracemute doesn’t decode HEIC either — it walks the box tree, rewrites metadata items, and writes a valid HEIC file out. No libheif WASM.
What Tracemute does
The handler is native ISOBMFF box surgery:
- Walk the box tree (
ftyp→meta→iinf/iloc/ item data). - For each metadata item (Exif, XMP, etc.), rewrite the corresponding
iinfentry and zero the item payload. - Recompute box sizes upward — touching
meta, then the top-level container. - The image-data items (the actual HEVC slices in
mdat) are byte-identical to the input.
What survives
HDR metadata (mdcv, clli) is kept — it’s required for correct display on HDR-capable monitors. Stripping it would degrade the visual result, which is exactly the kind of trade Tracemute avoids. The image’s HEVC payload is untouched.
Where this format shows up