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 path | Typical bit depth | ICC embedded | Use this CLI? |
|---|---|---|---|
| Deliver → TIFF (In/Out single frame) | 16-bit | Yes (e.g. Display P3 + ST2084) | Usually no |
| Gallery → Grab Still → Export | 8-bit | Often missing | Yes, 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 output | Bundled profile | CLI alias |
|---|---|---|
| P3-D65 ST.2084 (e.g. 1000 nits) | Display-P3-D65-PQ-Display-Full.icc | p3-pq |
| Rec.2020 / BT.2100 PQ | BT2100-PQ-Display-Full.icc | bt2100-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
.drxparsing, no Resolve automation.