Skip to content
EveryImage

2026-07-16 · 4 min read

Why your photos look dull after uploading: colour profiles explained

What sRGB, Adobe RGB and Display P3 actually are, why a vivid export turns flat on the web, and how to export so colours survive the trip.

You export a photograph that looked saturated and rich in your editor. You upload it. It arrives looking washed out, as though someone pulled the vibrance down twenty points. Nothing is broken, and the fix is straightforward, but the explanation requires accepting one counterintuitive fact: the numbers in an image file do not describe colours.

RGB values are meaningless without a profile

A pixel storing (200, 30, 40) is not storing "this particular red". It is storing three coordinates. What colour those coordinates represent depends entirely on which colour space is being used to interpret them — and the same three numbers describe visibly different reds in different spaces.

A colour profile is the piece of metadata that says which interpretation to use. It is the legend on a map. Remove it and the map still has lines on it, but nobody knows what scale they are drawn to.

The three spaces you will meet

sRGB is the smallest of the three and the assumed default of the internet. Any software that encounters an untagged image will almost certainly treat it as sRGB.

Adobe RGB is wider, particularly in greens and cyans. It exists for print workflows, where inks can reproduce colours that sRGB cannot describe.

Display P3 is wider again, aligned with modern display hardware. Recent phones and laptops capture and display it, and browsers support it properly.

Wider is not automatically better. A wider space spreads the same number of bits across a larger range, which means slightly coarser steps between adjacent values. For 8-bit images this is a real if usually invisible cost.

The washed-out failure, precisely

Here is the exact sequence that produces the dull result.

You edit in Adobe RGB. You export, and the profile is stripped — by the export setting, by an upload pipeline, or by a re-encode somewhere in between. The file now contains Adobe RGB numbers with no label.

The browser, finding no profile, assumes sRGB. It renders those numbers as though they were sRGB coordinates. Because Adobe RGB's coordinates reach further out, interpreting them as sRGB pulls everything inward: saturated colours land closer to neutral, and the whole image goes flat.

The image was never damaged. It is being read with the wrong legend.

Why re-encoding is where profiles die

Any process that decodes an image to raw pixels and re-encodes it can lose the profile, because the profile lives in metadata rather than in the pixel data.

Browser-based processing is a clear example, and worth being explicit about: a canvas holds pixels. When an image is drawn to a canvas and encoded back to a file, colour profile metadata is not carried across, in the same way EXIF and GPS are not. The browser converts to its working space on decode, so what comes out is generally sRGB-consistent — which is the right outcome for web publishing and the wrong one for a print master.

The same applies to many upload pipelines, social platforms and CMS thumbnail generators. Anything that re-encodes is a place profiles go missing.

The rule that resolves it

Convert to sRGB before exporting anything for the web. Not "assign" — convert. The distinction matters:

  • Assigning a profile changes the legend and leaves the numbers alone, which changes how the image looks.
  • Converting recalculates the numbers so the image looks the same under the new legend.

Converting Adobe RGB to sRGB adjusts every pixel so the appearance is preserved as closely as sRGB can manage. Colours outside sRGB's range get mapped to the nearest available, which is a real loss for very saturated subjects — but a small, controlled one, rather than the uncontrolled shift you get from a stripped profile.

Then tick "embed colour profile" on export. It costs a few kilobytes and removes all ambiguity.

When to keep a wider space

Keep Adobe RGB or ProPhoto for masters and for anything going to a professional print lab, which will have its own profile requirements and will usually tell you what they are. Print inks reach colours sRGB cannot describe, and throwing that away before the printer sees it is a real loss.

Display P3 is worth using for photography sites where you control the delivery and want the extra range on capable screens. Browsers handle it correctly when the profile is embedded. Just be aware you are optimising for a subset of viewers, and that anything downstream that re-encodes may quietly convert it anyway.

For everything else — social, ecommerce, email, documentation — sRGB, embedded, and stop thinking about it.

Practical checks

If an image looks right in one application and wrong in another, that is a profile mismatch, not a rendering bug.

If it looks right everywhere except after upload, the platform stripped or converted the profile.

If a batch of images from one camera looks consistently flat, check the camera's colour space setting — many default to Adobe RGB, which is the wrong default for anyone shooting mainly for screens.

And if you are handing files to someone else, sRGB is the format-of-formats: the one that behaves predictably in software you cannot inspect.