Color Persists in the Periphery: Even Where You're Not Looking

v1.9.0 release notes →

For twenty years, the standard shorthand for peripheral color has been “desaturation”: color drains away uniformly with eccentricity. This framing comes from a specific historical moment: threshold studies measured the minimum detectable chromatic contrast at increasing eccentricities and found it rising steeply, especially for red-green. The conclusion hardened into conventional wisdom. Peripheral vision is achromatic. Color is foveal.

Those studies measured detection thresholds. Web colors are saturated reds, blues, and greens well above any detection limit. More recent literature paints a different picture. Jiang, Shooner & Mullen (2022) showed that perceived contrast follows a compressive power law, so peripheral color appearance holds up much better than threshold sensitivity would predict. Tyler (2015) demonstrated that eccentricity-scaled stimuli appear vivid out to large eccentricities. Rosenholtz’s Texture Tiling Model treats peripheral color as pooled: averaged over progressively larger regions, preserving mean chromaticity while losing spatial chromatic detail.

This release replaces Scrutinizer’s uniform chrominance reduction with a pipeline grounded in the current understanding.

For practitioners, this is the biological mechanism behind WCAG 1.4.1 (Use of Color). The guideline says not to rely on color alone, and the periphery shows why. Red-green distinctions that are obvious at fixation become ambiguous a few degrees away. But color itself persists: make colored regions large enough, and they remain visible far into the periphery.

Update (2026-10-01): WCAG 1.4.1 was written for users with color-vision deficiencies or partial sight and for monochrome displays (W3C, Understanding 1.4.1); peripheral vision is not its basis. Peripheral color is pooled and, for red-green, also lost: red-green cone-opponent sensitivity falls steeply away from the fovea (Mullen & Kingdom 2002), as the channel section below describes. Jiang, Shooner & Mullen (2022) found perceived contrast reduced with eccentricity at low and mid contrasts, with contrast constancy only at the highest contrasts.


Before and after

The color spectrum reference page: a continuous hue gradient from red to magenta with rod sensitivity curve overlay, labeled color swatches, and shade rows.
The color spectrum reference page, unmodified. Full-saturation hues across the visible spectrum with rod sensitivity (V′) overlay. Access in Scrutinizer via Go → Reference Pages → Color Spectrum. This is the input Scrutinizer processes. The next figure shows what survives in the periphery and how differently each channel decays.
Before/after comparison of chromatic pooling on a color spectrum test page. Left: uniform desaturation washes everything to grey. Right: blue-yellow persists into periphery while red-green fades.
Color spectrum reference page. Left: the old uniform approach, where all color fades at the same rate. Right: per-channel decay, where blue-yellow persists into the periphery while red-green fades faster. Large color swatches retain their hue further than small ones, as the research predicts (Abramov et al. 1991).
Before/after comparison on a dashboard UI. Left: peripheral UI is achromatic. Right: blue sidebar and green status badges retain color.
Dashboard page, Mode 0 (High-Key). Fixation at center (the “$45,231” hero metric). Left: everything outside the fovea is grey. Right: the blue sidebar retains its identity, green status badges remain discriminable, and red accents are attenuated but present. A designer using the left rendering would conclude “nobody can see the color coding in the table” and add redundant labels. The right rendering shows that the color coding is peripherally visible at a coarse level, which is a different and more accurate design signal.

What changed in the pipeline

Two biological asymmetries that uniform desaturation misses entirely:

Channel-dependent decay rates

Red-green color sensitivity is a foveal specialization. The wiring that lets you distinguish red from green depends on one-to-one connections between photoreceptors and brain cells, and those connections exist only near the center of gaze. As you move into the periphery, those connections pool together and the red-green signal collapses. Half the sensitivity is gone by about 5° from center.

Blue-yellow is different. The wiring for blue-yellow covers the entire retina. It is ancient neural circuitry, far older than the red-green specialization. Half the sensitivity isn’t lost until about 26°. That’s roughly a 5:1 difference in how fast these two color channels fall off. The old approach treated both channels identically, which over-attenuates blue-yellow by an order of magnitude.

Size-dependent preservation

Bigger color areas survive further into the periphery. A full-width colored banner retains its color identity much further than 14px colored text (Abramov, Gordon & Chan 1991). The visual system pools color over progressively larger regions. Large patches average to a consistent hue, while small colored details get swallowed.

Scrutinizer’s pipeline already separates content by spatial scale (fine detail vs. large regions). Applying different color decay rates at each scale gives size-dependent preservation without measuring stimulus size explicitly. For design, if you rely on color coding for peripheral discoverability, make the colored regions large.

