Skip to content
Cullant

Formats

HEIF and iPhone photos

Why the metadata always works, why the pictures sometimes do not, and how to fix that.

An unmodified iPhone writes HEIF. So do some cameras, next to the RAW. Cullant handles those files in two halves, and the halves behave differently.

The metadata always works

Capture time, dimensions, camera, lens, ISO, aperture, shutter, focal length. All of it is read from every HEIF file, on every platform, with nothing installed.

That means a library of nothing but iPhone photos sorts by real capture time and fills every filter facet, straight away. Grouping, rating, labelling, deleting, moving and sidecar export all work too.

The pictures depend on your machine

Cullant carries no HEVC decoder and is not going to get one. Every library that decodes HEVC is a C dependency, which would be the first in this project and would have to be built for four different Android processors.

So Cullant borrows a decoder from the system instead, and tries these in turn:

Platform What it uses What you need
Android The system image decoder Android 9 or later
Windows WIC The HEIF and HEVC extensions from the Microsoft Store
Any desktop ffmpeg Version 7.0 or later. Version 6 will not do, because it decodes HEVC but cannot read a still image out of the container.
iOS, iPadOS none Not built yet

If one of them has the codec and still refuses a particular file, Cullant hands the file to the next one. Decoders genuinely disagree about what a HEIF is: WIC wants the structure a camera writes and refuses a single frame wrapped in an MP4, which ffmpeg reads without complaint.

Getting the pictures on Windows

Install the HEIF and HEVC extensions from the Microsoft Store, or put ffmpeg 7.0 or later on your PATH. Either one is enough.

Nothing is ever marked as broken

When no decoder answers, the cell stays empty and Cullant remembers nothing about that file. Install a decoder afterwards and the picture appears the next time you look, with no rescan, no cache to clear, no setting to find.

That is deliberate. Cullant normally remembers a file it could not read, keyed on when the file last changed. Installing a decoder changes no file, so a note written here would keep every one of those photos blank forever.

A companion RAW outranks a HEIF

If a shot has both an .ORI and a .HIF, the grid shows you the .ORI, although the HEIF is usually the better picture. The reason is certainty: the .ORI draws on every machine, and a HEIF only draws where the system lends a decoder. A project has to look the same on every computer you open it on.

Improve this page(Opens in a new tab)