If you’ve ever AirDropped or emailed yourself a photo from an iPhone and then watched it fail to open — a blank thumbnail, a “this file format is not supported” message, or an upload form that just rejects it outright — you’ve run into HEIC. It’s been the iPhone’s default photo format since iOS 11 in 2017, and while Apple’s own apps handle it transparently, almost nothing outside that ecosystem reliably does.
Why HEIC exists, and why it causes problems anyway
HEIC (High Efficiency Image Coding, based on the HEIF container format) uses a noticeably more efficient compression algorithm than JPG — at the same visual quality, a HEIC file typically runs 30-50% smaller. For Apple, storing years of photos across millions of phones, that’s a meaningful win, which is why they switched the default. The tradeoff is that HEIC requires patent-licensed codecs that most operating systems and software outside of Apple’s platforms haven’t bothered to license and ship, so support is inconsistent: modern Android and recent Windows builds handle it better than they used to, but a huge amount of software still simply doesn’t decode it — including most browsers, many email clients, older Windows versions, and the majority of web upload forms.
That inconsistency is the actual problem. The file isn’t corrupted and there’s nothing wrong with the photo — it’s a format mismatch between a system that can write HEIC (any modern iPhone) and the much larger world of systems that expect JPG.
What actually happens during conversion
Converting HEIC to JPG isn’t a file-format relabel — it’s a genuine decode-and-re-encode process. The tool first reads the HEIC file’s actual compressed image data and reconstructs the full pixel grid (the same step your iPhone’s Photos app does invisibly when it shows you a HEIC thumbnail). Once that raw pixel data exists, it gets re-compressed using JPG’s encoding method and saved as a new file. This two-step process is unavoidable: there’s no shortcut that converts the file “as-is,” because the two formats compress pixel data in fundamentally different, incompatible ways.
One consequence worth knowing: converting between any two lossy formats causes a small amount of additional quality loss, on top of whatever HEIC already discarded when the photo was first taken. In practice, at a reasonable JPG quality setting, this is not something you’d spot without zooming in and comparing pixel-for-pixel — but it does mean repeatedly converting back and forth isn’t free, so keep your original HEIC if you might need it again later.
Where this trips people up
By far the most common mistake is trying to fix the problem by renaming the file extension from .heic to .jpg. This does nothing to the actual file content — it’s still HEIC-encoded data inside, just now wearing a JPG label. Software that opens it by reading the file extension will now think it’s a JPG, attempt to decode it as one, and fail in a more confusing way than before (often a generic “corrupt file” error rather than a clear “unsupported format” one). The data genuinely has to be decoded and re-encoded; there’s no way around that step.
The other place this comes up is batch photo exports — say, pulling a year’s camera roll off an iPhone to back up or share. If the export kept the original HEIC files (rather than converting on the way out, which some tools do and some don’t), you can end up with hundreds of files that won’t open elsewhere. Converting them in a batch, rather than one at a time, is the practical fix, which is why this tool supports selecting and converting multiple files in one go.
The longer-term fix, if you want one
If this keeps happening, you can stop it at the source: on the iPhone, go to Settings → Camera → Formats and switch from “High Efficiency” to “Most Compatible.” New photos will save directly as JPG (and HEVC video as H.264), at the cost of somewhat larger files. It has no effect on photos already taken, which is exactly the gap a converter like this one fills.