On this page
The problem web-safe colors solved
In the mid-1990s, a large share of computers could display only 256 colors at once. Which 256 wasn't standardized: operating systems reserved some for their own interface, browsers claimed others, and anything a web page requested beyond the available palette got dithered — approximated by speckling pixels of the nearest available colors. Dithered photos were tolerable; dithered logos and page backgrounds looked broken.
Browser vendors converged on a shared palette that would survive on virtually any display: every combination where each RGB channel is one of exactly six values — 0, 51, 102, 153, 204, 255, or in hex 00, 33, 66, 99, CC, FF. Six levels per channel gives 6 × 6 × 6 = 216 colors, comfortably inside a 256-color budget with room left for system colors. If you built your site from those 216, it rendered with no dithering nearly everywhere. That's the entire origin of the "web-safe" palette — you can browse all of it in our color chart.
Why the numbers are 0, 51, 102…
The six levels are simply 255 divided into five equal steps: 255 ÷ 5 = 51. Every web-safe value is a multiple of 51 per channel, which is also why web-safe hex codes always use doubled digits from the set 0, 3, 6, 9, C, F — #336699, #FF6600, #99CC33. If you've ever wondered why so many late-90s sites shared that instantly recognizable slightly-chunky color scheme, it's because everyone was picking from the same 216 crayons.
When it stopped mattering
By the early 2000s, "high color" (16-bit) and "true color" (24-bit) displays were standard, and the technical constraint evaporated — a modern screen renders all 16.7 million values of 24-bit RGB without breaking a sweat, and today's conversation has moved on to gamuts wider than that. No current device, browser, or accessibility guideline gives web-safe colors any special status. Choosing #336699 over #34679a buys you nothing technically. It hasn't for roughly two decades.
It's worth saying that plainly because the term still circulates with an implied authority it no longer has. If a guide tells you to "stick to web-safe colors" for compatibility, that advice is about twenty years stale.
What the palette is still good for
Honestly assessed, a few things:
A deliberate constraint. Two-hundred-sixteen options is a manageable creative sandbox, and constraints breed coherence. Some designers use the palette the way a painter uses a limited pigment set.
Period-accurate design. If you're evoking the 1990s web — for a game, a retro landing page, an art project — the web-safe palette is the period's material, and using it produces authenticity that arbitrary "retro-ish" colors don't.
Teaching. The palette's regular structure (six evenly spaced levels per channel) makes it a tidy miniature of the whole RGB cube, which is why it's genuinely useful for building intuition about how channel values combine — small enough to see at once, structured enough to reveal the pattern.
Round numbers. Multiples of 51 make mental arithmetic easy. #663399 decodes at a glance to "40% red, 20% green, 60% blue" — it's no accident that the one CSS color named after a person, rebeccapurple, happens to be web-safe.
What to use instead of the constraint
The modern equivalents of "will this color work everywhere?" are different questions with real answers: Does this pair meet contrast requirements? (check it in the contrast checker); does the distinction survive color vision deficiencies? (check the simulator); am I assuming a wide-gamut display my users may not have? (default to sRGB, as almost everything sensibly does). Those are today's compatibility constraints — the 216 crayons earned their retirement.