Retouch a photo

Evidence

Skin-tone test

This site promises that its tonal layers move luminance and leave colour where they found it, on every skin tone. This page is the measurement behind that promise, rendered from the JSON the build’s own harness writes — the prose here cannot drift from the numbers because it does not contain them.

What is measured, and on what

Nine synthetic reference patches along a plausible skin locus, from the lightest to the deepest, each a textured oval with a blemish and a red pupil in it. Every layer is run at its maximum — past what the controls allow — and hue and chroma inside the mask are compared before and after. The limits are 1.5 degrees of hue and 3 per cent of chroma.

These are synthetic tones, not people. A corpus of real, rights-cleared portraits with model releases is the next step and is not published yet. Until it is, this page says exactly what it measures and nothing more.

Last run 2026-10-24: every tone and every case passed.

Every layer at maximum, per tone

Hue and chroma drift per synthetic skin tone, all layers at maximum
ToneMask coverageHue driftChroma driftMovedResult
246, 219, 19995.3%0.292°0.49%3.21%within limits
235, 199, 17395.3%0.191°0.31%3.9%within limits
223, 184, 15295.2%0.185°0.276%4.64%within limits
204, 158, 12495.1%0.126°0.237%5.76%within limits
181, 130, 9995.1%0.097°0.251%6.93%within limits
150, 104, 7895.2%0.128°0.374%7.39%within limits
118, 80, 6095.3%0.179°0.603%7.66%within limits
88, 58, 4495.7%0.234°1.011%8.57%within limits
62, 41, 3296.1%0.289°1.486%10.61%within limits

Each layer against its own rule

Luminance-only layers are held to the limits above on the Cb/Cr plane the engine holds fixed. The layers that move colour on purpose — teeth, the Colour brush, white balance — are held to their own declared bounds instead. Worst case across the nine tones:

Worst-case drift per layer across nine synthetic tones
LayerRuleHueChromaResult
eyes 100luminance only: Cb/Cr hue within 1.5 deg and chroma within 3%0.597°-2.14%within its rule
exposure +1.25luminance only: Cb/Cr hue within 1.5 deg and chroma within 3%0°0%within its rule
exposure -1.25luminance only: Cb/Cr hue within 1.5 deg and chroma within 3%0°0%within its rule
exposure +0.33luminance only: Cb/Cr hue within 1.5 deg and chroma within 3%0°0%within its rule
exposure -0.33luminance only: Cb/Cr hue within 1.5 deg and chroma within 3%0°0%within its rule
eye detail 100luminance only: Cb/Cr hue within 1.5 deg and chroma within 3%0°0%within its rule
soften lineluminance only: Cb/Cr hue within 1.5 deg and chroma within 3%0°0%within its rule
shineluminance only: Cb/Cr hue within 1.5 deg and chroma within 3%0°0%within its rule
under-eyeluminance only: Cb/Cr hue within 1.5 deg and chroma within 3%0°0%within its rule
light cast 8uniform cast at the Light cap, |dL*| <= 24.665°88.24%within its rule
teeth 100chroma falls 0-60%, L* never falls1.034°-39.24%within its rule
colour +100chroma rises 0-100%, hue <= 4 deg, |dL*| <= 21.89°64.55%within its rule
colour -100chroma falls 0-85%, hue <= 4 deg, |dL*| <= 21.725°-59.59%within its rule
cast +24/-24clamped at 24, |dL*| <= 2174.114°-94.08%within its rule

A failure is published as a failure: the fix is to the gate or the layer, never to the threshold. The raw results are available as JSON.

Read next

Photographic visual for Skin Tone Test