Channel50% sensitivityWhat this means for design
Red-green~5° from fixationRed/green distinctions only work near where the user is looking
Blue-yellow~26° from fixationBlue UI elements remain visible across most of the screen
Brightness~7° from fixationLight/dark contrast is the most reliable peripheral signal

Standard UX guidance says don’t rely on color alone (Gordon, NNg 2021): pair it with icons, labels, or shape. That advice is correct but incomplete. It treats all hues as equivalent, as though a red badge and a blue sidebar faced the same peripheral fate. A red error dot in a nav bar sits roughly 10–15° from typical reading fixation, well past the 5° half-sensitivity point for red-green. At that eccentricity the dot has lost most of its chromatic identity and survives only on luminance contrast. A blue sidebar at the same eccentricity retains its hue, because 10° is still inside the blue-yellow channel’s comfort zone. Blue and yellow outlast red and green in the periphery by a wide margin, which makes them the better choice for color coding meant to be read in the periphery.

Colors well above the detection threshold, like the saturated reds and blues on most websites, hold up better in the periphery than threshold studies predicted (Jiang, Shooner & Mullen 2022). The shader applies a correction for this so web-scale colors don’t vanish unrealistically fast.

Open calibration question: How much peripheral saturation to preserve is still being tuned. The correction is conservative (exponent 0.5); the literature suggests 0.6–0.65 may be more accurate. The parameter is exposed as a tunable setting for researchers who want to experiment.

Congestion-gated pooling (Mode 9)

Update (v2.2): This feature graduated from experimental to default. Congestion-gated pooling now runs in all research modes with zero measurable frame-time cost on static pages. v2.2 release post →

Rosenholtz et al. (2012) argue that peripheral vision computes summary statistics over local pooling regions, and that clutter is what happens when those statistics are ambiguous: too many features packed into a pooling region make the summary unreliable. Mode 9 tests this prediction directly: the shader reads the congestion map and multiplies peripheral pooling strength by local clutter.

// peripheral2.frag
float congestionBoost = 1.0 + lgn.congestion * 1.0;  // 1.0x – 2.0x
coupledEccentricity *= congestionBoost;

Dense text columns and image-heavy sidebars pool more aggressively in the periphery than clean whitespace. The congestion worker auto-starts on mode selection and recomputes on scroll and navigation.

Tagged experimental. The 1.0× multiplier and linear boost curve are initial estimates. The prediction is testable: show observers gated vs. ungated peripheral renderings alongside gaze-contingent photographs and measure which simulation looks more realistic.


Crowding: the gap we can see

Two new reference pages show a fundamental limitation. crowding.html places a target letter flanked by random letters (crowded) next to an identical letter in isolation, both at the same eccentricity. In real peripheral vision, the isolated letter is identifiable while the crowded letter is not, even when both are above acuity threshold.

In Scrutinizer, both letters are equally degraded. The V1 stage’s displacement field is computed from pixel position only, with no knowledge of what is adjacent. An isolated letter and a densely flanked letter at the same eccentricity receive identical distortion.

Bouma’s law predicts critical spacing of ~0.4–0.5× eccentricity (Bouma spacing reference). Flankers within this radius contaminate the target’s pooling region; flankers outside it leave the target intact. Implementing this requires feeding the structure map’s density channel into the V1 stage’s strength through a sigmoid gate, so dense content gets full displacement and isolated elements are spared. The spec is written (density_gated_crowding.md), the reference pages are published, and the gap is documented.


Also in this release

Update (2026-10-01): Saccadic suppression is not specific to the fovea. It reduces sensitivity across the visual field, selectively for low-spatial-frequency luminance patterns; high-spatial-frequency and color patterns are not suppressed (Burr, Morrone & Ross 1994). Shrinking the fovea is a visual approximation, and its velocity thresholds have no biological calibration. On “pooled, not lost,” see the note near the top: red-green signal is also lost.


What’s next

Update (2026-10-01): The oriented DoG bands shipped with a smaller cardinal advantage than ~50%; see the v2.2 post.


Links: GitHub · Changelog · Full release notes · Chromatic pooling spec

References: Ashraf et al. 2024 (castleCSF) · Jiang, Shooner & Mullen 2022 · Abramov, Gordon & Chan 1991 · Bowers, Gegenfurtner & Goettker 2025 · Rosenholtz et al. 2012 (TTM) · Mullen & Kingdom 2002 · Tyler 2015 · Gordon 2021 (NNg) · Annotated Bibliography · Primer References