Color Midpoints: The Color Halfway Between Two

A plain-language guide to finding the visual middle of two colors, and why the math misleads you.

Short answer: the color "halfway" between two shades is the one that looks equally distant from each. Finding it is trickier than it sounds, because color space is perceptually non-uniform: equal numeric steps do not create equal visual steps. That is why simply averaging two hex codes so often lands on a shade that looks off. Formulas like CIEDE2000 and perception-aligned spaces such as CIELAB exist precisely to make "distance" match what the eye sees.

Why the midpoint isn't just an average

Intuitively, the middle of two colors should be their average: add the numbers, divide by two. The problem is that the numbers in RGB or hex do not map evenly onto perception. A difference of, say, twenty units in one part of the space can look far larger than the same twenty units elsewhere. So the arithmetic mean of two hex codes is the numeric middle, but not necessarily the visual middle your eye would nominate. There is a second catch that surprises people: sRGB values are gamma-encoded rather than linear light, so even a straight average of two hex codes does not correspond to averaging the actual light energy. Blending in linear light first, then re-encoding, already gives a more believable midpoint before any perceptual model enters the picture.

Perceptual non-uniformity, in plain terms

Color space being "non-uniform" means the same numeric jump can look big in one region and tiny in another, because the eye is more sensitive to some kinds of change than others. This is a well-documented property of standard color coordinates. The classic evidence comes from MacAdam's experiments, which mapped out regions around a color where differences are too small to notice. Those regions turned out to be ellipses of very different sizes across the diagram, proving that equal distances on the chart do not mean equal perceived differences. Green regions tolerate large numeric shifts before anyone notices, while blue regions betray tiny ones. Color-difference formulas evolved specifically to correct for this unevenness.

Models built to match the eye

Some representations were designed from the start to track perception more closely. HSL and HSV were introduced as alternative arrangements of RGB, intended to align better with how people describe and reason about color. A bigger step is CIELAB, which was built so that a fixed Euclidean distance corresponds roughly to a fixed perceived difference across the whole space. CIEDE2000 refines the distance calculation further, adding corrections for lightness, chroma, and hue so that a measured difference lines up even more closely with what observers actually report. None of these is perfectly uniform, but each moves closer to a space where "halfway" in the numbers means "halfway" to the eye, which is the goal a midpoint task quietly depends on.

Which space gives which answer

The practical upshot is that different spaces will nominate different midpoints for the same pair of colors, and some are far more trustworthy than others. The table sorts the common options by how well their notion of distance matches perception.

Space or measureWhat it representsUniform to the eye?
RGB / hex averageNumeric mean of channel valuesNo, and ignores gamma
HSL / HSVHue-based rearrangement of RGBCloser for reasoning, not truly uniform
CIELABPerceptual lightness plus two opponent axesMuch closer
CIEDE2000 (ΔE)Corrected perceived color distanceBest widely used standard
JNDSmallest difference a viewer can noticeThe yardstick, about ΔE 1 to 2

How close is close enough?

If the perfect midpoint is a moving target, how do you know when a guess is good? The natural yardstick is the just-noticeable difference, the smallest gap a viewer can reliably detect. For a trained observer this is often around a Delta-E of one to two, and differences smaller than that are effectively invisible. So "close enough" is not hand-waving. It is a measurable band, and landing inside it means your guess is indistinguishable from the true middle. This is also why two answers can both be "correct" in practice: if both fall within a just-noticeable difference of the ideal midpoint, no eye can separate them.

Common misconceptions

The most common mistake is trusting the hex average as the true middle. It is only the numeric middle, and because of gamma encoding and perceptual non-uniformity it frequently looks too light, too dark, or shifted in hue. A second misconception is that any single color model is perfectly uniform. Even CIELAB and CIEDE2000 are engineering approximations that work well over most of the space while still having weak spots, which is why the standards keep being refined rather than declared final.

Feel it: split the difference

Reading about midpoints is one thing, nailing one is another. In Huetween, you pick the shade you judge to be exactly halfway between two colors, then see how close you landed. It turns perceptual non-uniformity from an abstract idea into a decision you can feel. Prefer full gradients? Huespan pushes the same instinct across a whole range.

Play Huetween →

Related reading

Frequently asked questions

Why doesn't averaging two hex codes give the right middle color?

Two reasons. First, hex values in sRGB are gamma-encoded rather than proportional to actual light, so a plain average does not sit at the true light midpoint. Second, color space is perceptually non-uniform, meaning equal numeric steps do not look like equal visual steps. Together these push the averaged result toward a shade that often looks too light, too dark, or off in hue.

What does perceptually non-uniform mean?

It means the same numeric change in color values can look large in one region of the space and barely visible in another. MacAdam's experiments showed this directly: the zones where differences are invisible form ellipses of very different sizes across the color diagram. Because of that, equal distances in raw coordinates do not correspond to equal perceived differences.

What is CIEDE2000?

CIEDE2000 is a color-difference formula that estimates how different two colors look to a human observer. It builds on the CIELAB space and adds corrections for lightness, chroma, and hue so the calculated distance matches perception more closely than earlier methods. It is the most widely used modern standard for measuring how far apart two colors appear.

What is a just-noticeable difference for color?

A just-noticeable difference is the smallest color change a viewer can reliably detect. For a trained observer it is often around a Delta-E of one to two, and anything smaller is effectively invisible. This gives a concrete definition of "close enough," since a guess within a just-noticeable difference of the true midpoint cannot be told apart from it.

Which color space should I use to find a midpoint?

For a result that matches the eye, work in a perception-aligned space such as CIELAB, or measure distance with CIEDE2000, rather than averaging raw RGB or hex. If you must stay in RGB, at least convert to linear light before averaging and re-encode afterward. HSL and HSV are useful for reasoning about hue but are not truly uniform, so they are not ideal for a precise midpoint.

Sources: Mark D. Fairchild, Color Appearance Models (Wiley), on perceptual color spaces and non-uniformity; Sharma, Wu & Dalal (2005), "The CIEDE2000 color-difference formula," on the formula's corrections; Wikipedia, Color difference (CIEDE2000) and HSL and HSV; Techkon / Datacolor, CIE ΔE Color Difference Equations.

Understand it — now train it. The daily games stay free forever. A Personal Pass adds progress tracking (trends + export); Teacher / School tools let you assign it and follow a whole class. For teachers & self-learners →

Updated · By Lajos Toldi — educator and researcher in adaptive intelligent tutoring systems at AI24EduLabs (part of AI24Labs). Scientific claims are checked against authoritative sources; see our editorial policy.