Web-safe colors are the 216 RGB combinations that survive every browser-safe test, built by choosing red, green, and blue channels from only six evenly spaced levels (0, 51, 102, 153, 204, and 255), so 6 × 6 × 6 equals exactly 216 unique swatches. Each entry on the Web Safe Colors Chart displays its full six-digit HEX code, which is the format Windows browsers, design tools, and code editors all accept without conversion. The "on Windows" framing is not a coincidence: the original web-safe palette was defined in part because Windows and Macintosh systems each reserved different subsets of the shared 256-color indexed display mode, leaving 216 colors that rendered consistently across both. Modern Windows machines (and every recent Edge, Chrome, Firefox, or Brave build) display millions or billions of colors, so the cube is now a historical and creative reference rather than a compatibility requirement. To work with it from a Windows PC, the chart runs entirely in the browser with no install, no extension, and no file download.

web safe colors on windows
Web Safe Colors on Windows: Find the Nearest Cube Match

What the 216 Web-Safe Colors Actually Are

The palette is the Cartesian product of three independent channels, each restricted to six values. W3C's historical Introduction to CSS documents the same six evenly spaced levels that define the cube. A separate W3C Web Accessibility Initiative example independently lists a 216-choice color picker. Combine those two references with the simple arithmetic and you arrive at exactly 216 swatches, every one of them reproducible from the six channel levels without consulting any opaque list.

In practical Windows terms, this means you can audit every color the chart shows. There is no hidden mapping table, no proprietary palette file, no surprises. Click a swatch and the chart returns its full six-digit HEX in a result area you can highlight manually, even if the browser has denied clipboard access. The table is generated in a deterministic red-major, green-middle, blue-minor order rather than copied from a hard-coded reference, and the chart validates that the result contains exactly 216 entries with unique HEX values whose channels all belong to the six allowed levels.

Why "On Windows" Still Matters for This Palette

The historical reason this palette is named "web safe" traces back to 8-bit indexed color on Windows, Macintosh, and the early browsers that ran on each. A 256-color display could not show every possible RGB combination at once; operating systems reserved roughly 20 colors apiece for window chrome and menus, so the intersection of colors guaranteed to render without dithering on both platforms shrank to around 216. Several historical references note that in practice only 212 colors were fully consistent across all platforms, because Windows Internet Explorer could not correctly display a handful of blue and green channel extremes such as #0033FF, #3300FF, and #00FF33. The cube is therefore a Windows-era artifact as much as a Mac one.

On a current Windows 10 or Windows 11 machine the compatibility story has changed completely. Edge, Chrome, Firefox, Opera, and Brave all support 24-bit or 30-bit color, so a designer can use any of millions of values. The 216 cube survives because it teaches how quantized RGB cubes work, supports deliberately retro artwork, and gives small, reproducible palettes for low-color illustrations. Treat the chart as a transparent reference and a teaching tool rather than a compatibility checklist.

Browse, Copy, and Snap HEX Values in a Windows Browser

The Web Safe Colors Chart runs in any modern browser on Windows, so you do not need to install an extension, download a palette file, or open a separate design program. Three operations cover almost every workflow on the page.

  1. Browse the 216 swatches. Open the chart and scroll the interactive grid. Each swatch carries a shortened three-character hint to keep the grid compact, while its accessible label and title attribute contain the full six-digit value and the RGB triplet, so screen readers and Windows accessibility tools still expose the exact code.
  2. Select a swatch and copy its six-digit HEX. Click any cell to display the full code in a larger result area. The chart attempts a clipboard copy; if Windows or the browser denies clipboard access, the value stays visible for manual selection with the keyboard.
  3. Enter another HEX and find its nearest cube match. Type a valid three-digit or six-digit HEX code into the input field and choose Find match. The result area updates with the snapped swatch, which you can then test for foreground and background contrast using a dedicated Color Contrast Checker instead of assuming the legacy palette guarantees legibility.

Because the table is generated deterministically from the six channel levels rather than copied from a hidden list, you can sample any Windows-side source — a screenshot, a pixel picked from a Figma frame, a value scraped from a design system — and verify the result the chart returns against the rule that every channel must equal one of 00, 33, 66, 99, CC, or FF.

