Screen Banding Explained: 8-bit vs 10-bit, FRC, and Gradients
Point a slow sunset at almost any screen and you’ll see it: instead of a smooth fade from orange to blue, a series of flat stripes with visible seams. That’s banding, and it’s the most misunderstood “defect” in display testing — because sometimes it’s your panel, sometimes it’s the content, and sometimes it’s your video card quietly throwing away data.
Run the gradient test on the homepage while you read; this article is much better with the evidence on screen.
Where the stripes come from
A digital gradient isn’t continuous — it’s a staircase of discrete levels, and banding is simply the staircase becoming visible.
With 8 bits per channel, a grayscale ramp has 256 possible levels. Stretch those 256 levels across a 2560-pixel-wide screen and each level occupies a 10-pixel-wide column. Whether you see those columns depends on how far apart the levels are perceptually — and human vision is cruelest in dark regions and in slow, large-area gradients. That’s why banding lives in sunsets, fog, vignettes, and dark movie scenes, and almost never in busy daylight footage.
With 10 bits, the same ramp has 1,024 levels — four steps inside every one 8-bit step. Large smooth gradients are where those extra bits actually matter; HDR formats assume 10-bit for exactly this reason.
The panel bit-depth food chain
What you bought and what you got are often different numbers:
- True 10-bit panels are mostly professional monitors and high-end TVs.
- 8-bit + FRC is what most “10-bit” consumer monitors are. FRC (frame rate control) flickers a pixel between two adjacent 8-bit levels frame by frame so the average lands in between. Done well, it’s genuinely hard to distinguish from true 10-bit at viewing distance.
- True 8-bit is the mainstream desktop monitor.
- 6-bit + FRC is common in budget laptops. 64 real levels per channel, dithered hard. If a cheap laptop’s gradients look crunchy next to your desktop’s, this is why — it’s built in, and no setting removes it.
The catch: a 10-bit panel only shows 10-bit gradients when the whole chain plays along — the content, the app, the OS, the GPU output format, and the cable all have to carry 10 bits. Any 8-bit link quantizes everything after it.
Why a browser test can’t prove bit depth
Honesty section. Our gradient test draws the smoothest ramp the browser will give it — and browsers, today, hand almost all page content to the screen at 8 bits per channel, with color management in between that can itself introduce or hide steps. What the test is genuinely good at:
- Comparing regions of one screen — banding that appears only in a corner, or changes with viewing angle, is a panel property, not a content property.
- Catching gross problems — a 6-bit-class panel, a display cable negotiated down to a lower format, aggressive “dynamic contrast” mangling the ramp.
- Spotting dirty-screen effects — a ramp sweeping slowly across the panel makes uniformity problems obvious in a way solid colors don’t.
What it can’t do is certify your panel as true 10-bit. That requires a test pattern generator feeding known 10-bit signals through a controlled chain. Treat anyone’s browser test that claims otherwise with suspicion, ours included — which is why ours doesn’t claim it.
Is it the screen, the signal, or the source?
Three quick experiments separate the suspects:
- Our ramp is banded, everywhere on the panel, on every input. Panel or GPU output format. Check your display settings: output color depth (8 vs 10 bpc), and on TVs-as-monitors, whether the HDMI input is in “PC” mode. Long or cheap cables at high resolutions and refresh rates force lower formats more often than people think.
- Our ramp is smooth, your movie is banded. The content. Heavy video compression quantizes gradients before your screen ever sees them; streaming platforms’ dark scenes are famous for it. No monitor setting fixes upstream compression.
- Ramps band only after enabling HDR. The chain. HDR pipelines that tone-map badly, or fall back to 8-bit at certain refresh rates, produce worse gradients than plain SDR. Try dropping the refresh rate one notch — bandwidth limits force these tradeoffs silently.
What actually helps
- Set the GPU to 10 bpc if the panel and cable support it (and accept that some combinations of resolution and refresh rate won’t).
- Use good cables at spec, especially past 4K60.
- Turn off “contrast enhancement” features, which posterize shadows by design.
- For content you create: add subtle noise (dither) to large gradients before exporting to 8-bit. Film grain is a banding vaccine — that’s not an accident.
And calibrate your expectations along with the screen: a faint step in a full-screen black-to-white ramp at close range is an 8-bit panel behaving exactly as 8 bits behave. The test that matters is whether real content shows stripes at real distance.