How color temperature works
Enough theory to specify lighting confidently, and no more than that.
What kelvin measures
Heat a lump of iron. It glows dull red, then orange, then yellow-white, then blue-white. Physics describes that sequence precisely: an idealised black body at a given absolute temperature emits a specific, predictable spectrum. The path those colors trace across a chromaticity diagram is called the Planckian locus.
A color temperature of 2700K therefore means: this light looks like a black body heated to 2700 kelvin. A tungsten filament genuinely is at roughly that temperature. An LED is not — nothing inside it is anywhere near 2700K — so its figure is properly a correlated color temperature (CCT), meaning the nearest point on that curve.
This is where the language trips people up. Lower numbers are called warm and higher numbers cool, which is the exact opposite of the physics — 6500K is a far hotter body than 2700K. The naming follows emotional association with firelight and daylight, not thermodynamics.
Warm on the left, cool on the right — opposite to the physical temperatures involved.
Why warm feels warm
Human vision adapts. Sit in a 2700K room for ten minutes and white paper looks white again, because your visual system rebalances toward the dominant illuminant — the same mechanism a camera calls white balance. So the strong orange cast you see when you first walk in mostly disappears.
What does not disappear is the relationship between brightness and temperature. The Kruithof effect describes the pairing people find comfortable: low light levels feel pleasant only when they are warm, and high light levels feel pleasant only when they are neutral or cool. A dim 6500K room feels gloomy and cold; a very bright 2200K room feels oppressive and orange. This is why dimming matters as much as temperature, and why dim-to-warm fixtures — which get warmer as they get dimmer, exactly as a filament does — feel so much more natural than LEDs that hold 3000K all the way down.
CRI, R9 and TM-30
Color temperature tells you what color the light is. It tells you nothing about whether the light contains the full spectrum needed to render objects faithfully — and two lamps with identical 3000K figures can make the same red sofa look rich or muddy.
CRI (Ra) scores how accurately a source renders eight pastel reference colors against a reference illuminant, out of 100. CRI 80 is the cheap-LED baseline; CRI 90+ is worth specifying almost anywhere people or products are looked at.
Its well-known weakness is that Ra averages only those eight desaturated samples and excludes saturated red. R9 — the deep-red sample — is reported separately and is frequently terrible on inexpensive product. A lamp can advertise CRI 82 with an R9 near zero, which is why some LEDs make skin, brick, wood and raw meat all look subtly grey-brown.
TM-30-20 is the modern replacement: 99 samples across the whole gamut, reporting Rf (fidelity, like CRI) and Rg (gamut — whether the source exaggerates or flattens saturation). Where a datasheet offers it, Rf ≥ 90 with Rg near 100 is an excellent target.
Practical rule: pick the temperature for the room, then refuse to buy below CRI 90 with R9 above 50 anywhere people, food or merchandise will be seen. The price gap is small now; the visible difference is not.
Tint and Duv
CCT is a single number describing a two-dimensional quantity, so it necessarily loses information. Two 4000K lamps can sit on opposite sides of the Planckian locus: one visibly green, one visibly pink. Both are honestly labelled 4000K.
The missing dimension is Duv (sometimes just “tint”) — the signed distance from the locus. Positive is green, negative is magenta. Anything within roughly ±0.003 is unobjectionable; beyond ±0.006 most people notice something is off even if they cannot say what.
This is the single most common reason two bulbs of the same advertised temperature look different side by side, and it is why buying all your lamps from one bin code or one production batch matters in a room where they are seen together. The photo tool reports the detected Duv of your image for exactly this reason.
Light and sleep
Beyond rods and cones, the retina contains intrinsically photosensitive retinal ganglion cells, which are most sensitive to blue light around 480nm and feed the body clock rather than vision. Blue-rich light in the evening suppresses melatonin and delays sleep onset; the same light in the morning is genuinely beneficial.
Color temperature is a decent proxy for that blue content, which is why the practical advice is consistent: cooler in the morning, warmer after dark. Intensity matters at least as much as temperature — a dim 4000K lamp is far less disruptive than a bright one — so a dimmer is often a better investment than a tunable fixture.
The most common real-world mistake is a bathroom. A 5000K vanity light visible at 2am delivers a strong alerting signal at the worst possible moment. If you fit one room in the house with a warm, dim night setting, make it that one.
Why photos lie
Photograph a 2700K living room on a phone and the picture usually comes back looking almost neutral. The camera performed auto white balance: it estimated the illuminant and divided it out, precisely so the photo would not look orange.
That is helpful for photography and unhelpful for judging lighting. It means you cannot recover the true source temperature from a finished JPEG — the information was normalised away. What remains is the residual cast the camera failed to remove, which is what our estimator measures and reports.
It also explains why the photo tool asks you to tap a white surface. Telling it “this pixel should be neutral” replaces a statistical guess with a direct measurement, and the resulting render is markedly more trustworthy.
How this site calculates color
No part of this site uses a hand-tuned gradient. Every swatch and every rendered pixel comes from the same chain:
- 1Kelvin → CIE 1931 xyKim et al.'s cubic approximation of the Planckian locus below 5000K, and the CIE D-series daylight locus at and above it — because real daylight and most cool-white product sit slightly above the black-body curve.
- 2xy → CIE XYZ → linear sRGBNormalised to Y = 1, then through the standard D65 sRGB matrix. Out-of-gamut negatives are desaturated toward the white point rather than clipped, so the extreme ends keep their character.
- 3Photo → estimated illuminantA shades-of-grey estimator (Minkowski p = 6) over the linearised image, ignoring clipped highlights and near-black pixels — or a single tapped pixel, when you calibrate manually.
- 4Relight via Bradford adaptationA von Kries scaling performed in Bradford cone space between the estimated and target illuminants, applied in linear light. Cone space rather than raw RGB ratios keeps saturated colors from shifting hue as the slider moves.
- 5Back to display sRGBLuminance is renormalised so warm targets do not simply look underexposed, then the sRGB transfer function re-encodes the result. For your own photo the GPU does this per pixel, per frame.
- 6The same maths for the room scenesThe rooms on this site are not pre-tinted images. The identical Bradford matrix is handed to the browser as an SVG colour-matrix filter evaluated in linear light, so a vector room, the living-room photograph and a photo you upload yourself are all relit by exactly one code path. Where a scene is a real photograph, the white balance already baked into that file is measured and divided out first.
Checking our work
The implementation is verified against published CIE reference values. Computed against the standard illuminants, it lands within four decimal places:
- D65 (6500K)
- computed 0.3128, 0.3292published 0.3127, 0.3290
- D50 (5003K)
- computed 0.3457, 0.3586published 0.3457, 0.3585
What it deliberately does not model: spectral power distribution (so a low-CRI source's specific failures cannot be shown), beam distribution and falloff, inter- reflection between surfaces, or how your own eyes will adapt after ten minutes in the room. Treat it as an accurate guide to the color of the light, not a lighting simulation.