Colour tagging, from the format up
It is usually explained as a bug in a player or a browser. The documented mechanism is narrower and far more useful: a QuickTime file can carry two competing colour descriptions, the standard says which one wins, and a file that carries none at all gets an assumption made on its behalf. Here is the format, the assumption, and the exact line where the documentation stops.
No credit card required. Cancel any time.
Updated September 2026
Setting the folklore aside
Search this problem and you will be told, confidently and without a citation, that one application applies a gamma of 2.2 while another applies 1.96, or that a particular browser brightens QuickTime files. No standards body, no browser vendor and no platform publishes that. What is published is narrower, and it explains far more of what people see.
3
Indices in colr
Colour primaries, transfer function and matrix, each stored as a 16-bit value.
1-1-1
The HD triplet
Index 1 is ITU-R BT.709 for each of the three. TN2227 gives 1-1-1 as the Rec. 709 triplet.
SMPTE-C
The untagged assumption
Apple documents untagged media as colour managed by QuickTime X as if created in SMPTE-C.
0
Re-encodes here
The player streams the exact bytes uploaded, so the tag you wrote is the tag that is served.
The file format
Inside a QuickTime file, each video track has an ImageDescription: the structure that tells a reader how to decode the picture. Codec, dimensions, depth, and a set of optional extensions hang off it. Two of those extensions describe colour, and only one of them is current.
The three indices of the QuickTime colour parameter atom, from Apple's QuickTime File Format documentation. TN2227 gives 1-1-1 as the HD triplet for Rec. 709. The right-hand column describes the class of error, not a measured delta; no published document quantifies one.
From the QuickTime File Format documentation, verbatim
Sources: Apple's QuickTime File Format colour parameter atom documentation for the colr and gama rule, and Apple Technical Note TN2227 for the untagged case. Both fetched 4 September 2026.
The case that actually bites
Most files that trigger this complaint are not carrying a wrong tag. They are carrying no tag, usually because they went through a step that copied the picture and dropped the metadata. Apple documents exactly what its own player does in that situation.
Apple Technical Note TN2227, verbatim
Where the documentation stops
This is the section most articles on this query skip, because saying “this is not documented” feels weaker than a confident answer. It is not weaker. It is the only statement here that will still be true next year.
Codec support, and only codec support. Chrome's platform status entries describe HEVC hardware decoding and its conditions. Microsoft's Edge table lists which codecs are supported and which are conditional. Firefox's release notes announce hardware-accelerated HEVC on Windows. WebKit's posts name which video tracks a feature handles. Every one of these is about whether a stream decodes. None describes how an untagged file's colour is handled.
The HLS Authoring Specification for Apple Devices, which requires H.264, HEVC, Dolby Vision or AV1, and requires one colour space per stream, chosen from Rec. 601, Rec. 709, DCI-P3 or Rec. 2020. Note what that requirement implies: Apple's own delivery spec assumes the stream declares its colour space. It does not describe a fallback, because a conforming stream never needs one.
Tag explicitly and never rely on a default. A default you cannot cite is a default that can change in a point release, differ across operating systems, or differ between the machine you tested on and the one your client opens the link on. An explicit tag removes the variable instead of predicting it.
The part you can run today
Four steps, in order. The third one is the one people skip, and the fourth is the one that catches the tool in your pipeline that has been quietly stripping metadata for a year.
Open the master in a media inspector that reports the ImageDescription extensions, not just the codec and the resolution. You are looking for three values: colour primaries, transfer function and matrix. An HD or UHD Rec. 709 deliverable should read as the 1-1-1 triplet. If the inspector reports the fields as unknown, unspecified or absent, you have an untagged file, and you have found the problem before writing a single email.
Every colour-managed finishing application exposes the output colour space in its export settings. Set it, rather than accepting whatever the preset inherits from the project. Set it on the client-viewing export as well as the archival master: the viewing export is the file people actually watch, and it is the one most likely to come from a preset nobody has opened in two years.
The format tells writers not to write both and tells readers to ignore gama when colr is present. If your inspector shows both, re-export from a path that writes only the current extension, or remux through a step that carries the colour description rather than re-deriving it. Do not solve it by deleting colr, which leaves you with the superseded description and no way to name your primaries or matrix at all.
Build a ten-second test: a grey ramp, a chart, and five seconds of your real graded footage, exported the way you export deliveries. Send it through your whole pipeline, whatever that is, and inspect the file at the far end. If the three indices changed or vanished, you have located the step that strips tags, and you know it before a client sees a delivery rather than after.
Why the round trip is the step that pays
What this means for hosting
Keep this section in proportion. Hosting is one step in the chain, and it is not the step that renders the picture.
The honest ending
Questions
There is no official document that calls it one. What is officially documented is the file format and one player behaviour: the colr extension carries three explicit colour indices and supersedes the older gama extension, and Apple's Technical Note TN2227 states that media without an nclc tag is colour managed by QuickTime X as if it were created in the SMPTE-C colour space. That is a QuickTime X statement about untagged media. It is not a statement about any web browser, and this page will not turn it into one.
It is an ImageDescription extension in a QuickTime file that describes how the picture's numbers map to colour. It is a required extension for uncompressed Y'CbCr formats and it carries three 16-bit indices: colour primaries, transfer function and matrix. Index 1 is ITU-R BT.709 for each of the three, which is why a correctly tagged HD file reads as the triplet 1-1-1.
The file stops describing itself and every reader has to assume something. Apple documents its own assumption: media without an nclc tag is colour managed by QuickTime X as if it were created in the SMPTE-C colour space. SMPTE-C is the standard-definition space, and its transfer characteristics are not Rec. 709's, so material graded for Rec. 709 gets pushed along a curve it was not built for. That is the documented path to the lifted, flat look people describe.
No browser vendor publishes how its video element treats an untagged file. The public browser documentation covers codec support, not colour management of untagged media, and Apple's published web-video guidance is the HLS authoring specification, which names H.264, HEVC, Dolby Vision and AV1 and requires one colour space per stream. So the honest answer is that it is not documented, in either direction. Tag the file and the question stops mattering.
No, and the format says so in one sentence: writers of QuickTime files should never write both into an ImageDescription, and readers should ignore gama if colr is present. A file that carries both is still legal to read, because the rule tells readers what to do, but it is a file whose fate depends on how carefully the reader that opens it was written.
No. There is no transcode anywhere in the pipeline, so the bytes served are the bytes you uploaded, tags included. That is a claim about the file, not about the picture on your client's monitor: the final rendering is still done by their browser and their display, which no host controls.
Then the file is no longer the variable. What is left is their display and their viewing environment: an uncalibrated panel, a brightness slider, a colour profile chosen at setup, an OS-level night filter, a phone in daylight. Send a reference chart alongside the cut, ask what they are watching on, and calibrate the conversation rather than the export.
uncompressed.io streams the exact bytes you upload. Nothing is transcoded, so the colour description you wrote on export is the colour description that gets served. Start free with 5 GB, no credit card.