Color Memory Game
By John K.··14 min read

Just noticeable difference: the color threshold everyone quotes is three numbers, not one

The just noticeable difference is taught as a single number. Measured in CIEDE2000 across sRGB, the same threshold needs a 3.5 point move in brightness, a 5.5 degree move in hue, or a 7.9 point move in saturation. Here is where the JND comes from, what it is worth in color, and why psychophysics says the wall you were taught does not exist.

Two squares of color sit side by side. They are almost the same. Are they the same? At some point the difference gets small enough that you stop being able to tell, and psychology has a name for the size of the gap where that happens. It is the just noticeable difference, usually shortened to JND.

The definition you will find in every intro textbook is tidy. The JND is the smallest change in a stimulus that a person can detect half the time. It is also called the difference threshold, or the difference limen if the book is old enough. Weber found it, Fechner formalised it, and it has been in the first chapter of psychology courses for a century and a half.

The tidiness is the problem. For color specifically, the JND gets quoted as a single number, and it is not one. I measured it across the sRGB gamut and it comes out as a 3.53 point move in brightness, a 5.54 degree move in hue, or a 7.85 point move in saturation, all producing exactly the same perceptual difference. Whether a change is noticeable depends on which direction you push it, and by more than a factor of two.

That is the measurable half. The other half is worse for the textbook, and it comes from the psychophysics literature rather than from me.

Where the just noticeable difference came from

Ernst Weber was a physiologist at Leipzig working on touch in the 1830s. He handed people weights and asked which was heavier. What he noticed was not that people had a fixed resolution, but that their resolution scaled. Somebody holding a light weight could detect a small addition. The same person holding a heavy weight needed a proportionally larger one before anything changed.

Written out, that is Weber's law: the just noticeable difference is a constant fraction of the starting stimulus. Double the stimulus and you double the change required. The fraction itself, the Weber fraction, varies by sense. Lifted weight sits near two percent, sound intensity near three, and brightness closer to eight. That last figure is why a candle matters in a dark room and does nothing at noon.

Gustav Fechner took Weber's observation and integrated it, which gives you a logarithmic relationship between physical intensity and perceived intensity. Fechner published that in 1860 and effectively invented psychophysics as a discipline in the process. Almost everything that follows in this article is downstream of those two results.

The important thing to hold onto is that Weber's law is about a ratio. The JND was never supposed to be a fixed quantity. It was supposed to be a fixed proportion, which means the actual number changes everywhere you go.

Weber's law is already built into your screen

Here is a consequence of that ratio which almost nobody points out. Weber's law is not just a description of your eye. It is a specification that display hardware was built to satisfy, and you can measure it in the encoding.

An 8-bit sRGB channel has 256 steps. If those steps were spread evenly across physical light output, the dark end would band horribly and the bright end would waste codes, because your eye follows Weber and light output does not. So sRGB does not store light linearly. It applies a transfer curve, roughly a 2.2 power, which packs many more code values into the shadows than into the highlights.

You can check how well that compensation works. Walk the neutral gray ramp, and at each point ask how many 8-bit steps you have to move before the difference reaches 2.3 CIEDE2000, the figure usually given as the threshold where a color difference becomes obvious:

  • Near black, at code 0, it takes 14 steps.
  • At code 32, it takes 8.
  • Through the midtones, from code 64 to 128, it takes 7.
  • At code 192, it takes 10.
  • At white, code 255, it takes 12.

So the encoding overshoots. It was aiming for perceptual evenness and it landed on shadows and highlights that are sampled about twice as finely as the midtones. That is a good failure to have, since banding in a dark gradient is the most visible artefact in consumer imaging, but it does mean the same numeric step in a hex code is worth roughly half as much perceptually at the ends of the ramp as it is in the middle. Anyone who has nudged a hex value by one and seen nothing happen has met Weber's law without being introduced.

The consequence for gray specifically is that sRGB gives you 256 gray codes and your eye can separate about 67 of them at the detection threshold, or 31 at the obvious threshold. I worked through that count in detail in the piece on shades of gray.

The number for color, and why there are several of them

Ask what the JND is for color and you will get one of three answers, depending on who you ask and which decade their reference is from.

2.3 in CIELAB

This is the most quoted figure, and it comes from work by Mahy, Van Eycken and Oosterlinck in 1994 evaluating how uniform the various color spaces actually were. Their average just noticeable difference in CIELAB, measured with the original 1976 distance formula, was about 2.3 units. It has been repeated ever since, often without the context that it was an average across a space known to be uneven.

1.0 in CIEDE2000

CIEDE2000 was designed with the explicit intention that a difference of 1.0 should sit at the threshold of perceptibility. That was the design goal of the formula, not an experimental finding about it, which is a distinction worth keeping straight. The formula applies corrections for lightness, chroma and hue precisely because CIELAB was not uniform enough for a single number to mean the same thing everywhere.