The Six Channel Levels Behind Every Swatch

Each swatch is the combination of one red, one green, and one blue value, with each channel forced to one of six levels. The decimal and hexadecimal pairs follow.

DecimalHexadecimalChannel role
000Channel off
5133First step above zero
10266Second step
15399Third step
204CCFourth step
255FFChannel fully on

Reading a swatch like #3366CC back into decimal gives 51, 102, and 204, the same three values the table sits on. If you sample a color from a photo, an SVG, or any Windows design tool, every channel will land somewhere between 0 and 255, and the cube forces it onto the closest of these six rows.

How the Nearest-Match Function Works

The matcher treats the cube as a regular three-dimensional grid and rounds each channel independently to its nearest multiple of 51. Because the three axes are independent and evenly spaced, the result is the same as a nearest-neighbor search in an ordinary unweighted RGB cube. It is not a perceptual color-difference calculation; sRGB values are gamma encoded and not perceptually uniform, so a specialist workflow might prefer CIEDE2000 comparisons instead. The chart keeps the legacy palette's simple construction visible on purpose, and the table does not label colors with subjective names or imply equivalence to Pantone, CMYK inks, or device-calibrated output.

CSS three-digit shorthand is expanded first. A value like #abc becomes #aabbcc before matching, exactly as a CSS parser would read it. Once each 8-bit channel is rounded, the three snapped levels are reassembled into the final six-digit HEX.

A worked example: input #3470d0.

  • Red 0x34 equals 52 in decimal. The nearest allowed levels are 51 and 102; 52 is one step away from 51, so it snaps to 51, written as 33.
  • Green 0x70 equals 112. The neighbors are 102 and 153; 112 is ten away from 102, so it snaps to 102, written as 66.
  • Blue 0xD0 equals 208. The neighbors are 204 and 255; 208 is four away from 204, so it snaps to 204, written as CC.
  • Reassembled: #3366CC. Independent channel snapping makes the result predictable and easy to audit; the visually closest swatch can occasionally differ from the Euclidean RGB result because human vision does not weight red, green, and blue changes equally.

What Web-Safe Colors Do Not Guarantee

The word "safe" in the name is historical, not a quality claim. Three limits are worth keeping in mind on any Windows project.

First, web-safe does not mean text-safe. Accessibility depends on the contrast between a chosen foreground and a chosen background, on the font size and weight, and on the applicable WCAG criterion. A bright #FF0000 on a bright #FFFF66 may both belong to the cube yet fail a normal-text contrast test. Always run the actual pair through a contrast checker before publishing; for a Windows workflow, follow the steps in Color Contrast Checker on Windows.

Second, web-safe does not mean print-safe, brand-safe, or display-calibrated. The chart does not label colors with subjective names and does not imply equivalence to Pantone, CMYK inks, or any device-calibrated output. Converting a cube swatch to CMYK is a separate step, and an uncalibrated screen color will not match a printed proof one-to-one.

Third, web-safe does not constrain the rest of a design system. Modern data visualization and brand work almost always need more than 216 colors. Use the cube when the brief asks for a quantized, retro, or teaching palette, and skip it when it does not.

When to Use the 216 Cube and When to Skip It

A short comparison helps match the chart to a real Windows-side task.

SituationUse the cubeSkip the cube
Brand palette for a modern product siteNo — most teams need more than 216 colors.Yes — pick from a full-color tool such as a Color Palette Generator.
Retro 8-bit artwork or pixel illustrationYes — the constraint is the point.No.
Teaching RGB channels or HEX shorthandYes — every swatch is auditable.No.
Accessibility-critical UI textNo — being in the cube does not guarantee contrast.Yes — test the pair with a dedicated contrast tool.
Print or CMYK productionNo — the cube is a screen reference.Yes — convert screen colors explicitly.

Once a Windows-side workflow points at the chart, the link below takes you straight to the interactive grid, the HEX input, and the nearest-match finder described above.

For a deeper look, see Color Palette Generator From a HEX Code: Match a Scheme.