Warm colors are the reds, oranges and yellows. Cool colors are the blues, greens and violets. That is the answer every guide gives, and it is roughly right, which is the problem with it. Roughly right is enough to pass an art class and not enough to pick a paint, grade a photo, or work out why the blue you chose is fighting the wall behind it.
The split has a physical basis. Color temperature is a real quantity, measured in kelvin, describing the color of light emitted by a heated object. Candle flames sit near 1,800K and look orange. Overcast daylight sits near 7,000K and looks blue. That curve, the Planckian locus, is the ground truth behind the whole warm and cool vocabulary, and it is the one thing the color wheel diagrams never plot.
So I plotted it. I ran the Planckian locus through the same CIELAB pipeline this site uses to score color guesses, projected all 360 hues onto it, and compared the result against the halfway split the textbooks draw. The warm arc turns out to run 208 degrees and the cool arc 152. The boundary sits at #00ff90 and #ff00e7, nowhere near the yellow-green and red-violet line the wheels mark. And the warmest hue on the wheel is not red. Below are the lists, the hex codes, the numbers, and what actually follows from them.
Warm colors list with hex codes
Full saturation, full brightness, one every 30 degrees around the warm arc. If the six-digit notation is unfamiliar, how to read hex color codes covers what the digits are doing.
- Red, #ff0000. Hue 0. Lightness L* 53.2. The hue everyone names first when asked for a warm color, and, as the measurement below shows, not the warmest one.
- Orange, #ff8000. Hue 30. L* 67.1. The center of the warm arc in the strict sense: it lies exactly along the direction of low-kelvin firelight.
- Yellow, #ffff00. Hue 60. L* 97.1. The lightest hue available in sRGB, which does a lot of hidden work in how warm palettes behave.
- Chartreuse, #80ff00. Hue 90. L* 89.9. Textbooks put the warm boundary here. The measurement does not.
- Rose, #ff0080. Hue 330. L* 54.9. Filed as cool by the standard split, measured as clearly warm.
The muted versions people actually paint with sit inside the same arc: terracotta #c96f4a, mustard #d4a017, brick #8b3a2f, ochre #cc7722, warm cream #f5e6c8. Lower the saturation and the hue stays where it was, so the temperature reading does not move.
Cool colors list with hex codes
- Cyan, #00ffff. Hue 180. L* 91.1. A cool color that is lighter than red, which is worth holding onto before you accept any rule about cool colors receding.
- Azure, #0080ff. Hue 210. L* 54.7. The hue closest to the true optical opposite of firelight.
- Blue, #0000ff. Hue 240. L* 32.3. The darkest hue in sRGB by a wide margin, and the strongest cool signal by magnitude.
- Violet, #8000ff. Hue 270. L* 40.9.
- Magenta, #ff00ff. Hue 300. L* 60.3. Measured as almost exactly neutral, neither warm nor cool.
The practical cool palette runs the same arc at lower saturation: slate #6b7c8c, sage #9caf88, teal #2a6f73, navy #1c2b4a, powder #cfe0ec.
What color temperature actually measures
Heat an ideal black body, the physicist’s stand-in for a lump of metal that absorbs and re-emits perfectly. At around 800K it glows dull red, at 2,000K orange, at 4,000K a pale yellow-white, and past 6,500K it tips towards blue. The color of the glow is described by the temperature producing it, and the path it traces through color space is called the Planckian locus. That is where the kelvin numbers on light bulbs come from.
The vocabulary is inverted relative to the physics, which trips everyone up once. A 2,700K bulb is sold as warm white and a 5,000K bulb as cool white, even though 5,000K is the hotter filament. The names track the association with fire and ice, not the thermometer.
Rendering the locus into sRGB gives the colors those numbers stand for. Chroma here is C*, the CIELAB measure of how far a color sits from neutral gray:
- 1,800K, #ff7e00, C* 124.9. Candle flame.
- 2,700K, #ffad59, C* 73.0. Standard warm white bulb.
- 4,000K, #ffd3a5, C* 33.7. Neutral white bulb.
- 5,000K, #ffe6d0, C* 15.8. Cool white bulb.
- 6,500K, #fff9fe, C* 3.7. Daylight, the D65 reference white.
- 10,000K, #cdd9ff, C* 22.6. Blue sky in open shade.
- 20,000K, #abc1ff, C* 40.9.
Two things fall straight out of that table. The first is that the entire warm-to-cool journey people argue about, 2,700K to 6,500K, is a chromaticity move of 73.7 units in the CIELAB a*b* plane, while the much smaller-sounding 5,000K to 6,500K step is only 17.0. Bulb kelvin numbers are not linear in appearance. The gap between a warm white and a neutral white bulb is more than twice the gap between a cool white and daylight.
The second is the hole in the middle. Between roughly 5,500K and 7,000K the locus passes so close to the reference white that chroma drops below 10, which is around the point color stops being a color and starts being a very slightly tinted gray. Neutral white is not a compromise between warm and cool. It is a genuine gap in the scale where the light has almost no hue at all.
The finding: warm and cool are not opposites
Here is the measurement that reframes the rest. Convert 2,000K and 10,000K into CIELAB and read off their hue angles. Firelight sits at 62.3 degrees. Cold sky sits at 280.2. Those two directions are 142.1 degrees apart.
Not 180. The warm end and the cool end of real light are not opposite each other, because the locus is a curve, and a curve that passes through white and comes out the other side does not have to come out on the far side of where it went in.
Follow that through and it gets sharper. The true optical opposite of 2,000K firelight, the direction sitting exactly 180 degrees away in CIELAB, corresponds to hue 193.6, #00c5ff. Real 10,000K sky light corresponds to hue 207.2, #008bff. Those are two visibly different blues: 13.7 degrees and ΔE 20.5 apart, where the threshold for noticing a difference at all is around 2.3. The color that undoes candlelight and the color of cold daylight are not the same color, and every warm-cool wheel diagram that draws them as one arrow through the center is drawing something that does not exist.
This is not an obscure distinction. It is why correcting a photo shot under tungsten light by only sliding the temperature control leaves it looking slightly off, and why every raw editor gives you a second slider next to temperature.
Where the boundary really falls
Project all 360 hues onto the firelight direction and two of them come out exactly neutral, the point where a hue carries no temperature information in either direction. They are:
- Hue 154, #00ff90, a spring green.
- Hue 305.6, #ff00e7, a magenta.
Green and magenta. Which is exactly the axis that second slider in every raw editor is labelled with. Temperature moves a picture along blue and yellow; tint moves it along green and magenta. The measurement recovers that pairing from nothing but the blackbody curve and a color difference formula, without being told to look for it, and it explains why the wheel diagrams cannot place green convincingly. Green is not cool. Green is perpendicular. It is the hue carrying the least temperature signal of any on the wheel, which is why arguments about whether a particular green is warm or cool never resolve.
The wheel does not split in half
With the boundary at 154 and 305.6, the warm arc runs 208 degrees and the cool arc 152. That is 57.8 percent warm against 42.2 percent cool, not the halves every diagram draws.
Perceptually the imbalance is smaller. Walking the full wheel one degree at a time and summing the CIEDE2000 steps gives a total path of ΔE 277.9, of which the warm arc accounts for 142.0 and the cool arc 135.9, a 51 to 49 split. So the warm side occupies noticeably more of the wheel but only barely more of your perception of it. Cool hues are packed tighter in degrees and spread wider in appearance, which is a polite way of saying the wheel wastes angle on warm colors you can already tell apart.
Against the textbook split, the one that cuts at chartreuse and violet, the measurement disagrees on 100 of the 360 hues. That is 28 percent of the wheel filed on the wrong side, a contiguous band running from hue 90 through to hue 305.
The twelve stations, scored
Each of the twelve standard wheel positions, with its alignment to the firelight direction. A score of +1.00 means pointing exactly at firelight, -1.00 exactly away, 0.00 perpendicular and therefore temperature-neutral:
- Red #ff0000, +0.93. Warm, but 21 degrees off the axis.
- Orange #ff8000, +1.00. The one hue lying exactly along the firelight direction. Hue 31.7, #ff8700, is the precise match.
- Yellow #ffff00, +0.76.
- Chartreuse #80ff00, +0.41. Weakly warm.
- Green #00ff00, +0.28. Nearly perpendicular.
- Spring green #00ff80, +0.06. Effectively neutral.
- Cyan #00ffff, -0.70.
- Azure #0080ff, -0.74. Hue 193.6, #00c5ff, is the exact opposite.
- Blue #0000ff, -0.44. Weaker than cyan, which surprises people.
- Violet #8000ff, -0.35.
- Magenta #ff00ff, -0.07. Neutral.
- Rose #ff0080, +0.51. Warm, despite sitting in the cool half of every wheel.
Two of those deserve a second look. Orange, not red, is the warmest hue. Red is 21 degrees off the axis and picks up a magenta lean that pulls it towards neutral. Every color wheel that marks red as the warm pole is marking the wrong swatch.
And blue is not the coolest hue by direction. That is #00c5ff, a sky blue. Pure blue scores only -0.44 because it carries a violet lean of its own. Blue still wins on raw magnitude, because its chroma is 133.8 against sky blue’s much lower figure, so it delivers the strongest cool signal overall while pointing in a less purely cool direction. Both statements are true and they answer different questions: which hue is most purely cool, and which hue shouts cool the loudest.
Warm colors are lighter, and that explains a lot
Averaging L* across each arc gives warm 74.9 and cool 57.1. An 18-point lightness gap, built into the hues themselves before anyone picks a palette.
The reason is the sRGB gamut. At full saturation, 166 of the 208 warm hues can reach a mid lightness of L* 55 or brighter, against 69 of the 152 cool hues. Eighty percent of the warm wheel against forty-five percent of the cool. If you want a saturated cool color at mid lightness you are working in a much smaller space than the warm equivalent.
This matters because of what gets attributed to temperature that is really lightness. Warm colors advance and cool colors recede is the oldest rule in the book. Some of that is real optics: the eye focuses long and short wavelengths at slightly different depths, so red and blue edges genuinely sit at different apparent distances. But a good share of it is that the warm swatch in the comparison was simply brighter, because at full saturation it could not help being brighter.
The test is easy to run yourself. Take orange at hue 30 and blue at hue 240 and equalise their lightness. Orange has to be dimmed to a value of 81 to hit L* 55, giving #cf6700. Blue is already below L* 55 at full brightness and cannot get there at all while staying saturated. Do the comparison at matched lightness rather than matched saturation and the advancing effect shrinks to something much more modest than the rule implies.
There is a further complication worth naming. The Helmholtz-Kohlrausch effect means saturated colors look brighter than their measured luminance says they should, and the effect is strongest in blues and reds. So even a lightness-matched comparison is not fully clean. The honest version of the rule is that warm colors usually advance in practice, mostly for reasons that are not temperature.
Answers to the questions the wheel does not settle
Is purple warm or cool?
It depends which purple, and the split is sharp. Violet at hue 270 measures -0.35, mildly cool. Magenta at hue 300 measures -0.07, neutral. Rose at hue 330 measures +0.51, clearly warm. The boundary runs through hue 305.6, so a purple with any noticeable red in it is on the warm side and a purple leaning blue is on the cool side. The word purple spans the boundary, which is why the question keeps coming up.
Is green warm or cool?
Neither, in any strong sense. Pure green scores +0.28 and spring green +0.06, both close to perpendicular to the temperature axis. Green is the tint axis, not the temperature axis. Yellow-greens lean warm because they are borrowing from yellow, and blue-greens lean cool because they are borrowing from cyan, but green itself carries almost no temperature of its own.
Is gray warm or cool?
A true neutral gray has zero chroma and therefore no temperature. Everything sold as warm gray or cool gray is a gray with a small hue pushed into it, usually 3 to 8 units of chroma. Warm grays pull towards hue 30, cool grays towards 210 to 240.
Which colors go with warm colors?
The reliable answer is not about temperature at all, it is about angle. An analogous cluster stays on one side of the boundary and reads as unified. Complementary pairs straddle it and read as tense. A monochromatic palette never crosses it at all. The color theory guide works through the full set of angles and what each one costs.
How to use this
- Stop trusting the halfway line. Rose #ff0080 is warm and chartreuse #80ff00 barely is. If your palette feels off after you balanced it warm against cool by the wheel, you may have counted wrong on 28 percent of the hues.
- Use orange, not red, as your warm anchor. It sits exactly on the axis, so any warm-cool judgement you make against it is measuring temperature and nothing else.
- Match lightness before you judge temperature. Most warm-versus-cool comparisons are lightness comparisons wearing a disguise.
- Treat green and magenta as the second axis. If a picture or a palette is off in a way the temperature slider will not fix, it is off along green and magenta, and no amount of warming will reach it.
- Remember the bulb scale is not linear. 2,700K to 4,000K is a bigger visual jump than 5,000K to 6,500K, by more than two to one.
Training the judgement
Reading about the boundary is not the same as seeing it. The place temperature judgement actually fails is on the near-neutral colors, the grays with 5 units of chroma and the off-whites, where your eye is also busy discounting the light in the room. That discounting is color constancy, and it is the reason a white shirt looks white under a 2,700K bulb and under 6,500K daylight despite reflecting light 73.7 units apart in chromaticity.
The way to build the judgement is repetition with feedback. The color matching game on this site scores every guess with the CIEDE2000 formula used for every figure above, so a temperature error shows up as a specific number rather than a vague sense that something is off. Training your eye for color covers the practice structure in more detail.
How these numbers were produced
The Planckian locus was generated with the cubic approximation from Kang et al. (2002), valid from 1,667K to 25,000K, converted from CIE xy chromaticity to XYZ and then to CIELAB against the D65 reference white. Hue projections are the cosine of the CIELAB hue angle difference against the 2,000K direction, computed for all 360 HSV hues at full saturation and value. Perceptual distances are CIEDE2000 as implemented in this site’s scoring code, following Sharma et al. (2005).
Two caveats worth stating. Above roughly 5,000K, real cool light follows the CIE daylight locus rather than the blackbody locus, and the two diverge slightly; the figures here are blackbody throughout. And the hue angle of the locus between 5,500K and 7,000K is numerically unstable precisely because chroma there is near zero, which is a property of the physics rather than a limitation of the method.