Somewhere between 3 and 6 in practice

Print and manufacturing tolerances usually sit here. The gap is not sloppiness. It reflects the fact that laboratory thresholds are measured with two patches touching, under controlled light, by an observer whose only job is to compare them. Nobody looks at anything that way outside a lab.

Across this site I use 2.3 as the working threshold, since it is the figure most color references quote, and 1.0 when the question is bare detectability rather than obviousness. Both appear below and I have said which is which each time.

Measured: the threshold is three numbers, not one

Now to the part I could measure rather than cite. If the JND were really one number, then the size of a color change ought to be describable without saying which way it went. It is not.

The method: take 40,000 colors sampled across the usable middle of the sRGB gamut, the same region this site draws its targets from. For each one, move it along a single axis at a time, hue, saturation or brightness, and use a binary search to find the exact distance at which the change reaches 2.3 CIEDE2000. Then look at the distribution.

  • Brightness: median move required 3.53 points out of 100, with a tight spread from 2.44 at the fifth percentile to 4.90 at the ninety fifth.
  • Hue: median 5.54 degrees of the circle, spreading from 2.38 to 12.09.
  • Saturation: median 7.85 points, spreading from 4.02 all the way to 17.15.

Two things fall out of that. The first is the ranking. Brightness is the channel your eye guards most closely, and saturation is the one it cares least about. It takes more than twice as much saturation movement as brightness movement to produce the same noticeable difference. If you want to change a color without anyone noticing, desaturate it. If you want to change it and be seen doing it, adjust the brightness.

The second is the spread within each channel. Hue is the dramatic case: a 2.38 degree turn is enough in some parts of the wheel and a 12.09 degree turn is still not enough in others, a five-fold range for what is supposedly one threshold. That unevenness is not an artefact of the formula. It is the same asymmetry that makes the Farnsworth-Munsell 100 hue test much harder in some quadrants than others, and it is why a single number for the JND was always going to be a compromise.

My opinion, for what it is worth after running this: quoting a JND for color without saying which direction and where in the gamut is close to meaningless. The number is a summary statistic for a shape, and the shape is lopsided.

How many colors does the threshold actually leave you?

The 16.7 million figure attached to 24-bit color is an encoding count, not a perceptual one. The JND lets you turn it into a perceptual one, and the reduction is severe.

I sampled random sRGB codes and, for each, counted how many other codes in the whole 16.7 million lie within one CIEDE2000 unit of it, expanding the search box until nothing was being cut off at the edges. The median answer is 662. Sitting around the median sRGB color are roughly 660 other hex codes that are, to your eye, the same color. The tenth percentile is 147 and the ninetieth is 2,799, which is the anisotropy from the last section showing up again as unevenly sized clusters.

Turn that density into a count. Selecting colors so that no two are within 1.0 CIEDE2000 of each other, sRGB holds around 380,000 of them. That is a density estimate rather than an exact packing, so treat the leading digit as the real content, but the conclusion survives any reasonable tightening: fewer than one code in forty in the sRGB cube is contributing a color you can actually distinguish from its neighbours. Raise the bar from detectable to obvious and the survivors drop by roughly another order of magnitude.

This lines up with the broader question of how many colors you can see, where the answer depends almost entirely on where you put the threshold and hardly at all on the display.

Auditing our own hardest round against the threshold

There is a mode on this site called Spot the Difference, where two grids of color tiles sit side by side, identical except for one tile that differs slightly. Five rounds, the grid grows each round, the difference shrinks each round, ten seconds on the clock. It is the closest thing here to a laboratory discrimination task, so it seemed only fair to point the same measurement at it. The wider question of why spot the difference puzzles beat people who can see perfectly well gets its own article.

The generator applies a shift to one channel picked at random, and the shift sizes are fixed per round: 30, 24, 18, 13 and 9 degrees for hue, and 22, 17, 13, 10 and 7 points for saturation or brightness. Simulating 30,000 rounds at each difficulty and measuring what those shifts are worth in CIEDE2000:

  • Round 1: median difference 11.72. One percent of rounds fall below 2.3.
  • Round 2: median 9.14. Below threshold on 3.7 percent.
  • Round 3: median 6.95. Below threshold on 7.9 percent.
  • Round 4: median 5.24. Below threshold on 13.8 percent.
  • Round 5: median 3.64. Below threshold on 27.1 percent, and below even the bare 1.0 detection floor on 5.1 percent.

So round five is not merely hard. More than one round in four puts a difference in front of you that sits under the threshold at which a difference is supposed to be obvious, and one round in twenty is close to invisible. When the last round feels unfair, sometimes it is.

