Hubbry Logo
Web colorsWeb colorsMain
Open search
Web colors
Community hub
Web colors
logo
7 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
Web colors
Web colors
from Wikipedia

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]

A Diagram containing every basic HTML color.

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):

CSS 1–2.0, HTML 3.2–4, and VGA color names
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]
SVG Version of X11 color names
SVG1.1 named colors with sRGB hex/dec and HSL codes, at UHD (4K) resolution

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]

Color added in CSS 2.1
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]

Example system color keywords
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]

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]

Color added in CSS4 Colors module
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]

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).

6 shades of each 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]
216 "web-safe" colors
*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]

Safest web colors
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]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
Web colors are the standardized methods for specifying colors and opacity in web documents, primarily through Cascading Style Sheets (CSS) as defined by the World Wide Web Consortium (W3C). They enable authors to control the visual appearance of elements like text, backgrounds, and borders, using the sRGB color space as the default for consistent rendering across devices. Key specification formats include named color keywords—starting with 16 basic colors in CSS Level 1 (such as black, white, and red) and expanded to over 140 standard names derived from HTML4 and SVG (e.g., aliceblue and crimson)—as well as hexadecimal triplets (e.g., #ff0000 for red) and functional notations like rgb(255, 0, 0) or hsl(0, 100%, 50%). Alpha channels for transparency are supported via rgba() and hsla(), with special keywords like transparent and currentcolor providing additional flexibility. Historically, web colors were constrained by early browser limitations, leading to the "web-safe" palette of 216 colors designed to render accurately on 256-color displays without dithering. The CSS Color Module Level 4 (Candidate Recommendation, April 2025) extends beyond sRGB to wider color gamuts, including Display P3, Rec. 2020, and others, supporting high-dynamic-range (HDR) content on advanced displays while maintaining backward compatibility through gamut mapping. This evolution ensures vibrant, device-independent color reproduction as web technologies advance.

Fundamentals 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). This 8-bit depth per channel enables a total of 2563=16,777,216256^3 = 16,777,216 possible colors, sufficient for most digital displays and web rendering without perceptible banding in typical viewing conditions. Mathematically, a color is denoted as a triplet (R,G,B)(R, G, B) where 0R,G,B2550 \leq R, G, B \leq 255. 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). 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. 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. Hexadecimal notation later emerged as a compact way to encode these RGB values for CSS and HTML attributes.

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. 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. 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. 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). 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. 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. This correction minimizes visible banding in dark areas and enhances fidelity across typical viewing conditions, such as ambient lighting around 64 lux.

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. 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. 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).

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. 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. 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. 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.

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. 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. Derived from the RGB color model, each name maps to a specific combination of red, green, and blue intensity values. 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.
Color NameHex 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
Although the use of named colors in deprecated HTML attributes (such as 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.

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. 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. 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. 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. 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). 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). 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.

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. 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. 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. 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). 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. 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. 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. 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. 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. 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. The syntax for these spaces uses functional notation, such as the lab() 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). 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. These notations allow explicit color space declaration, overriding the default sRGB and promoting cross-device consistency. 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.

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. The rgb() 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)

