TIFF ICC Profile Tool

June 12, 2026 · View on GitHub

DaVinci Resolve can export TIFF stills whose pixels already match a specific HDR color space, but the file tag is missing or wrong. Photo apps then open them as unprofiled 8-bit images — flat, gray, or with red skin tones.

This CLI embeds an ICC profile tag without changing pixel values. It is a pitfall fix for Gallery → Grab Still exports. The preferred path is Deliver → TIFF 16-bit, which usually embeds ICC correctly and does not need this tool.

DaVinci Resolve: Deliver vs Grab Still

Export pathTypical bit depthICC embeddedUse this CLI?
Deliver → TIFF (In/Out single frame)16-bitYes (e.g. Display P3 + ST2084)Usually no
Gallery → Grab Still → Export8-bitOften missingYes, if staying on 8-bit

Always run tiff-icc inspect first. See skills/tiff_icc_profile.md for the full decision tree.

Profile map

Match Project Settings → Color Management → Output Color Space:

Resolve outputBundled profileCLI alias
P3-D65 ST.2084 (e.g. 1000 nits)Display-P3-D65-PQ-Display-Full.iccp3-pq
Rec.2020 / BT.2100 PQBT2100-PQ-Display-Full.iccbt2100-pq

Tagging Rec.2020 on a P3 export causes red skin tones. Do not use bt2100-pq unless Output Color Space is Rec.2020 / BT.2100.

Install

uv venv
source .venv/bin/activate
uv pip install -r requirements.txt
uv pip install -e .
python -m pytest -v

Usage

Inspect (check bit depth and ICC first):

tiff-icc inspect input.tiff

Embed P3-D65 PQ:

tiff-icc input.tiff output.tiff --profile p3-pq

Embed BT.2100 PQ:

tiff-icc input.tiff output.tiff --profile bt2100-pq

Agent skill

Install skills/tiff_icc_profile.md into the target workspace skill index (rules/skills/INDEX.md or equivalent).

Limitations

  • Tags image data only; no color conversion, no .drx parsing, no Resolve automation.