The anisotropy shows up here too, and it is the finding I found most useful. Broken out by channel, the same round five delivers a median 4.53 when brightness is the channel that moved, 3.82 when hue moved, and only 1.91 when saturation moved. Three nominally identical rounds, a 2.4-fold difficulty swing, decided by a coin flip you never see. If you have ever felt that some round fives are far worse than others, you were right, and the reason is that the difficulty was set in HSV units rather than perceptual ones.

I am leaving the generator as it is for now, because equalising it would change every historical score on that board, but it is on the list. It is a good illustration of the practical cost of treating HSV distance as if it were perceptual distance.

The part where the textbook is wrong

Everything above takes the JND at face value and asks what value it has. There is a stronger objection, and it comes from psychophysics itself.

Emily Sanford and Justin Halberda at Johns Hopkins published work under the title There is no such thing as a "Just Noticeable" Difference, and followed it with a paper in Open Mind in 2023 examining what people actually believe the JND means. Their finding is uncomfortable. Both novices and students who had been formally taught psychophysics understood the JND to mean that below some threshold, discrimination collapses to chance. Ask whether someone can tell 3,000 grains of sand from 3,001 and the intuition says no, not poorly, but genuinely at chance.

That belief is not what the psychophysical law says. Performance approaches chance as the difference shrinks, but it approaches it smoothly, without ever hitting a wall. There is no gap size at which sensitivity switches off. The 50 percent in the standard definition is a convention, a point picked off a continuous curve because you need somewhere to put a number, not a discovered boundary in the nervous system.

Sanford and Halberda's broader point is that belief in a threshold is part of our intuitive theory of how minds work, which is why teaching does not dislodge it. Their survey of datasets spanning humans, mice, seals, bats and butterflies found the same smooth curve rather than the step everyone expects.

Once you have seen the round five numbers, this is easy to believe. The saturation variant of round five averages 1.91 CIEDE2000, comfortably under the quoted threshold, and it is still a round people finish rather than a round that stops being a game. I do not have per-round detection data to put a curve to that, so treat it as an observation rather than a measurement. But nothing about playing it suggests a cliff. It reads like a slope.

What a threshold is worth on a ten point scale

This site scores a guess by taking the CIEDE2000 distance between your color and the target and running it through a sigmoid to land on zero to ten. That makes it easy to translate thresholds into scores, and the translation is more sobering than most players expect:

  • A difference of 1.0, bare detectability, scores 9.93.
  • A difference of 2.3, the classic JND, scores 9.76.
  • A score of 9.5 means you were off by 3.78, about 1.6 JNDs.
  • A score of 9.0 means you were off by 6.12, which is closer to three JNDs.
  • A score of 8.0 means 10.32, four and a half JNDs of visible error.

The useful reading of that table is that the interesting scoring happens in the last half point. Everything from 0 to 9 is the range where you can see you were wrong. Only above 9.9 are you operating at the edge of discrimination, which is why the leaderboards compress so hard at the top and why the difference between a good player and a great one comes down to hundredths.

There is a second comparison worth making. Working out what colors cost when you can only remember their names, in the piece on aphantasia and color memory, gave a floor of 17.90 CIEDE2000. Set that against a discrimination threshold of 2.3 and the ratio is nearly eight to one. Your eye resolves color roughly eight times more finely than a verbal memory of it can reproduce. That gap is the entire reason a color memory game is harder than a color matching game, a distinction I went through in color memory versus color matching.

Measuring your own threshold

None of the numbers above are your numbers. Weber fractions vary between people, they shift with age, and they depend on your screen, your room light and how long you have been staring at things. If you want your own figure rather than a population median, the useful thing about a discrimination task is that it gives you one.

  • Spot the Difference is the direct test. The round you start failing tells you roughly where your threshold sits, since the median difference drops from 11.72 to 3.64 across the five. Play it several times, because a single run mostly measures which channel the coin flip picked.
  • Hue Sort puts the pressure on hue specifically, which is where the spread is widest.
  • Match keeps the target on screen, so it measures discrimination without memory getting involved. Comparing your Match scores with your color memory test results separates the two.

The thing to watch for is that your threshold barely moves with practice. What improves is your search strategy, your attention, and your vocabulary for what you are looking at, which is the same conclusion the research on training your eye for color keeps arriving at. The sensor is fixed. What you do with the signal is not.

The short version

The just noticeable difference is a real and useful idea that has been flattened into a number it cannot support. For color, the honest summary is that a difference of about 2.3 CIEDE2000 is where most people start finding differences obvious, that the same threshold requires a 3.53 point brightness move, a 5.54 degree hue turn or a 7.85 point saturation change depending on direction, that this leaves fewer than one sRGB code in forty doing distinguishable work, and that below any of those figures detection degrades gradually instead of stopping.

Weber was right about the ratio. The textbook is wrong about the wall.