What Is Chroma Subsampling? — Free, Fast & Private
Human vision resolves brightness far more sharply than colour. Image and video codecs have exploited that for decades: store the brightness channel at full resolution, and store the colour channels at half. The picture looks the same and the file is substantially smaller.
To do it, the encoder converts RGB into YCbCr — Y is luma (brightness), Cb and Cr are the two chroma (colour) channels. Then it throws away some of the chroma. How much is what the ratio notation describes:
- 4:4:4 — no subsampling. Every pixel keeps its own colour value.
- 4:2:2 — colour sampled at half horizontal resolution. Two pixels side by side share one colour value.
- 4:2:0 — colour sampled at half resolution both horizontally and vertically. A 2×2 block of four pixels shares a single colour value. This is the default for almost every JPEG.
4:2:0 discards three quarters of the colour samples. On a photograph you will not see it: real-world colour varies gradually across a face, a wall, a sky, so one value serving four pixels is close enough to be invisible.
Where it falls apart: red text on white
Now take a hard edge between two colours of similar brightness — red text on a white background is the canonical example. The luma channel keeps the edge sharp, but the colour information is being averaged across 2×2 blocks. The red bleeds outward by a pixel and the letters acquire a muddy fringe.
Once you know to look for it you will see it everywhere: red or blue text in JPEG screenshots, saturated logos, coloured UI elements, subtitles, diagrams with thin coloured lines. It is not a quality-setting problem. Push JPEG quality to 95 and the fringe is still there, because it comes from the colour channels being sampled at half resolution before quality is applied at all.
What to do about it
Use PNG for coloured text and graphics. PNG stores RGB directly with no colour conversion and no subsampling, so the edge stays exactly where you put it. This is the real reason screenshots should not be JPEGs — not that JPEG is “lossy” in the abstract, but that this specific mechanism attacks precisely the content a screenshot is made of.
WebP and AVIF handle it better. Both support 4:4:4, and both are far more efficient than JPEG at the same visual quality, which is why a WebP screenshot can be smaller than the JPEG and cleaner. For anything web-facing that mixes photography and text, they are the better default.
Or raise the resolution. If the file has to be JPEG, doubling the pixel width means the 2×2 chroma blocks cover half as much of the visible letterform, which softens the artefact without eliminating it. A workaround, not a fix.
Why 4:2:0 is still the right default
It is worth saying plainly that subsampling is not a defect. For photographs — which is what JPEG was designed for and what most images are — it removes a large fraction of the data at no perceptual cost whatsoever. Every digital camera, every streaming service and every video codec relies on the same trick.
The practical rule is simply to know which kind of image you have. Photograph: JPEG at 4:2:0, and enjoy the smaller file. Coloured text, a logo, a screenshot, a chart: PNG, or WebP/AVIF at 4:4:4.
MiniPx Pro exposes chroma subsampling as an explicit control for cases where you want to make that call yourself. The free tier picks sensible defaults per format — and choosing PNG or WebP for graphics sidesteps the question entirely.
For how the three formats compare more broadly, see WebP vs PNG vs JPEG.
