The Problem: Why Colors Look Wrong
You take a photo on your iPhone. It looks perfect on screen — vibrant reds, rich greens, natural skin tones. You transfer the HEIC file to your Windows PC, convert it to JPG, and something is off. The colors look washed out, or sometimes oversaturated, or the entire image has a subtle color shift that makes it look "wrong" even if you cannot pinpoint exactly what changed.
This is not a quality loss from compression. It is a color space mismatch — one of the most common and least understood problems in HEIC-to-JPG conversion. The issue has two distinct causes that often compound each other:
- Display P3 vs sRGB color space mismatch — iPhone photos are captured in a wider color space than most monitors and software expect.
- HDR to SDR tone mapping — modern iPhones capture HDR data that must be "flattened" for standard displays.
Understanding these two mechanisms is the key to getting accurate colors every time.
Color Profiles Explained: Display P3 vs sRGB
Every digital image contains color values — numbers that represent the red, green, and blue intensity of each pixel. But those numbers are meaningless without a color profile (also called a color space) that defines what those numbers actually look like on screen.
Since 2016, every iPhone captures photos in the Display P3 color space. This is a wide gamut standard that covers approximately 50% more colors than sRGB, the color space used by most Windows monitors, web browsers, and software.
| Property | Display P3 (iPhone) | sRGB (most monitors) |
|---|---|---|
| Gamut coverage | ~45.5% of visible spectrum | ~33.3% of visible spectrum |
| Red range | Deeper, more saturated reds | Standard reds |
| Green range | Wider, more vivid greens | Standard greens |
| Blue range | Similar to sRGB | Similar to P3 |
| Used by | iPhone, iPad, MacBook Pro, DCI cinema | Windows, web, most monitors, printers |
The problem happens during conversion. When a HEIC file recorded in Display P3 is converted to JPG, the converter must transform those P3 color values into sRGB color values. P3's wider gamut means some colors literally do not exist in sRGB — they must be approximated. If the converter handles this incorrectly (or ignores the color profile entirely), the result is one of three problems:
- Washed out — P3 values are interpreted as sRGB without transformation. Since P3 encodes wider ranges, the raw numbers map to less saturated sRGB values.
- Oversaturated — some converters "stretch" P3 values to fill the sRGB gamut, pushing already-saturated colors beyond their natural appearance.
- Color shift — reds shift toward orange, greens shift toward yellow, or skin tones take on an unnatural cast. This happens when the color profile is stripped without conversion.
HDR to SDR Tone Mapping
Starting with iPhone 12 (2020), Apple captures photos with HDR metadata (specifically Dolby Vision / Apple Gain Map). This adds a brightness boost layer on top of the base image, allowing HDR-capable displays to show brighter highlights and more dynamic range than standard photos.
JPG is an SDR-only format. It has no concept of HDR brightness data. When converting HEIC to JPG, the HDR information must be "tone mapped" down to SDR — the wide brightness range must be compressed into the narrower range that SDR can represent.
Poor tone mapping causes additional visual problems:
- Blown-out highlights — bright areas (clouds, reflections, light sources) that looked detailed in HDR appear pure white in the JPG.
- Flat shadows — dark areas that had visible detail in HDR become uniformly dark in SDR.
- Reduced contrast — the overall image looks "flat" compared to how it appeared on the iPhone screen, because the HDR brightness range has been compressed.
The combination of P3-to-sRGB gamut compression and HDR-to-SDR tone mapping is what makes converted JPGs look noticeably different from the HEIC originals — even when the converter is handling resolution, sharpness, and compression correctly.
How Proper Conversion Handles Color Profiles
A technically correct HEIC-to-JPG conversion involves three steps that many simple converters skip:
1. Read the Embedded ICC Profile
Every HEIC file from an iPhone contains an ICC color profile that identifies the color space (Display P3) and provides the mathematical transformation data. A proper converter reads this profile instead of assuming sRGB.
2. Transform Colors from P3 to sRGB
Using the ICC profile, the converter performs a mathematical color space transform that maps every pixel from P3 coordinates to sRGB coordinates. This is not a simple formula — it involves matrix multiplication through a device-independent connection space (usually CIE XYZ or CIE LAB).
Two rendering intents are commonly used:
- Perceptual — compresses the entire gamut proportionally. All colors shift slightly so that out-of-gamut P3 colors fit within sRGB while maintaining relative relationships. Best for photographs.
- Relative colorimetric — keeps in-gamut colors identical and clips out-of-gamut colors to the nearest sRGB boundary. Preserves accuracy for most colors but may lose saturation in extreme reds and greens.
3. Embed the sRGB ICC Profile in the Output JPG
The output JPG must include an embedded sRGB ICC profile so that viewers and editors know how to interpret the color values. Stripping the profile (a common mistake) causes different software to make different assumptions, leading to inconsistent color display.
What happens when profiles are stripped? Without an ICC profile, software defaults to sRGB. If the pixel data was already correctly transformed to sRGB, stripping the profile is harmless. But if the data is still in P3 (no transform was done), the P3 values are misinterpreted as sRGB, causing the washed-out appearance. This is the single most common cause of color problems in HEIC conversion.
What Our Converter Does
Convertio's HEIC-to-JPG pipeline handles color profiles correctly at every step:
- heif-convert decodes the HEIC file while preserving the embedded ICC (Display P3) profile. The raw pixel data and color space metadata are passed intact to the processing stage.
- ImageMagick performs the P3-to-sRGB color space conversion using the
-colorspace sRGBdirective. This reads the source ICC profile, computes the transform through the CIE connection space, and writes correctly mapped sRGB pixel values. - The output JPG is encoded at quality 92 with the sRGB ICC profile embedded, ensuring consistent color display across all viewers, browsers, and operating systems.
The result is a JPG that looks the way your photo is supposed to look — natural colors that match what you saw on your iPhone screen, correctly adapted for sRGB displays.
Tips for Best Color Results
Even with proper color profile handling, there are a few things you can do to get the most accurate colors:
- Use quality 90 or higher — lower JPG quality settings introduce compression artifacts that affect color accuracy in gradients and subtle tones. Quality 92 (Convertio's default) is the sweet spot.
- Check on a calibrated monitor — most consumer monitors are not color-calibrated and may display sRGB content with a slight color cast. If color accuracy matters, consider a hardware calibrator (like a Datacolor Spyder or X-Rite).
- View in multiple apps — some Windows apps (like the old Windows Photo Viewer) ignore ICC profiles. Test your converted JPGs in Windows Photos, a web browser (Chrome respects ICC profiles), and your photo editor to confirm consistent color.
- Avoid re-converting — each lossy-to-lossy conversion introduces a generation of quality and color degradation. Convert once from the original HEIC and keep that JPG as your master copy.
- Preserve the original HEIC — if maximum color fidelity matters (professional work, printing), keep the HEIC file as your archive copy. It contains the full P3 gamut and HDR data that cannot be recovered from a JPG.