Recent from talks
Nothing was collected or created yet.
Web colors
View on Wikipedia
| HTML |
|---|
| HTML and variants |
| HTML elements and attributes |
| Editing |
| Character encodings and language |
| Document and browser models |
| Client-side scripting and APIs |
| Graphics and Web3D technology |
| Comparisons |
Web colors are colors used in displaying web pages on the World Wide Web; they can be described by way of three methods: a color may be specified as an RGB triplet, in hexadecimal format (a hex triplet) or according to its common English name in some cases. A color tool or other graphics software is often used to generate color values. In some uses, hexadecimal color codes are specified with notation using a leading number sign (#).[1][2] A color is specified according to the intensity of its red, green and blue components, each represented by eight bits. Thus, there are 24 bits used to specify a web color within the sRGB gamut, and 16,777,216 colors that may be so specified.
Colors outside the sRGB gamut can be specified in Cascading Style Sheets by making one or more of the red, green and blue components negative or greater than 100%, so the color space is theoretically an unbounded extrapolation of sRGB similar to scRGB.[3] Specifying a non-sRGB color this way requires the RGB() function call. It is impossible with the hexadecimal syntax (and thus impossible in legacy HTML documents that do not use CSS).
The first versions of Mosaic and Netscape Navigator used the X11 color names as the basis for their color lists, as both started as X Window System applications. Web colors have an unambiguous colorimetric definition, sRGB, which relates the chromaticities of a particular phosphor set, a given transfer curve, adaptive whitepoint, and viewing conditions.[4] These have been chosen to be similar to many real-world monitors and viewing conditions, to allow rendering to be fairly close to the specified values even without color management. User agents vary in the fidelity with which they represent the specified colors. More advanced user agents use color management to provide better color fidelity; this is particularly important for Web-to-print applications.
Hex triplet
[edit]A hex triplet is a six-digit (or eight-digit), three-byte (or four-byte) hexadecimal number used in HTML, CSS, SVG, and other computing applications to represent colors. The bytes represent the red, green, and blue components of the color. The optional fourth byte refers to alpha channel. One byte represents a number in the range 00 to FF (in hexadecimal notation), or 0 to 255 in decimal notation. This represents the lowest (0) to the highest (255) intensity of each of the color components. Thus web colors specify colors in the 24-bit RGB color scheme. The hex triplet is formed by concatenating three bytes in hexadecimal notation, in the following order:
- Byte 1: red value (color type red)
- Byte 2: green value (color type green)
- Byte 3: blue value (color type blue)
- Byte 4 (optional): alpha value
For example, consider the color where the red/green/blue values are decimal numbers: red=123, green=58, blue=30 (a hardwood brown color). The decimal numbers 123, 58, and 30 are equivalent to the hexadecimal numbers 7B, 3A, and 1E, respectively. The hex triplet is obtained by concatenating the six hexadecimal digits together, 7B3A1E in this example.
If any one of the three color values is less than 10 hex (16 decimal), it must be represented with a leading zero so that the triplet always has exactly six digits. For example, the decimal triplet 4, 8, 16 would be represented by the hex digits 04, 08, 10, forming the hex triplet 040810.
The number of colors that can be represented by this system is 2563, 166, or 224 = 16,777,216.
Shorthand hexadecimal form
[edit]An abbreviated, three (hexadecimal)-digit or four-digit form can be used,[5] but can cause errors if software or maintenance scripts are only expecting the long form. Expanding this form to the six-digit form is as simple as repeating each digit: 09C becomes 0099CC as presented on the following CSS example:
.threedigit { color: #09C; }
.sixdigit { color: #0099CC; } /* same color as above */
This shorthand form reduces the palette to 4,096 colors, equivalent of 12-bit color as opposed to 24-bit color using the whole six-digit form (16,777,216 colors). This limitation is sufficient for many text-based documents.
Converting RGB to hexadecimal
[edit]RGB values are usually given in the 0–255 range; if they are in the 0–1 range, the values are multiplied by 255 before conversion. This number divided by sixteen (integer division; ignoring any remainder) gives the first hexadecimal digit (between 0 and F, where the letters A to F represent the numbers 10 to 15. See hexadecimal for more details). The remainder gives the second hexadecimal digit. For instance, the RGB value 58 (as shown in the previous example of hex triplets) divides into 3 groups of 16, thus the first digit is 3. A remainder of ten gives the hexadecimal number 3A. Likewise, the RGB value 201 divides into 12 groups of 16, thus the first digit is C. A remainder of nine gives the hexadecimal number C9. This process is repeated for each of the three color values.
Conversion between number bases is a common feature of calculators, including both hand-held models and the software calculators bundled with most modern operating systems. Web-based tools specifically for converting color values are also available.
HTML color names
[edit]Recent W3C specifications of color names distinguishes between basic and extended colors.[6] In HTML and XHTML, colors can be used for text, background color, frame borders, tables, and individual table cells.[7]

Basic colors
[edit]The basic colors are 16 colors defined in the HTML 4.01 specification, ratified in 1999,[8] as follows (names are defined in this context to be case-insensitive):
| Name | Hex (RGB) |
Red (RGB) |
Green (RGB) |
Blue (RGB) |
Hue (HSL/HSV) |
Satur. (HSL) |
Light (HSL) |
Satur. (HSV) |
Value (HSV) |
CGA number (name); alias | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| White | #FFFFFF | 100% | 100% | 100% | 0° | 0% | 100% | 0% | 100% | 15 (white) | |
| Silver | #C0C0C0 | 75% | 75% | 75% | 0° | 0% | 75% | 0% | 75% | 07 (light gray) | |
| Gray | #808080 | 50% | 50% | 50% | 0° | 0% | 50% | 0% | 50% | 08 (dark gray) | |
| Black | #000000 | 0% | 0% | 0% | 0° | 0% | 0% | 0% | 0% | 00 (black) | |
| Red | #FF0000 | 100% | 0% | 0% | 0° | 100% | 50% | 100% | 100% | 12 (high red) | |
| Maroon | #800000 | 50% | 0% | 0% | 0° | 100% | 25% | 100% | 50% | 04 (low red) | |
| Yellow | #FFFF00 | 100% | 100% | 0% | 60° | 100% | 50% | 100% | 100% | 14 (yellow) | |
| Olive | #808000 | 50% | 50% | 0% | 60° | 100% | 25% | 100% | 50% | 06 (brown) | |
| Lime | #00FF00 | 0% | 100% | 0% | 120° | 100% | 50% | 100% | 100% | 10 (high green); green | |
| Green | #008000 | 0% | 50% | 0% | 120° | 100% | 25% | 100% | 50% | 02 (low green) | |
| Aqua | #00FFFF | 0% | 100% | 100% | 180° | 100% | 50% | 100% | 100% | 11 (high cyan); cyan | |
| Teal | #008080 | 0% | 50% | 50% | 180° | 100% | 25% | 100% | 50% | 03 (low cyan) | |
| Blue | #0000FF | 0% | 0% | 100% | 240° | 100% | 50% | 100% | 100% | 09 (high blue) | |
| Navy | #000080 | 0% | 0% | 50% | 240° | 100% | 25% | 100% | 50% | 01 (low blue) | |
| Fuchsia | #FF00FF | 100% | 0% | 100% | 300° | 100% | 50% | 100% | 100% | 13 (high magenta); magenta | |
| Purple | #800080 | 50% | 0% | 50% | 300° | 100% | 25% | 100% | 50% | 05 (low magenta) |
These 16 were labeled as sRGB and included in the HTML 3.0 specification, which noted they were "the standard 16 colors supported with the Windows VGA palette."[9]
Extended colors
[edit]

Extended colors are the result of merging specifications from HTML 4.01, CSS 2.0, SVG 1.0 and CSS3 User Interfaces (CSS3 UI).[6]
Several colors are defined by web browsers. A particular browser may not recognize all of these colors, but as of 2005, all modern, general-use, graphical browsers support the full list of colors. Many of these colors are from the list of X11 color names distributed with the X Window System. These colors were standardized by SVG 1.0, and are accepted by SVG Full user agents. They are not part of SVG Tiny.
The list of colors shipped with the X11 product varies between implementations and clashes with certain of the HTML names such as green. X11 colors are defined as simple RGB (hence, no particular color space), rather than sRGB. This means that the list of colors found in X11 (e.g., in /usr/lib/X11/rgb.txt) should not directly be used to choose colors for the web.[10]
The list of web "X11 colors" from the CSS3 specification, along with their hexadecimal and decimal equivalents, is shown below. Compare the alphabetical lists in the W3C standards. This includes the common synonyms: aqua (HTML4/CSS 1.0 standard name) and cyan (common sRGB name), fuchsia (HTML4/CSS 1.0 standard name) and magenta (common sRGB name), gray (HTML4/CSS 1.0 standard name) and grey.[11][12]
| HTML name | R G B | |
|---|---|---|
| Hex | Decimal | |
| Pink colors | ||
| MediumVioletRed | C71585 | 199, 21, 133 |
| DeepPink | FF1493 | 255, 20, 147 |
| PaleVioletRed | DB7093 | 219, 112, 147 |
| HotPink | FF69B4 | 255, 105, 180 |
| LightPink | FFB6C1 | 255, 182, 193 |
| Pink | FFC0CB | 255, 192, 203 |
| Red colors | ||
| DarkRed | 8B0000 | 139, 0, 0 |
| Red | FF0000 | 255, 0, 0 |
| Firebrick | B22222 | 178, 34, 34 |
| Crimson | DC143C | 220, 20, 60 |
| IndianRed | CD5C5C | 205, 92, 92 |
| LightCoral | F08080 | 240, 128, 128 |
| Salmon | FA8072 | 250, 128, 114 |
| DarkSalmon | E9967A | 233, 150, 122 |
| LightSalmon | FFA07A | 255, 160, 122 |
| Orange colors | ||
| OrangeRed | FF4500 | 255, 69, 0 |
| Tomato | FF6347 | 255, 99, 71 |
| DarkOrange | FF8C00 | 255, 140, 0 |
| Coral | FF7F50 | 255, 127, 80 |
| Orange | FFA500 | 255, 165, 0 |
| Yellow colors | ||
| DarkKhaki | BDB76B | 189, 183, 107 |
| Gold | FFD700 | 255, 215, 0 |
| Khaki | F0E68C | 240, 230, 140 |
| PeachPuff | FFDAB9 | 255, 218, 185 |
| Yellow | FFFF00 | 255, 255, 0 |
| PaleGoldenrod | EEE8AA | 238, 232, 170 |
| Moccasin | FFE4B5 | 255, 228, 181 |
| PapayaWhip | FFEFD5 | 255, 239, 213 |
| LightGoldenrodYellow | FAFAD2 | 250, 250, 210 |
| LemonChiffon | FFFACD | 255, 250, 205 |
| LightYellow | FFFFE0 | 255, 255, 224 |
| Brown colors | ||
| Maroon | 800000 | 128, 0, 0 |
| Brown | A52A2A | 165, 42, 42 |
| SaddleBrown | 8B4513 | 139, 69, 19 |
| Sienna | A0522D | 160, 82, 45 |
| Chocolate | D2691E | 210, 105, 30 |
| DarkGoldenrod | B8860B | 184, 134, 11 |
| Peru | CD853F | 205, 133, 63 |
| RosyBrown | BC8F8F | 188, 143, 143 |
| Goldenrod | DAA520 | 218, 165, 32 |
| SandyBrown | F4A460 | 244, 164, 96 |
| Tan | D2B48C | 210, 180, 140 |
| Burlywood | DEB887 | 222, 184, 135 |
| Wheat | F5DEB3 | 245, 222, 179 |
| NavajoWhite | FFDEAD | 255, 222, 173 |
| Bisque | FFE4C4 | 255, 228, 196 |
| BlanchedAlmond | FFEBCD | 255, 235, 205 |
| Cornsilk | FFF8DC | 255, 248, 220 |
| HTML name | R G B | |
|---|---|---|
| Hex | Decimal | |
| Purple, violet, and magenta colors | ||
| Indigo | 4B0082 | 75, 0, 130 |
| Purple | 800080 | 128, 0, 128 |
| DarkMagenta | 8B008B | 139, 0, 139 |
| DarkViolet | 9400D3 | 148, 0, 211 |
| DarkSlateBlue | 483D8B | 72, 61, 139 |
| BlueViolet | 8A2BE2 | 138, 43, 226 |
| DarkOrchid | 9932CC | 153, 50, 204 |
| Fuchsia | FF00FF | 255, 0, 255 |
| Magenta | FF00FF | 255, 0, 255 |
| SlateBlue | 6A5ACD | 106, 90, 205 |
| MediumSlateBlue | 7B68EE | 123, 104, 238 |
| MediumOrchid | BA55D3 | 186, 85, 211 |
| MediumPurple | 9370DB | 147, 112, 219 |
| Orchid | DA70D6 | 218, 112, 214 |
| Violet | EE82EE | 238, 130, 238 |
| Plum | DDA0DD | 221, 160, 221 |
| Thistle | D8BFD8 | 216, 191, 216 |
| Lavender | E6E6FA | 230, 230, 250 |
| Blue colors | ||
| MidnightBlue | 191970 | 25, 25, 112 |
| Navy | 000080 | 0, 0, 128 |
| DarkBlue | 00008B | 0, 0, 139 |
| MediumBlue | 0000CD | 0, 0, 205 |
| Blue | 0000FF | 0, 0, 255 |
| RoyalBlue | 4169E1 | 65, 105, 225 |
| SteelBlue | 4682B4 | 70, 130, 180 |
| DodgerBlue | 1E90FF | 30, 144, 255 |
| DeepSkyBlue | 00BFFF | 0, 191, 255 |
| CornflowerBlue | 6495ED | 100, 149, 237 |
| SkyBlue | 87CEEB | 135, 206, 235 |
| LightSkyBlue | 87CEFA | 135, 206, 250 |
| LightSteelBlue | B0C4DE | 176, 196, 222 |
| LightBlue | ADD8E6 | 173, 216, 230 |
| PowderBlue | B0E0E6 | 176, 224, 230 |
| Cyan colors | ||
| Teal | 008080 | 0, 128, 128 |
| DarkCyan | 008B8B | 0, 139, 139 |
| LightSeaGreen | 20B2AA | 32, 178, 170 |
| CadetBlue | 5F9EA0 | 95, 158, 160 |
| DarkTurquoise | 00CED1 | 0, 206, 209 |
| MediumTurquoise | 48D1CC | 72, 209, 204 |
| Turquoise | 40E0D0 | 64, 224, 208 |
| Aqua | 00FFFF | 0, 255, 255 |
| Cyan | 00FFFF | 0, 255, 255 |
| Aquamarine | 7FFFD4 | 127, 255, 212 |
| PaleTurquoise | AFEEEE | 175, 238, 238 |
| LightCyan | E0FFFF | 224, 255, 255 |
| HTML name | R G B | |
|---|---|---|
| Hex | Decimal | |
| Green colors | ||
| DarkGreen | 006400 | 0, 100, 0 |
| Green | 008000 | 0, 128, 0 |
| DarkOliveGreen | 556B2F | 85, 107, 47 |
| ForestGreen | 228B22 | 34, 139, 34 |
| SeaGreen | 2E8B57 | 46, 139, 87 |
| Olive | 808000 | 128, 128, 0 |
| OliveDrab | 6B8E23 | 107, 142, 35 |
| MediumSeaGreen | 3CB371 | 60, 179, 113 |
| LimeGreen | 32CD32 | 50, 205, 50 |
| Lime | 00FF00 | 0, 255, 0 |
| SpringGreen | 00FF7F | 0, 255, 127 |
| MediumSpringGreen | 00FA9A | 0, 250, 154 |
| DarkSeaGreen | 8FBC8F | 143, 188, 143 |
| MediumAquamarine | 66CDAA | 102, 205, 170 |
| YellowGreen | 9ACD32 | 154, 205, 50 |
| LawnGreen | 7CFC00 | 124, 252, 0 |
| Chartreuse | 7FFF00 | 127, 255, 0 |
| LightGreen | 90EE90 | 144, 238, 144 |
| GreenYellow | ADFF2F | 173, 255, 47 |
| PaleGreen | 98FB98 | 152, 251, 152 |
| White colors | ||
| MistyRose | FFE4E1 | 255, 228, 225 |
| AntiqueWhite | FAEBD7 | 250, 235, 215 |
| Linen | FAF0E6 | 250, 240, 230 |
| Beige | F5F5DC | 245, 245, 220 |
| WhiteSmoke | F5F5F5 | 245, 245, 245 |
| LavenderBlush | FFF0F5 | 255, 240, 245 |
| OldLace | FDF5E6 | 253, 245, 230 |
| AliceBlue | F0F8FF | 240, 248, 255 |
| Seashell | FFF5EE | 255, 245, 238 |
| GhostWhite | F8F8FF | 248, 248, 255 |
| Honeydew | F0FFF0 | 240, 255, 240 |
| FloralWhite | FFFAF0 | 255, 250, 240 |
| Azure | F0FFFF | 240, 255, 255 |
| MintCream | F5FFFA | 245, 255, 250 |
| Snow | FFFAFA | 255, 250, 250 |
| Ivory | FFFFF0 | 255, 255, 240 |
| White | FFFFFF | 255, 255, 255 |
| Gray and black colors | ||
| Black | 000000 | 0, 0, 0 |
| DarkSlateGray | 2F4F4F | 47, 79, 79 |
| DimGray | 696969 | 105, 105, 105 |
| SlateGray | 708090 | 112, 128, 144 |
| Gray | 808080 | 128, 128, 128 |
| LightSlateGray | 778899 | 119, 136, 153 |
| DarkGray | A9A9A9 | 169, 169, 169 |
| Silver | C0C0C0 | 192, 192, 192 |
| LightGray | D3D3D3 | 211, 211, 211 |
| Gainsboro | DCDCDC | 220, 220, 220 |
CSS colors
[edit]The Cascading Style Sheets specification defines the same number of named colors as the HTML 4 spec, namely the 16 HTML colors, and 124 colors from the Netscape X11 color list for a total of 140 names that were recognized by Internet Explorer (IE) 3.0 and Netscape Navigator 3.0.[13] Blooberry.com notes that Opera 2.1 and Safari 1 also included Netscape's expanded list of 140 color names, but later discovered 14 names not included with Opera 3.5 on Windows 98.[14]
In CSS 2.1, the color 'orange' (one of the 140) was added to the section with the 16 HTML4 colors as a 17th color.[15] The CSS3.0 specification did not include orange in the "HTML4 color keywords" section, which was renamed as "Basic color keywords".[16] In the same reference, the "SVG color keywords" section, was renamed "Extended color keywords", after starting out as "X11 color keywords" in an earlier working draft.[17] The working draft for the level 4 color module combines the Basic and Extended sections together in a simple "Named Colors" section.[18]
| Name | Hex (RGB) |
Red (RGB) |
Green (RGB) |
Blue (RGB) |
Hue (HSL/HSV) |
Satur. (HSL) |
Light (HSL) |
Satur. (HSV) |
Value (HSV) | |
|---|---|---|---|---|---|---|---|---|---|---|
| Orange | #FFA500 | 100% | 65% | 0% | 39° | 100% | 50% | 100% | 100% |
CSS 2, SVG and CSS 2.1 allow web authors to use system colors, which are color names whose values are taken from the operating system, picking the operating system's highlighted text color, or the background color for tooltip controls. This enables web authors to style their content in line with the operating system of the user agent.[19] The CSS3 color module has deprecated the use of system colors in favor of CSS3 UI System Appearance property,[20][21] which itself was subsequently dropped from CSS3.[22]
| Appearance | Keyword |
|---|---|
| linkText | |
| visitedText | |
| activeText | |
| highlight | |
| mark |
The CSS3 specification also introduces HSL color space values to style sheets:[23]
/* RGB model */
p { color: #F00 } /* #rgb */
p { color: #FF0000 } /* #rrggbb */
p { color: rgb(255, 0, 0) } /* integer range 0 - 255 */
p { color: rgb(100%, 0%, 0%) } /* float range 0.0% - 100.0% */
/* RGB with alpha channel, added to CSS3 */
p { color: rgba(255, 0, 0, 0.5) } /* 50% opacity, semi-transparent */
/* HSL model, added to CSS3 */
p { color: hsl(0, 100%, 50%) } /* red */
p { color: hsl(120, 100%, 50%) } /* green */
p { color: hsl(120, 100%, 25%) } /* dark green */
p { color: hsl(120, 100%, 75%) } /* light green */
p { color: hsl(120, 50%, 50%) } /* pastel green */
/* HSL model with alpha channel */
p { color: hsla(120, 100%, 50%, 1) } /* green */
p { color: hsla(120, 100%, 50%, 0.5) } /* semi-transparent green */
p { color: hsla(120, 100%, 50%, 0.1) } /* very transparent green */
CSS also supports the special color transparent, which represents an alpha value of zero; by default, transparent is rendered as an invisible nominal black: rgba(0, 0, 0, 0). It was introduced in CSS1 but its scope of use has expanded over the versions.[23]
CSS Color 4
[edit]Level 4 of the CSS Color specification introduced several new CSS color formats.[24]
Besides new ways to write colors, it also introduces the concept of mixing colors in a non-sRGB color space, a first step towards fixing a well-known issue in color gradients. Some sections explaining color theory and common operations like gamut mapping are also added to aid implementation.[24]
p { color: #F80A } /* #rgba */
p { color: #FF8800AA } /* #rrggbbaa */
p { color: rgb(255.0 136.0 0.0 / 0.667) } /* float range 0.0 - 255.0 for higher than 8-bit precision */
p { color: rgb(100% 53.3% 0% / 66.7%) } /* float range 0.0% - 100.0% */
p { color: color(sRGB 1 0.533 0 / 0.667) } /* color() function with color space */
Device independent color
[edit]CSS Color 4 introduces several different formats for device independent color that can display the entirety of visible color (in a capable screen), including:[25]
- CIE Lab and LCH
- OKLab and OKLCH (preferred over Lab/LCH)[24]: §§9.2–3
- XYZ (D50 or D65 [default])
Predefined color spaces
[edit]A number of RGB spaces with gamuts that are wider than sRGB are also introduced through the new color() function:[25]
A linearized variant of sRGB is also defined for color mixing.[24]
Other formats
[edit]On 21 June 2014, the CSS WG added the color RebeccaPurple to the Editor's Draft of the Colors module level 4, to commemorate Eric Meyer's daughter Rebecca, who died on 7 June 2014, her sixth birthday.[26]
| Name | Hex (RGB) |
Red (RGB) |
Green (RGB) |
Blue (RGB) |
Hue (HSL/HSV) |
Satur. (HSL) |
Light (HSL) |
Satur. (HSV) |
Value (HSV) | |
|---|---|---|---|---|---|---|---|---|---|---|
| RebeccaPurple | #663399 | 40% | 20% | 60% | 270° | 50% | 40% | 67% | 60% |
CSS4 also introduces the HWB color model as an alternative to HSL/HSV.[18]
CSS Color 5
[edit]The draft CSS Color 5[27] specification introduces syntax for mixing and manipulating existing colors, including:
- A
color-mix()function for mixing colors - Relative color syntax for manipulating components of an existing color
Custom color spaces are also supported via ICC profiles. This allows the use of CMYK on web pages.[27]
Web-safe colors
[edit]| Color depth |
|---|
| Related |
In the mid-1990s, many displays were only capable of displaying 256 colors,[28] dictated by the hardware or changeable by a "color table". When a color was found (e.g., in an image) that was not available, a different one had to be used. This was done by either using the closest color or by using dithering.
There were various attempts to make a "standard" color palette. A set of colors was needed that could be shown without dithering on 256-color displays; the number 216 was chosen partly because computer operating systems customarily reserved sixteen to twenty colors for their own use; it was also selected because it allowed exactly six equally spaced shades of red, green, and blue (6 × 6 × 6 = 216), each from 00 to FF (including both limits).
The list of colors was presented as if it had special properties that render it immune to dithering, but on 256-color displays applications could actually set a palette of any selection of colors that they chose, dithering the rest. These colors were chosen specifically because they matched the palettes selected by various browser applications. There were not very different palettes in use in different browsers.[citation needed]
"Web-safe" colors had a flaw in that, on systems such as X11 where the palette is shared between applications, smaller color cubes (5×5×5 or 4×4×4) were allocated by browsers—the "web-safe" colors would dither on such systems. Different results were obtained by providing an image with a larger range of colors and allowing the browser to quantize the color space if needed, rather than suffer the quality loss of a double quantization.
Through the 2000s, use of 256-color displays in personal computers dropped sharply in favour of 24-bit (TrueColor) displays,[29] and "web-safe" colors are no longer commonly used on the web.
The "web-safe" colors do not all have standard names, but each can be specified by an RGB triplet: each component (red, green, and blue) takes one of the six values from the following table (out of the 256 possible values available for each component in full 24-bit color).
| Key | Hex | Decimal | Fraction |
|---|---|---|---|
| 0 | 00 | 0 | 0 |
| 3 | 33 | 51 | 0.2 |
| 6 | 66 | 102 | 0.4 |
| 9 | 99 | 153 | 0.6 |
| C (12) | CC | 204 | 0.8 |
| F (15) | FF | 255 | 1 |
The following table shows all of the "web-safe" colors. One shortcoming of the web-safe palette is its small range of light colors for webpage backgrounds, whereas the intensities at the low end of the range, such as the two darkest, are similar to each other, making them hard to distinguish. Values flanked by "*" (asterisk) are part of the "really safe palette;" see Safest web colors, below.
Color table
[edit]| *000* | 300 | 600 | 900 | C00 | *F00* |
| *003* | 303 | 603 | 903 | C03 | *F03* |
| 006 | 306 | 606 | 906 | C06 | F06 |
| 009 | 309 | 609 | 909 | C09 | F09 |
| 00C | 30C | 60C | 90C | C0C | F0C |
| *00F* | 30F | 60F | 90F | C0F | *F0F* |
| 030 | 330 | 630 | 930 | C30 | F30 |
| 033 | 333 | 633 | 933 | C33 | F33 |
| 036 | 336 | 636 | 936 | C36 | F36 |
| 039 | 339 | 639 | 939 | C39 | F39 |
| 03C | 33C | 63C | 93C | C3C | F3C |
| 03F | 33F | 63F | 93F | C3F | F3F |
| 060 | 360 | 660 | 960 | C60 | F60 |
| 063 | 363 | 663 | 963 | C63 | F63 |
| 066 | 366 | 666 | 966 | C66 | F66 |
| 069 | 369 | 669 | 969 | C69 | F69 |
| 06C | 36C | 66C | 96C | C6C | F6C |
| 06F | 36F | 66F | 96F | C6F | F6F |
| 090 | 390 | 690 | 990 | C90 | F90 |
| 093 | 393 | 693 | 993 | C93 | F93 |
| 096 | 396 | 696 | 996 | C96 | F96 |
| 099 | 399 | 699 | 999 | C99 | F99 |
| 09C | 39C | 69C | 99C | C9C | F9C |
| 09F | 39F | 69F | 99F | C9F | F9F |
| 0C0 | 3C0 | 6C0 | 9C0 | CC0 | FC0 |
| 0C3 | 3C3 | 6C3 | 9C3 | CC3 | FC3 |
| 0C6 | 3C6 | 6C6 | 9C6 | CC6 | FC6 |
| 0C9 | 3C9 | 6C9 | 9C9 | CC9 | FC9 |
| 0CC | 3CC | 6CC | 9CC | CCC | FCC |
| 0CF | 3CF | 6CF | 9CF | CCF | FCF |
| *0F0* | 3F0 | *6F0* | 9F0 | CF0 | *FF0* |
| 0F3 | *3F3* | *6F3* | 9F3 | CF3 | *FF3* |
| *0F6* | *3F6* | 6F6 | 9F6 | *CF6* | *FF6* |
| 0F9 | 3F9 | 6F9 | 9F9 | CF9 | FF9 |
| *0FC* | *3FC* | 6FC | 9FC | CFC | FFC |
| *0FF* | *3FF* | *6FF* | 9FF | CFF | *FFF* |
Each color code listed is a shorthand for the RGB value. For example, code 609 is equivalent to RGB code 102-0-153 or HEX code #660099.
Safest web colors
[edit]Designers were encouraged[by whom?] to stick to these 216 "web-safe" colors in their websites because there were a lot of 8-bit color displays when the 216-color palette was developed. David Lehn and Hadley Stern discovered that only 22 of the 216 colors in the web-safe palette are reliably displayed without inconsistent remapping on 16-bit computer displays. They called these 22 colors "the really safe palette"; it consists largely of shades of green, yellow, and cyan.[30][31]
R-- -GB
|
0 | 3 | 6 | 9 | C | F |
|---|---|---|---|---|---|---|
| 00 | *000* | *F00* | ||||
| 03 | *003* | *F03* | ||||
| 06 | ||||||
| 09 | ||||||
| 0C | ||||||
| 0F | *00F* | *F0F* | ||||
| ⋮ | ⋮ | |||||
| F0 | *0F0* | *6F0* | *FF0* | |||
| F3 | *3F3* | *6F3* | *FF3* | |||
| F6 | *0F6* | *3F6* | *CF6* | *FF6* | ||
| F9 | ||||||
| FC | *0FC* | *3FC* | ||||
| FF | *0FF* | *3FF* | *6FF* | *FFF* | ||
Accessibility
[edit]Color selection
[edit]Some browsers and devices do not support colors. For these displays or blind and colorblind users, Web content depending on colors can be difficult or impossible to use.
Either no colors should be specified (to invoke the browser's default colors), or both the background and all foreground colors (such as the colors of plain text, unvisited links, hovered links, active links, and visited links) should be specified to avoid black on black or white on white effects.[32]
Color contrast
[edit]The Web Content Accessibility Guidelines recommend a contrast ratio of at least 4.5:1 between the relative luminance of text and its background color[33] or at least 3:1 for large text. Enhanced accessibility requires contrast ratios greater than 7:1.
However, addressing accessibility concerns is not simply a matter of increasing the contrast ratio. As a report to the Web Accessibility Initiative indicates,[34] dyslexic readers are better served by contrast ratios below the maximum. The recommendations they refer to of off-black (#0A0A0A) on off-white (#FFFFE5) and black (#000000) on creme (#FAFAC8) have contrast ratios of 11.7:1 and 20.3:1 respectively. Among their other color pairs, brown (#282800) on dark green (#A0A000) has a contrast ratio of 3.24:1, which is less than the WCAG recommendation, dark brown (#1E1E00) on light green (#B9B900) has a contrast ratio of 4.54:1 and blue (#00007D) on yellow (#FFFF00) has a contrast ratio of 11.4:1. The colors named in the report use different color values than the web colors of the same name.
See also
[edit]References
[edit]- ^ Niederst Robbins, Jennifer (February 2006). "Appendix D: Specifying Color". Web Design in a Nutshell. O'Reilly. p. 830. ISBN 978-0-596-00987-8.
- ^ York, Richard. Beginning CSS, pp. 71–72.
- ^ Pemberton, Steven; Pettit, Brad (7 June 2011). Çelik, Tantek; Lilley, Chris; Baron, L. David (eds.). "CSS Color Module Level 3". W3C. section 4.2.1. RGB color values.
- ^ Sharma, Gaurav; Bala, Raja (19 December 2017). Digital Color Imaging Handbook. CRC Press. ISBN 978-1-4200-4148-4.
- ^ Pemberton, Steven; Pettit, Brad (7 June 2011). Çelik, Tantek; Lilley, Chris; Baron, L. David (eds.). "4.2.1. RGB color values". CSS Color Module Level 3. W3C. Retrieved 19 March 2013.
- ^ a b "CSS Color Module Level 3". W3c. Retrieved 19 July 2020.
- ^ Powell, Thomas A. (2010). HTML & CSS: The Complete Reference, Fifth Edition. New York: McGraw-Hill. p. 765. ISBN 9780071741705.
- ^ "HTML 4.01 Specification | Basic HTML data types | Colors". W3C. Retrieved 8 July 2013.
- ^ Raggett, Dave. "HTML 3.2 Reference Specification | The BODY element". W3C. Retrieved 8 July 2013.
- ^ Lilley, Chris (24 April 2002). "Re: color names in SVG-1.0 conflict with /usr/lib/X11/rgb.txt". W3C Public mailing list archives. Retrieved 8 July 2013.
- ^ Pemberton, Steven; Pettit, Brad (7 June 2011). Çelik, Tantek; Lilley, Chris; Baron, L. David (eds.). "4.3. Extended color keywords". CSS Color Module Level 3. W3C. Retrieved 19 March 2013.
- ^ "Scalable Vector Graphics (SVG) 1.1 (Second Edition) | Basic Data Types and Interfaces | Recognized color keyword names". W3C. 16 August 2011. Retrieved 1 February 2019.
- ^ "The X11 Color Set". Computing and Networking in HSEAS. Archived from the original on 14 July 2014. Retrieved 6 July 2014.
- ^ Brian Wilson. "Colors in HTML and CSS". blooberry.com. Retrieved 6 July 2014.
- ^ "CSS 2.1 Specification: Syntax and basic data types: Colors". W3C. 8 September 2009. Retrieved 21 December 2009.
- ^ "CSS Color Module Level 3 – Proposed Recommendation - 11. Changes". W3C. 28 October 2010. Retrieved 6 July 2014.
- ^ "CSS3 module: Color | Working Draft". W3C. 18 April 2002. Retrieved 6 July 2014.
- ^ a b "CSS Color Module Level 4 – Named Colors".
- ^ "User interface – System colors". W3C. Retrieved 8 July 2013.
- ^ Pemberton, Steven; Pettit, Brad (7 June 2011). Çelik, Tantek; Lilley, Chris; Baron, L. David (eds.). "4.5.1. CSS2 system colors". CSS Color Module Level 3. W3C. Retrieved 19 March 2013.
- ^ "CSS3 Basic User Interface Module | System Appearance". W3C. Retrieved 8 July 2013.
- ^ Çelik, Tantek, ed. (17 January 2012). "List of substantial changes". CSS Basic User Interface Module Level 3. W3C. Retrieved 19 March 2013.
System Appearance has been dropped, including appearance values & property, and system fonts / extension of the 'font' property shorthand.
- ^ a b Pemberton, Steven; Pettit, Brad (7 June 2011). Çelik, Tantek; Lilley, Chris; Baron, L. David (eds.). "4.2.4. HSL color values". CSS Color Module Level 3. W3C. Retrieved 19 March 2013.
- ^ a b c d "CSS Color Module Level 4". W3C. Retrieved 14 March 2022.
- ^ a b "CSS Color Module Level 4: Overview". W3C. Retrieved 11 January 2022.
- ^ Glazman, Daniel (21 June 2014). "Re: [CfC] adding 'rebeccapurple' to CSS Color Level 4". Post to www-style mailing list. W3C. Retrieved 24 June 2014.
- ^ a b CSS Color Module Level 5
- ^ Jenkins, Sue (27 December 2012). Web Design All-in-One For Dummies. John Wiley & Sons. ISBN 9781118404119.
- ^ "Browser Display Statistics". W3Schools. Retrieved 8 July 2013.
- ^ Lehn, David; Stern, Hadley. "Death of the Websafe Color Palette?". asc.ohio-state.edu. Archived from the original on 3 March 2021. Retrieved 3 March 2021.
- ^ Piperoglou, Stephanos (13 December 2000). "Web Color Reference - HTML with Style | 4". WebReference. Archived from the original on 23 November 2016. Retrieved 5 January 2016.
- ^ "If You Pick One Color, Pick Them All". W3C. Retrieved 8 July 2013.
- ^ WCAG 2.0 guideline 1.4
- ^ Optimal Colors to Improve Readability for People with Dyslexia
External links
[edit]Web colors
View on GrokipediaFundamentals of Web Colors
RGB Color Model
The RGB color model is an additive color model that represents colors through the combination of varying intensities of red, green, and blue primary colors, which correspond to the way human vision perceives light via cone cells sensitive to these wavelengths. In this model, colors are produced by adding light of these primaries, with black resulting from the absence of light and white from the full combination of all three at maximum intensity. Each RGB component—red (R), green (G), and blue (B)—is typically quantized using 8 bits per channel, providing 256 discrete levels from 0 (minimum intensity) to 255 (maximum intensity).[9] This 8-bit depth per channel enables a total of possible colors, sufficient for most digital displays and web rendering without perceptible banding in typical viewing conditions.[10] Mathematically, a color is denoted as a triplet where .[11] In web technologies, RGB values are standardized to the sRGB color space to ensure consistent color reproduction across devices, as defined by the International Electrotechnical Commission (IEC 61966-2-1).[2] This mapping transforms the linear RGB intensities into a gamma-corrected space that approximates human nonlinear perception, promoting cross-platform fidelity in browsers and rendering engines.[7] The RGB model was formally adopted in early web standards through the HTML 4.01 specification released in 1999, which specified RGB-based color definitions to enable reliable, device-independent color handling in HTML documents.[11] Hexadecimal notation later emerged as a compact way to encode these RGB values for CSS and HTML attributes.[11]Color Value Ranges and Normalization
In web color specifications, the RGB components—red, green, and blue—are typically represented as 8-bit integer values ranging from 0, which corresponds to no intensity (black for that channel), to 255, representing full intensity.[1] This 8-bit precision per channel allows for 256 discrete levels, enabling over 16 million possible colors (256³) in the sRGB color space standard for web content.[2] To ensure consistent rendering, CSS implementations normalize RGB values that fall outside the valid range by clamping them to the nearest boundary. For instance, a value exceeding 255, such as 300, is adjusted to 255, while negative values below 0 are set to 0; this prevents overflow errors and maintains color integrity across browsers and devices.[1] An alternative to integer values in CSS is the use of percentages for RGB components, where each channel ranges from 0% (no intensity) to 100% (full intensity). This format, specified in the rgb() functional notation, provides equivalent flexibility; for example, rgb(100%, 0%, 0%) produces pure red, matching rgb(255, 0, 0).[1] The rgba() functional notation extends the RGB model by incorporating an alpha channel for transparency, with the alpha value ranging from 0 (fully transparent) to 1 (fully opaque) as a unitless number, or equivalently from 0% (fully transparent) to 100% (fully opaque) as a percentage. This allows precise control over opacity, such as rgba(255, 0, 0, 0.5) for semi-transparent red, without altering the underlying RGB intensities.[1] Web colors in the sRGB space incorporate gamma correction with an approximate value of 2.2 to align with human visual perception, compensating for the non-linear response of display devices and ensuring that color gradients appear perceptually uniform rather than linearly bright.[2] This correction minimizes visible banding in dark areas and enhances fidelity across typical viewing conditions, such as ambient lighting around 64 lux.[2]Hexadecimal Color Notation
Full Hex Triplet Representation
The full hex triplet representation is a six-digit hexadecimal notation used to specify colors in web markup and stylesheets, adhering to the format#RRGGBB. Here, the hash symbol (#) precedes three pairs of hexadecimal digits: RR for the red component, GG for green, and BB for blue, with each pair ranging from 00 (minimum intensity, equivalent to 0 in decimal) to FF (maximum intensity, equivalent to 255 in decimal). This structure directly maps to the RGB color model, allowing precise control over color composition within the sRGB color space.[12]
For instance, #FF0000 represents pure red, corresponding to full red intensity (255) with no green or blue (0, 0). This notation was formally introduced in CSS Level 1 as a W3C Recommendation on December 17, 1996, providing a compact alternative to functional RGB values for styling elements like text and backgrounds. It was quickly adopted in HTML 3.2, which became a W3C Recommendation on January 14, 1997, enabling hexadecimal colors in attributes such as bgcolor and text on the <body> element.[12]
Hexadecimal triplets in this format are case-insensitive, so #ff0000 is parsed identically to #FF0000 by user agents. If a hex value is malformed—such as having fewer or more than six digits, non-hexadecimal characters, or missing the leading hash—browsers treat the entire declaration as invalid and ignore it, falling back to the property's initial value; for the color property, this is typically black (#000000).[12][13]
Shorthand Hexadecimal Form
The shorthand hexadecimal form provides a compact notation for specifying web colors in CSS, using a hash symbol followed by three hexadecimal digits to represent the red, green, and blue components. In this format, denoted as #RGB, each single digit is duplicated to form the equivalent full six-digit triplet; for instance, #F00 expands to #FF0000, representing pure red. This abbreviation is defined in the CSS specifications to streamline color declarations when the paired digits for each color channel are identical.[14] This shorthand is valid only for colors where the two hexadecimal digits in each RGB pair of the full form are the same, limiting its applicability to a subset of the 16,777,216 possible sRGB colors—specifically, 4,096 colors that can be precisely represented this way. For example, #ABC corresponds to #AABBCC, but a color like #A0B1C2 cannot use shorthand since the digits differ within pairs. As a more concise alternative to the full hexadecimal triplet, it reduces the length of color values by 50%, from seven characters (#RRGGBB) to four (#RGB), which is particularly beneficial for minimizing file sizes in stylesheets.[15] In CSS Color Module Level 4, hexadecimal notation was extended to support alpha transparency. The 4-digit form #RGBA duplicates each digit for RGB and adds AA for alpha (00 fully transparent to FF fully opaque), equivalent to #RRGGBBAA. For example, #F00F is #FF0000FF (red with full opacity), while #F008 is #FF00000088 (red with ~53% opacity). The 8-digit form #RRGGBBAA directly specifies all components. These formats, recommended since May 2024, are widely supported in modern browsers as of November 2025.[15] Browser support for the shorthand form has been universal across major web browsers since their early versions, including Internet Explorer 3.0 (released in 1996) and Netscape Navigator 3.0 (also 1996), making it a reliable feature for web development without compatibility concerns. It is commonly employed in inline styles, such as<div style="color: #F00;">, and in compact CSS rules to enhance readability and efficiency, especially in large-scale designs or when brevity aids code maintenance.[16]
Named Colors in Web Standards
Basic HTML Color Names
The basic HTML color names consist of 16 predefined colors that originated from the standard 16-color palette of the IBM Video Graphics Array (VGA), introduced in 1987.[17] These names were formalized as part of early web standards, including the HTML 3.2 specification published in 1997, allowing simple textual specification of colors in HTML attributes without requiring numeric codes.[18] Derived from the RGB color model, each name maps to a specific combination of red, green, and blue intensity values.[19] These colors provided a foundational set for web designers in the era of limited display capabilities, enabling consistent rendering across early browsers and hardware. Their hex equivalents, defined precisely in sRGB space, ensure accurate representation on modern devices. The following table lists the 16 basic names along with their hexadecimal values as specified in the CSS Color Module Level 3 recommendation from 2011.[19]| Color Name | Hex Value |
|---|---|
| black | #000000 |
| silver | #C0C0C0 |
| gray | #808080 |
| white | #FFFFFF |
| maroon | #800000 |
| red | #FF0000 |
| purple | #800080 |
| fuchsia | #FF00FF |
| green | #008000 |
| lime | #00FF00 |
| olive | #808000 |
| yellow | #FFFF00 |
| navy | #000080 |
| blue | #0000FF |
| teal | #008080 |
| aqua | #00FFFF |
bgcolor or text) is obsolete in HTML5 strict mode, browsers continue to support these names for backward compatibility, primarily through CSS properties. This ensures legacy content remains functional while encouraging modern practices like hexadecimal or functional notations for broader color options.[19]
Extended SVG and CSS Color Names
The extended set of SVG and CSS color names encompasses 148 predefined colors, comprising the original 16 basic HTML colors plus 132 additional names derived primarily from the X11 color system.[20] These extended colors were first standardized in the SVG 1.0 specification, published on September 4, 2001, to provide a richer palette for vector graphics while maintaining compatibility with the sRGB color space. The set was subsequently adopted into CSS through the CSS3 Color Module Candidate Recommendation in 2003, enabling broader use across web styling and layout. This expansion built upon the foundational basic names, such as "red" and "blue," to support more nuanced design needs in web and graphic applications. In 2014, "rebeccapurple" (#663399) was added as a tribute to Rebecca Meyer, daughter of web standards author Eric Meyer.[21] Post-basic additions include a variety of shades introduced for enhanced expressiveness, such as orange (#FFA500), aliceblue (#F0F8FF), chocolate (#D2691E), and lavender (#E6E6FA), which offer developers predefined RGB equivalents without requiring manual hex or functional notation.[20] These colors, like chocolate—a medium brown—and lavender—a pale purple—were selected to fill gaps in the basic palette, drawing from established display standards to ensure consistent rendering across devices.[21] The full roster promotes accessibility to a diverse range of hues while adhering to the sRGB gamut for web compatibility. Named colors in this extended set are ASCII case-insensitive, allowing variations like "Orange" or "ORANGE" to resolve to the same value (#FFA500).[22] The complete list, including all 148 names and their corresponding RGB/hex values, is documented in the W3C specifications for SVG 1.1 and CSS Color Module Level 4 (Candidate Recommendation, updated 2024).[20][21] While no names have been deprecated, the specifications encourage the use of numeric formats (e.g., hex or RGB) for greater precision and to avoid ambiguities in naming conventions.[22]CSS Color Specifications
Color Spaces and Device Independence in CSS
In CSS, colors have traditionally been specified in the sRGB color space, which is device-dependent as it relies on the standardized RGB primaries and assumes a typical display calibration, potentially leading to inconsistencies across devices with varying color capabilities.[23] The CSS Color Module Level 4 introduces support for device-independent color spaces such as CIELAB (also known as Lab) and CIEXYZ, enabling more consistent color representation by separating color specification from the physical characteristics of output devices like monitors or printers.[24] This shift allows authors to define colors in perceptually uniform models where numerical differences correspond more closely to perceived color differences, reducing issues like metamerism where colors appear different on varied hardware.[25] Predefined color spaces in CSS Color Level 4 extend beyond sRGB to include wider gamuts for enhanced color fidelity, such as Display P3 (optimized for modern LCD and OLED displays), A98-RGB (designed for graphic arts with Adobe RGB compatibility), ProPhoto RGB (a broad-gamut space for professional photography), and Rec. 2020 (a UHDTV standard supporting high dynamic range).[26] These spaces are defined with specific chromaticity coordinates, transfer functions, and white points (typically D65 for most, except ProPhoto RGB's D50), allowing CSS to handle colors outside the sRGB gamut without loss of detail.[27] For instance, Display P3 covers about 1.233 million Lab units in gamut volume, compared to sRGB's 0.820 million, enabling more vibrant reproductions on capable devices.[26] Device independence is achieved through perceptual uniform color spaces like Lab and its polar form LCH, which model human vision more accurately than RGB-based systems.[28] In Lab, colors are parameterized by lightness (L*, ranging 0% to 100%) and opponent color channels (a* for green-red, b* for blue-yellow), providing a device-agnostic representation that facilitates gamut mapping.[24] This mapping prevents abrupt gamut clipping—where out-of-range colors are simply desaturated to black or white—by instead clipping or compressing colors smoothly to fit the target device's capabilities, ensuring predictable rendering across diverse screens.[29] CIEXYZ serves as an intermediate absolute space for conversions, with variants like xyz-d65 (D65 white point) supporting precise inter-space transformations without device assumptions.[30] The syntax for these spaces uses functional notation, such as thelab() function to specify Lab colors directly: lab(29.2345% 39.3825 20.0664), where the first parameter is lightness percentage, followed by a* and b* values (typically -160 to +160).[31] For predefined RGB spaces, the color() function wraps the space name with components, e.g., color(display-p3 0.43313 0.50108 0.37950 / 0.5) for a semi-transparent value.[32] These notations allow explicit color space declaration, overriding the default sRGB and promoting cross-device consistency.[33]
CSS Color Module Level 4 reached Candidate Recommendation status on 21 June 2021, with subsequent drafts including the 1 November 2022 snapshot, and remains in Candidate Recommendation Draft as of 24 April 2025, inviting further implementation feedback before advancing to Proposed Recommendation.[34]
Predefined and Functional Color Formats
In CSS Color Module Level 4, predefined and functional color formats provide flexible ways to specify colors using mathematical models and explicit color spaces, enabling precise control over hue, saturation, lightness, and gamut. These notations extend beyond legacy formats by supporting alpha transparency and device-independent representations, allowing developers to define colors in perceptually uniform spaces for better visual consistency across displays.[7] Thergb() and hsl() functions offer foundational ways to define colors in the sRGB space. The rgb() notation accepts red, green, and blue components, each ranging from 0 to 255 or 0% to 100%, with an optional alpha channel for opacity (0 to 1 or 0% to 100%). For example:
rgb(255 0 0 / 0.5)
rgb(255 0 0 / 0.5)
hsl() uses hue (0° to 360°), saturation (0% to 100%), and lightness (0% to 100%), with optional alpha, as in hsl(120deg 100% 50% / 0.5) for a semi-transparent lime green. Legacy comma-separated syntax like rgba(255, 0, 0, 0.5) remains supported for backward compatibility.[35][36]
Additional functional notations include hwb() for hue, whiteness, and blackness, which simplifies color specification by summing whiteness and blackness to 100% for grayscale tones. Its syntax is hwb(hue whiteness blackness / alpha?), with hue in degrees (0 to 360), and whiteness/blackness from 0% to 100%; for instance, hwb(120deg 0% 0%) yields pure green. The lab() and lch() functions leverage the CIE Lab color space for perceptual uniformity, where lab() takes lightness (0% to 100%), a-axis (-160 to 160), and b-axis (-160 to 160), as in lab(50% 60 20 / 0.8) for a reddish color. The cylindrical lch() variant uses lightness, chroma (0 to ~230), and hue, such as lch(50% 100 20) for a vivid red-orange, promoting even hue distribution without RGB's perceptual distortions.[37][38]
Predefined color spaces integrate via the color() function, which explicitly names the space followed by components normalized to 0-1, with optional alpha. For sRGB, it is color(srgb 1 0 0 / 0.5) for semi-transparent red, matching implicit defaults. Wide-gamut support comes through spaces like display-p3, enabling vibrant colors beyond sRGB on compatible displays: color(display-p3 1 0.5 0) for an enhanced orange. Other spaces include a98-rgb and rec2020, but display-p3 is prominent for its adoption in modern screens.[39]
Hexadecimal formats extend to include alpha with 4- and 8-digit variants. The 8-digit form #RRGGBBAA specifies full RGB values (00-FF) plus alpha (00-FF, where FF is opaque), as in #FF000080 for semi-transparent red. The shorthand 4-digit #RGBA doubles each digit, like #F008 for red with 50% opacity (RR=FF, GG=00, BB=00, AA=88, but halved for shorthand). These build on 3- and 6-digit hex by adding transparency without functional overhead.[15]
When interpolating between colors—such as in gradients or animations—CSS converts them to a common space Oklab (a perceptually uniform space) to achieve perceptual uniformity, ensuring smooth, visually even transitions regardless of the source format. For example, blending rgb(255 0 0) and rgb(0 0 255) in Oklab avoids the banding common in sRGB interpolation. Out-of-gamut colors are mapped relative to the destination space.[40]
These Level 4 formats enjoy full browser support in Chrome 111 and later, Firefox 113 and later, Safari 15 and later, and Edge 111 and later, aligning with widespread adoption since 2023; earlier partial support exists for subsets like display-p3 in Safari 10.1 to 14.1.[41][42]
Innovations in CSS Color Module Level 5
The CSS Color Module Level 5, published as a Working Draft on 13 January 2026, by the CSS Working Group, introduces advanced capabilities for color manipulation in web styling, building on the foundations of Level 4 to enable more precise and perceptually uniform color handling.[43] This draft emphasizes experimental features aimed at improving color blending, relative adjustments, and device-independent representations, with a focus on perceptual accuracy across diverse display environments.[43] A central innovation is thecolor-mix() function, which allows developers to blend two colors within a specified color space, such as color-mix(in srgb, red 50%, blue) for linear interpolation in sRGB or color-mix(in lch, peru 40%, palegoldenrod) for perceptually uniform mixing in the LCH space.[44] Complementing this is the relative color syntax, which enables modifications to an existing color reference, for instance rgb(from currentColor r g b) to adjust the red, green, and blue components of the current color, or lch(from peru calc(l * 0.8) c h) to scale the lightness while preserving chroma and hue.[45] These features facilitate dynamic color theming and adaptive designs without requiring complex scripting.[45]
The module builds on Level 4's OKLab and OKLCH color spaces, which provide superior perceptual uniformity compared to traditional spaces like Lab, where lightness, chroma, and hue adjustments align more closely with human vision.[46] For example, oklch(70% 0.1 100) specifies a color with 70% lightness, 0.1 chroma, and 100-degree hue, enabling smoother gradients and better color harmony in user interfaces.[47]
Additional functions include device-cmyk(), which converts uncalibrated CMYK values for web use, as in device-cmyk(0% 81% 81% 30%) to approximate print colors on screens while warning of potential gamut mismatches.[48] The contrast-color() function automates contrast enhancement, such as contrast-color(black) to select white or black ensuring maximum contrast for readability against a black background.[49]
As of January 2026, support for Level 5 features like color-mix() has full support in Chrome 111 and later, Firefox 113 and later, Safari 16.2 and later, and Edge 111 and later; relative color syntax has full support in Chrome 131 and later, Firefox 133 and later, Safari 18 and later, with partial support in earlier versions (e.g., Chrome 119–130, Firefox 128–132, Safari 16.4–17.6) and some gaps in features like currentcolor in certain implementations, as tracked by the W3C test suite.[50][51][52] Developers are advised to avoid vendor prefixes for future-proofing, treating at-risk features like certain mixing behaviors cautiously until Candidate Recommendation status, to ensure broad compatibility without proprietary extensions.[53]
Optimized and Legacy Web Colors
Web-Safe Color Palette
The Web-Safe Color Palette, also known as the browser-safe palette, comprises 216 specific colors engineered for reliable rendering on early web browsers and 8-bit displays limited to 256 colors total, thereby preventing dithering or unintended color approximations. This palette originated from the work of designer Lynda Weinman, who identified and documented it to address inconsistencies in color display across platforms like Netscape Navigator 1.0 and early versions of Internet Explorer, where non-standard colors could shift or blend unpredictably. Weinman first published the palette in her 1996 book Designing Web Graphics, naming it the "Browser-Safe Palette" to highlight its role in maintaining visual fidelity during the web's formative years.[54] The palette's composition relies on restricting each red, green, and blue (RGB) channel to one of six discrete intensity levels in hexadecimal notation: 00, 33, 66, 99, CC, or FF. These values represent 0, 51, 102, 153, 204, and 255 in decimal, approximating 0%, 20%, 40%, 60%, 80%, and 100% of full channel intensity, respectively. All possible combinations of these levels across the three channels yield exactly 6³ = 216 colors, forming a uniform grid in the RGB color space.[55] To represent the structure, the table below outlines the six intensity levels shared by each RGB channel, with their corresponding hex, decimal, and percentage equivalents:| Level | Hex Value | Decimal Value | Approximate Percentage |
|---|---|---|---|
| 0 | 00 | 0 | 0% |
| 1 | 33 | 51 | 20% |
| 2 | 66 | 102 | 40% |
| 3 | 99 | 153 | 60% |
| 4 | CC | 204 | 80% |
| 5 | FF | 255 | 100% |
Safest Web Colors for Displays
The safest web colors for displays constitute a refined subset of 22 colors drawn from the broader 216-color web-safe palette, specifically chosen to ensure consistent rendering without dithering or color shifts across various early web browsers and operating systems on limited-depth displays. These colors prioritize extremes in RGB values—such as full black (#000000), near-black shades like #000033 and #000066, and full white (#FFFFFF)—to maintain high perceptual separation and avoid the mid-range intensities (e.g., 99 or CC in hexadecimal) that often triggered approximation errors on hardware with constrained color gamuts. By focusing on primary and secondary extremes, particularly in greens, yellows, cyans, and reds, this palette minimizes visual artifacts like banding or unwanted patterns that could arise from palette remapping.[56][57] The selection criteria emerged from rigorous testing conducted in the late 1990s on 1996-era hardware, including CRT monitors supporting 8-bit (256-color) and 16-bit (65,536-color) modes, using browsers such as Internet Explorer 4.01/5.0 and Netscape Navigator 3.04/4.74 on both Windows and Macintosh platforms. Researchers visually inspected GIF images and HTML BGCOLOR attributes for discontinuities, where non-compliant colors would dither into dot patterns on 8-bit systems or shift hues entirely on 16-bit systems due to quantization limitations in the display adapters. Out of the original 216 web-safe colors, only these 22 demonstrated uniform appearance without remapping across all tested configurations, effectively reducing potential artifacts by eliminating problematic mid-tones that browsers approximated poorly.[56][57] The following table lists the 22 safest web colors, with their hexadecimal and RGB equivalents for reference:| Hex Code | RGB Values |
|---|---|
| #000000 | 0, 0, 0 |
| #003300 | 0, 51, 0 |
| #006600 | 0, 102, 0 |
| #00FF00 | 0, 255, 0 |
| #00FF33 | 0, 255, 51 |
| #00FF66 | 0, 255, 102 |
| #33FF00 | 51, 255, 0 |
| #33FF33 | 51, 255, 51 |
| #33FF66 | 51, 255, 102 |
| #66FF00 | 102, 255, 0 |
| #66FF33 | 102, 255, 51 |
| #66FF66 | 102, 255, 102 |
| #CCFF66 | 204, 255, 102 |
| #FF0000 | 255, 0, 0 |
| #FF0033 | 255, 0, 51 |
| #FF0066 | 255, 0, 102 |
| #FF00FF | 255, 0, 255 |
| #FF3300 | 255, 51, 0 |
| #FF3333 | 255, 51, 51 |
| #FF6600 | 255, 102, 0 |
| #FFFF00 | 255, 255, 0 |
| #FFFFFF | 255, 255, 255 |
