# Colorize 1940s Kodachrome in 2026: 16-bit TIFF vs 8-bit JPEG skin-tone accuracy

Emily Patterson · October 24, 2026

> Compare 16-bit TIFF and 8-bit JPEG for 1940s Kodachrome colorization in 2026, including float32 diffusion export and ΔE2000 skin-tone checks.

This guide compares 16-bit TIFF and 8-bit JPEG for 1940s Kodachrome colorization in 2026. It specifies when to export float32 diffusion output and how to verify skin-tone accuracy with ΔE2000.

![This guide compares 16-bit TIFF and 8-bit JPEG — Colorize 1940s Kodachrome in 2026](https://static.mm-ais.com/article-images-ai/colorize-1940s-kodachrome-in-2026-16-bit-ai-3ad2e45d.jpg)

## How 16-bit vs 8-bit changes skin tone

Bit depth changes skin tone at the quantization step, not in the model. An 8-bit JPEG stores each RGB channel in 256 levels, while a 16-bit TIFF stores 65,536 levels; that is a 256-fold increase in tonal resolution per channel (2^8 = 256 and 2^16 = 65,536). When a diffusion model emits floating-point color values, saving them after an 8-bit conversion forces continuous a*/b* differences into 256 bins, whereas saving the float32 output first as 16-bit TIFF keeps 65,536 bins available.

Kodachrome's dye-based skin tones cluster in a narrow a*/b* region, so the relevant differences are small. With only 256 levels, adjacent skin-tone values in that region can receive the same code, and the lost hue or chroma separation appears as the magenta shift documented in this site's LUT workflow guide. The 16-bit file does not create new color information; it prevents the collapse that occurs when a narrow cluster is forced through an 8-bit grid.

ControlNet-conditioned Stable Diffusion, where ControlNet is an advanced neural network model designed to enhance Stable Diffusion models (controlnet.live), generates colorization in floating point. The quantization therefore happens at export: if the float32 result is converted to 8-bit before archival, the skin-tone detail is discarded before any later format comparison or measurement. For archival skin-tone work, the float32 output should be written as 16-bit TIFF before any 8-bit conversion.

The decisive check is a ΔE2000 measurement on a segmented skin mask. Bit depth explains why the 16-bit file can retain the difference, but the measurement is what shows whether the retained difference is accurate rather than merely more finely quantized. A mask isolates the skin region so the comparison targets the narrow a*/b* cluster instead of averaging it with background color.

In practice, treat 8-bit JPEG as a delivery format, not as the archive for skin-tone analysis. Keep the 16-bit TIFF as the source for any a*/b* or ΔE2000 check, and make the 8-bit conversion only after the skin-mask measurement has been reviewed.

![How 16-bit vs 8-bit changes skin tone — Colorize 1940s Kodachrome in 2026](https://static.mm-ais.com/article-images-ai/colorize-1940s-kodachrome-in-2026-16-bit-ai-07f9f6e2.jpg)

## The evidence: what we can and cannot cite

This section inventories the sources behind the rule and separates mechanism claims from accuracy claims.

controlnet.live's deep read describes ControlNet as an added conditioning layer for Stable Diffusion, using Canny edges and OpenPose keypoints. That is a mechanism claim; the page publishes no skin-tone accuracy figure and no Delta E result. palette.fm's landing page states that its free tier resizes images to 500×500 pixels and adds a watermark, so a free-tier colorization test cannot isolate bit depth from resolution loss. colorize.cc states that full models spend credits per photo, but its landing page does not publish bit-depth handling or an accuracy metric.

| Source | What it establishes | What it cannot establish |
| --- | --- | --- |
| controlnet.live (deep read) | ControlNet adds conditioning (Canny edges, OpenPose keypoints) to Stable Diffusion | Skin-tone accuracy, Delta E result, bit-depth behavior |
| palette.fm landing page | Free tier resizes to 500×500 px and watermarks output | Whether 8-bit or 16-bit output is more accurate |
| colorize.cc landing page | Full models spend credits per photo | Bit-depth handling, accuracy metric, price per photo |

Taken together, these sources converge on workflow constraints rather than on a universal accuracy claim: conditioning is available, free tiers impose resolution and watermark limits, and paid tiers are credit-based. They do not converge on a single published benchmark for skin-tone error, so the rule's numeric gate must come from your own segmented-mask measurement rather than from these pages.

If a source is cited for a claim outside its row, the citation is overreach: controlnet.live supports conditioning, not color accuracy; palette.fm supports a resolution limit, not bit-depth superiority; colorize.cc supports a credit model, not a cost figure. Before citing any of these pages in a methods note, record the access date and exact wording, because vendor landing pages change. Treat the 500×500-pixel limit and watermark as the only stable, checkable constraints in this inventory; everything else should be framed as a check, not as a fixed specification.

![The evidence: what we can and cannot cite — Colorize 1940s Kodachrome in 2026](https://static.mm-ais.com/article-images-pixabay/colorize-1940s-kodachrome-in-2026-16-bit-7fad30f1.jpg)

## 16-bit TIFF vs 8-bit JPEG: comparison

For archival skin-tone work, 16-bit TIFF is the winning export format because it preserves the diffusion model's float32 output without adding a quantization step; that preservation is the only variable that matters for a*/b* fidelity. JPEG is not the format to use as the archival intermediate because its 8-bit path discards tonal information before verification.

JPEG still has a legitimate role, but it is downstream: it wins on file size and shareability, while losing on bit depth, chroma retention, and losslessness. Treat it as a preview or delivery format, not as the master from which skin-tone accuracy is judged.

| bit depth | lossless? | chroma retention | skin-tone risk | use case |
| --- | --- | --- | --- | --- |
| TIFF: 16-bit | yes | full | low | archival/grading |
| JPEG: 8-bit | no | DCT-truncated | high | web preview |

The table is the decision shortcut: choose the row with full chroma retention and low skin-tone risk when accuracy is the task, and choose the smaller file only when sharing is the task. In practice, the TIFF master is the file that should be hashed, backed up, and used for grading; any later JPEG is a derivative whose accuracy claim depends on the TIFF it came from.

The decisive workflow check is to export the float32 result as 16-bit TIFF first, measure the color difference on the segmented skin mask, and convert to JPEG only after that gate passes.

This keeps the comparison tied to the actual model output rather than to a compressed derivative.

Because the comparison is format-level, it does not depend on a particular diffusion checkpoint; ControlNet-style and other diffusion pipelines can all feed the same TIFF-first export rule.

![16-bit TIFF vs 8-bit JPEG: comparison — Colorize 1940s Kodachrome in 2026](https://static.mm-ais.com/article-images-pixabay/colorize-1940s-kodachrome-in-2026-16-bit-cc585ccc.jpg)

## Costs and numbers that matter

A 4000×5000 image contains 20,000,000 pixels. With three channels and two bytes per sample, the uncompressed 16-bit TIFF is 20,000,000 × 3 × 2 = 120,000,000 bytes, or about 120 MB; the same image as an 8-bit JPEG is about 8 MB. That is roughly a 15× storage multiplier, before backups or derivatives, so the archival master is the expensive object and the JPEG is the cheap distribution copy.

The diffusion pass is not multiplied by bit depth. The model produces a float32 result once, and the choice between TIFF and JPEG is made after inference, so the extra bytes are a disk and transfer cost rather than a generation cost. Retaining the TIFF avoids paying that generation cost again.

The practical workflow cost is resolution gating. palette.fm's free tier resizes images to a maximum of 500×500 px and applies a watermark, which is below the resolution needed to judge 1940s Kodachrome skin-tone gradation; full-resolution processing uses credits (palette.fm). For a 4000×5000 archival frame, that means the free tier is a preview path, not the production path.

The verification step adds a small, repeatable cost: segment a skin mask covering at least 5% of pixels, measure ΔE2000 before any 8-bit conversion, and treat 2.0 or lower as the pass condition. If the mask is smaller, the measurement is not representative, so the export decision should wait. The cost is segmentation and measurement time, not another inference run.

Budget for storage and verification, not for re-running inference: keep the float32 result as 16-bit TIFF, run the ΔE2000 gate, and only then pay the JPEG conversion and distribution cost. The 15× multiplier is paid once per retained master; the JPEG can be regenerated from the TIFF whenever needed.

Backups multiply the 120 MB master: two copies double it, and a working copy plus an archive copy can make the TIFF set the dominant storage line item. JPEG derivatives remain small, so the cost model is one large master plus many small exports.

![Costs and numbers that matter — Colorize 1940s Kodachrome in 2026](https://static.mm-ais.com/article-images-pixabay/colorize-1940s-kodachrome-in-2026-16-bit-3a4b916f.jpg)

## What the evidence does NOT establish

The available sources behind this rule consists of product and tool pages—palette.fm, colorize.cc, and ControlNet documentation—not a controlled measurement study. None of those sources reports a ΔE2000 comparison between 16-bit and 8-bit exports of the same colorized Kodachrome, so the accuracy gap is inferred from quantization math rather than observed. The rule should therefore be read as a precision-preservation practice, not as a validated accuracy result.

One limit is delivery context. In a web-only workflow where the display pipeline is 8-bit end to end, the extra bits may be discarded before viewing, so the practical benefit of a 16-bit master can be limited to archival storage rather than to the image as seen. The decision should depend on whether the final use can actually consume the additional tonal levels.

Another limit is upstream precision. If the diffusion model itself emits 8-bit data internally, exporting that result as a 16-bit TIFF preserves nothing extra; the container cannot recover precision that was not generated. Before relying on the rule, check the model's native output precision or dtype rather than assuming the export format creates new information.

The stated test is also narrower than it may appear. A ΔE2000 value on a segmented skin mask evaluates color difference in the selected skin region; it does not establish historical color accuracy, validate non-skin colors, or detect model-level errors. Its usefulness depends on mask quality, segmentation boundaries, and whether the mask covers at least the intended skin area.

Finally, the acceptance thresholds in the rule are operating criteria, not findings from the available sources. They are useful as internal checks, but they should be treated as provisional until a source measures the same colorized image in both bit depths. Where the model, mask, or delivery path is uncertain, prefer documenting the check and its limits over treating the result as proof.

![What the evidence does NOT establish — Colorize 1940s Kodachrome in 2026](https://static.mm-ais.com/article-images-pixabay/colorize-1940s-kodachrome-in-2026-16-bit-28591913.jpg)

## Worked Example: Run the Numbers

Illustration only: a 1943 Kodachrome portrait of a family of four (two adults and two children), scanned on 2026-03-02 as a 1,200 by 1,600 pixel image, or 1,920,000 pixels total, with a segmented skin mask of 119,040 pixels.

Step 1: 1,200 × 1,600 = 1,920,000 pixels. Step 2: 119,040 ÷ 1,920,000 = 0.062, so the mask covers 6.2% of the image and satisfies the at-least-5% condition. Step 3: the diffusion model's float32 output is exported as 16-bit TIFF before any 8-bit conversion. Step 4: the TIFF path records ΔE2000 = 1.7 on that mask, while the JPEG conversion path records ΔE2000 = 2.4 on the same mask.

| Path | ΔE2000 on 6.2% mask | Result |
| --- | --- | --- |
| 16-bit TIFF from float32 | 1.7 | Pass (≤ 2.0) |
| 8-bit JPEG conversion | 2.4 | Fail (> 2.0) |

Step 5: compare each result with the 2.0 limit. The TIFF value, 1.7, is less than or equal to 2.0, so it passes. The JPEG value, 2.4, is greater than 2.0, so it fails. The gap between the JPEG result and the limit is 0.4.

For this example, the 16-bit TIFF export is the winner: it is the only path that passes the ΔE2000 test on a skin mask of at least 5%. The 8-bit JPEG conversion is not approved for archival skin-tone use in this case.

The break-even trigger is exact: 8-bit JPEG conversion becomes permissible only when ΔE2000 is 2.0 or lower on a skin mask of at least 5.0%. Here, the JPEG path would need to improve by 0.4, from 2.4 to 2.0, without dropping below the 6.2% mask; if coverage fell below 5.0%, the test would not be valid even at ΔE2000 = 2.0.

The decision rule applied to this example is therefore sequential: export first, measure second, convert last. Because the TIFF path passes and the JPEG path fails, the archive remains the TIFF and no 8-bit conversion is made.

## Decision rules

The canonical rule is conditional, not a blanket preference: export the diffusion model's float32 output as 16-bit TIFF for archival skin-tone work, measure ΔE2000 on a segmented skin mask, and permit 8-bit JPEG only after the mean is at most 2.0 on a mask covering at least 5% of the image; if the model emits 8-bit internally, fix the pipeline dtype before comparing formats. The steps below apply that rule.

| Condition | Required action |
| --- | --- |
| Portrait with a clean skin mask of at least 5% | Run the ΔE2000 test before choosing JPEG. |
| Mean ΔE2000 on the skin mask above 2.0 | Keep 16-bit TIFF as master; do not re-encode through JPEG. |
| Model outputs 8-bit internally | Fix pipeline dtype first; format choice is moot. |

Segment the mask first, because the threshold applies to skin pixels rather than to the entire image; a mask below 5% coverage is not a valid basis for the rule.

Any JPEG must be derived from a version that has already passed the measured bound of ΔE2000 ≤ 2.0 on the skin mask.

Promoting an 8-bit result to 16-bit TIFF cannot restore levels that were never generated, so no ΔE2000 result can justify JPEG from that source.

Apply the checks in this order: confirm float32 generation, export the 16-bit TIFF, segment the skin mask, measure ΔE2000, and only then decide whether JPEG is acceptable. Skipping the measurement turns the format choice into an assumption rather than a verified rule.

## Frequently Asked Questions

**At which step does bit depth change skin tone?**

Bit depth changes skin tone at the quantization step, not in the model.

**How many levels does an 8-bit JPEG store per RGB channel?**

An 8-bit JPEG stores each RGB channel in 256 levels.

**What happens to continuous a*/b* differences when float32 output is saved after 8-bit conversion?**

Saving them after an 8-bit conversion forces continuous a*/b* differences into 256 bins.

**Why can adjacent Kodachrome skin-tone values receive the same code with only 256 levels?**

Kodachrome's dye-based skin tones cluster in a narrow a*/b* region, so the relevant differences are small.

**What artifact appears when hue or chroma separation is lost?**

The lost hue or chroma separation appears as the magenta shift documented in this site's LUT workflow guide.

**Does a 16-bit TIFF create new color information?**

The 16-bit file does not create new color information; it prevents the collapse that occurs when a narrow cluster is forced through an 8-bit grid.

## Quick answers

| What does bit depth change in skin tone? | Bit depth changes skin tone at the quantization step, not in the model. |
| --- | --- |
| How many levels per RGB channel do 8-bit JPEG and 16-bit TIFF store? | An 8-bit JPEG stores each RGB channel in 256 levels, while a 16-bit TIFF stores 65,536 levels. |
| What happens when float32 diffusion output is saved after 8-bit conversion versus as 16-bit TIFF? | Saving them after an 8-bit conversion forces continuous a*/b* differences into 256 bins, whereas saving the float32 output first as 16-bit TIFF keeps 65,536 bins available. |
| Why are Kodachrome skin-tone differences small? | Kodachrome's dye-based skin tones cluster in a narrow a*/b* region, so the relevant differences are small. |
| What can happen with only 256 levels for adjacent skin-tone values? | With only 256 levels, adjacent skin-tone values in that region can receive the same code, and the lost hue or chroma separation appears as the magenta shift documented in this site's LUT workflow guide. |

Also worth reading: **Colorize Old 1940s Portraits: ControlNet 7 Hints Cut Delta-E 30% vs Auto**: [Colorize Old 1940s Portraits: ControlNet](https://colorizethis.io/blog/colorize-old-1940s-portraits-controlnet-7-hints-cut-delta-e-30-vs-auto.php) · **2026 Diffusion Wins: +4.2dB PSNR vs Histogram on Faded Kodachrome**: [2026 Diffusion Wins: +4.2dB PSNR](https://colorizethis.io/blog/2026-diffusion-wins-42db-psnr-vs-histogram-on-faded-kodachrome.php) · **How to Use Stable Diffusion's ControlNet for Authentic Photo Colorization in 2024**: [How to Use Stable Diffusion's](https://colorizethis.io/blog/how_to_use_stable_diffusion_s_controlnet_for_authentic_photo.php)

### Related reading

- [Kodachrome magenta skin tones: verify with the 3-step LUT workflow](https://colorizethis.io/blog/kodachrome-magenta-skin-tones-verify-with-the-3-step-lut-workflow.php)
- [Colorize Old 1940s Portraits: ControlNet 7 Hints Cut Delta-E 30% vs Auto](https://colorizethis.io/blog/colorize-old-1940s-portraits-controlnet-7-hints-cut-delta-e-30-vs-auto.php)
- [Fixing DeOldify Skin-Tone Bias in LoC Colorization](https://colorizethis.io/blog/fixing-deoldify-skin-tone-bias-in-loc-colorization.php)
- [The Ethical Implications of AI-Powered Skin Tone Editing in 2024](https://colorizethis.io/blog/the_ethical_implications_of_ai_powered_skin_tone_editing_in.php)
- [Kodachrome's Three Dye Layers: Why LAB Clamping Wins for Archives](https://colorizethis.io/blog/kodachromes-three-dye-layers-why-lab-clamping-wins-for-archives.php)
- [2026 Diffusion Wins: +4.2dB PSNR vs Histogram on Faded Kodachrome](https://colorizethis.io/blog/2026-diffusion-wins-42db-psnr-vs-histogram-on-faded-kodachrome.php)

### Latest

- [Colorizing Old Photos: 3 Tests—Perceptual Score vs Human Choice, Pick a Model](https://colorizethis.io/blog/colorizing-old-photos-3-testsperceptual-score-vs-human-choice-pick-a-model.php)
- [Kodachrome magenta skin tones: verify with the 3-step LUT workflow](https://colorizethis.io/blog/kodachrome-magenta-skin-tones-verify-with-the-3-step-lut-workflow.php)
- [1940s portrait colorization: IP-Adapter skin-tone reference workflow](https://colorizethis.io/blog/1940s-portrait-colorization-ip-adapter-skin-tone-reference-workflow.php)

Canonical: https://colorizethis.io/blog/colorize-1940s-kodachrome-in-2026-16-bit-tiff-vs-8-bit-jpeg-skin-tone-accuracy.php
Markdown: https://colorizethis.io/blog/colorize-1940s-kodachrome-in-2026-16-bit-tiff-vs-8-bit-jpeg-skin-tone-accuracy.php/index.md
