Quick Fix for Washed-Out HEIC to JPG Colors
- Convert from the original HEIC, not from a screenshot or a messaging-app copy.
- Use a converter that keeps the color profile. The one on this page copies the Display P3 profile into the JPG.
- View the JPG in a color-managed app such as Safari, Chrome, Windows Photos or Preview.
- If the JPG is for an app that ignores profiles, convert it to sRGB in a photo editor before you upload it.
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. If you convert on a PC, see how to convert HEIC to JPG on Windows with the tools already built into the system.
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 is about 25% larger 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 | ~35.9% 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. A correct converter either keeps the Display P3 profile in the JPG or transforms the colors into sRGB. Some P3 colors do not exist in sRGB, so a transform has to approximate them. When a converter does neither step, or does the transform badly, you get 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
Recent iPhones save HDR photos with a gain map, an extra image stored inside the HEIC file. It adds a brightness boost on top of the base image, allowing HDR-capable displays to show brighter highlights and more dynamic range than standard photos.
A standard JPG is an SDR file. Most converters keep only the base image and drop the gain map, so the JPG looks like the photo on a non-HDR screen. Converters that tone map the HDR data themselves can get this step wrong.
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
We tested our HEIC-to-JPG converter with a Display P3 test photo. Here is what it does:
- heif-convert (libheif) decodes the HEIC file and writes the JPG directly. No second tool touches the colors.
- The Display P3 ICC profile is copied into the JPG. The pixel values are not converted to sRGB, so color-managed apps (Safari, Chrome, Windows Photos, macOS Preview) show the same colors as your iPhone.
- The JPG is encoded at quality 92. The EXIF data, including date and GPS, is kept as well.
Apps that ignore color profiles may still show the JPG slightly muted. If you need a plain sRGB file for such an app, convert the profile in a photo editor (for example Edit → Convert to Profile in Photoshop).
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 (CleverUtils'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.