This produces a semi-transparent red. Similarly, 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. 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. 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. 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. 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. 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.

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. 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. A central innovation is the color-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. 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. These features facilitate dynamic color theming and adaptive designs without requiring complex scripting. 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. 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. 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. 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. 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. 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.

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. 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. 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:
LevelHex ValueDecimal ValueApproximate Percentage
00000%
1335120%
26610240%
39915360%
4CC20480%
5FF255100%
The full palette emerges from every permutation of these values in the six-digit hex format (e.g., #336699 combines red=33, green=66, blue=99). Among these, the grayscale subset spans from pure black (#000000) to pure white (#FFFFFF) at 20% intensity steps: #000000, #333333, #666666, #999999, #CCCCCC, and #FFFFFF. This systematic grid ensures no color falls outside the common 216-color subset of the standard 256-color palette used by early systems, excluding the 40 reserved for the browser interface itself. By the early 2000s, as 24-bit color support (over 16 million colors) became standard on consumer displays and browsers, the web-safe palette lost practical relevance for contemporary web development. Nonetheless, it retains value for compatibility with legacy hardware, embedded systems, or scenarios requiring guaranteed color consistency without advanced rendering capabilities.

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. 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. The following table lists the 22 safest web colors, with their hexadecimal and RGB equivalents for reference:
Hex CodeRGB Values
#0000000, 0, 0
#0033000, 51, 0
#0066000, 102, 0
#00FF000, 255, 0
#00FF330, 255, 51
#00FF660, 255, 102
#33FF0051, 255, 0
#33FF3351, 255, 51
#33FF6651, 255, 102
#66FF00102, 255, 0
#66FF33102, 255, 51
#66FF66102, 255, 102
#CCFF66204, 255, 102
#FF0000255, 0, 0
#FF0033255, 0, 51
#FF0066255, 0, 102
#FF00FF255, 0, 255
#FF3300255, 51, 0
#FF3333255, 51, 51
#FF6600255, 102, 0
#FFFF00255, 255, 0
#FFFFFF255, 255, 255
In comparison to the full 216-color web-safe palette, this 22-color set drastically cuts down on rendering inconsistencies; for example, the teal shade #009999 (RGB 0, 153, 153) from the larger palette often dithers or shifts on 16-bit CRTs due to its mid-range green and blue components, while a comparable safest color like #00FF66 (RGB 0, 255, 102) renders crisply without approximation. Although contemporary devices universally support 24-bit or higher color depths, rendering such concerns largely obsolete for standard web design, the safest palette retains niche utility for ensuring compatibility in legacy email clients (e.g., older Outlook versions) and low-end mobile devices with restricted color rendering, where unexpected dithering could still degrade simple graphics or backgrounds.

Accessibility and Web Color Best Practices

Color Contrast Requirements

Color contrast requirements in web design ensure that text and images of text are distinguishable against their backgrounds, promoting readability for users with low vision or other visual impairments. The Web Content Accessibility Guidelines (WCAG) 2.2, published by the World Wide Web Consortium (W3C) on October 5, 2023, define these requirements through Success Criterion 1.4.3 (Contrast Minimum) at Level AA and Success Criterion 1.4.6 (Contrast Enhanced) at Level AAA. For Level AA conformance, normal text must have a contrast ratio of at least 4.5:1, while large-scale text (defined as at least 18 point or 14 point bold, or equivalent) requires 3:1; Level AAA raises these to 7:1 for normal text and 4.5:1 for large text. Exceptions apply to incidental text, logotypes, and non-text content where contrast is not essential. The contrast ratio is calculated using the formula: Contrast ratio=L1+0.05L2+0.05\text{Contrast ratio} = \frac{L_1 + 0.05}{L_2 + 0.05} where L1L_1 is the relative luminance of the lighter color and L2L_2 is that of the darker color, with values ranging from 1 (black on white) to 21 (white on black). Relative luminance (YY) for sRGB colors is computed as Y=0.2126×R+0.7152×G+0.0722×BY = 0.2126 \times R + 0.7152 \times G + 0.0722 \times B, where RR, GG, and BB are linear RGB values derived from sRGB components (0 to 1) via linearization: if the sRGB value CC ≤ 0.04045, then the linear value is C/12.92C / 12.92; otherwise, ((C+0.055)/1.055)2.4((C + 0.055) / 1.055)^{2.4}. To verify compliance, developers can use automated tools like WAVE from WebAIM, which scans web content for contrast issues against WCAG thresholds, or manual methods via browser developer tools such as Chrome DevTools' color picker and accessibility panel, which display contrast ratios and suggest fixes. The WCAG 3.0 Working Draft, released on September 4, 2025, introduces a new outcome-based structure with guidelines addressing functional needs on topics such as contrast and text appearance for more flexible and comprehensive accessibility evaluation; however, as of November 2025, it remains a draft and WCAG 2.2 is the current standard for conformance.

Inclusive Color Selection Strategies

Inclusive color selection strategies in web design aim to ensure that visual elements are perceivable by users with color vision deficiencies (CVD), which affect approximately 8% of men and 0.5% of women globally. The most common forms include deuteranomaly, a green-weak deficiency impacting about 6% of males; protanomaly, a red-weak deficiency affecting around 1% of males; and tritanomaly, a rare blue-yellow deficiency occurring in less than 0.01% of the population. These conditions alter hue perception, making certain color distinctions challenging, particularly in red-green spectra for the majority of cases. Key strategies for inclusive color choices emphasize alternatives to hue reliance, such as incorporating patterns, textures, or shapes to convey information independently of color. Designers should avoid pairing red and green for critical distinctions, as these hues often appear similar to those with deuteranomaly or protanomaly, opting instead for combinations that differ in brightness or saturation. Simulation tools like Coblis allow developers to preview how palettes render under various CVD types, enabling iterative adjustments before deployment. Best practices include conducting diverse user testing to validate designs, recognizing that CVD impacts about 8% of the population and requires non-color cues like semantic HTML elements (e.g., ARIA labels) to supplement visual information. These approaches complement color contrast checks by addressing perceptual limitations beyond luminance differences. Useful tools for generating and evaluating palettes include Adobe Color, which features built-in CVD simulations to create accessible themes, and Coolors, a generator with WCAG-compliant contrast analysis. Browser extensions such as Colorblindly enable real-time simulation of CVD in development environments, facilitating on-the-fly testing. The emphasis on inclusive color strategies has evolved through legal frameworks, with the Americans with Disabilities Act (ADA) of 1990 establishing broad requirements for accessible digital content, including accommodations for visual impairments like CVD. This was further advanced by the European standard EN 301 549 (2018), which harmonizes WCAG guidelines to mandate perceivable content for color-deficient users across ICT products.

References

Add your contribution
Related Hubs
User Avatar
No comments yet.