contrast-color()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The contrast-color()
CSS function takes a color
value and returns a guaranteed contrasting color.
contrast-color()
makes it easy, for example, to specify a text color and automatically generate a contrasting background color, or vice versa. It avoids the need to maintain background-text color pairs.
Syntax
contrast-color(red)
contrast-color(var(--backgroundColor))
Parameters
Return value
A <named-color>
of either white
or black
.
Description
The contrast-color()
function returns a value of white
or black
, depending on which value has the greatest contrast with the input color. If both white
and black
have the same contrast with the input color, white
is returned.
Warning:
There is no guarantee that the values returned using the contrast-color()
function will produce an accessible result. Mid-tone background colors generally don't provide enough contrast. It is recommended therefore to use light or dark colors with the contrast-color()
function.
Examples
Contrasting text for a button
In the following example, the browser automatically applies a contrasting color to the submit <button>
text when you change its background color.
:root {
--button-color: lightblue;
}
button {
background-color: var(--button-color);
/* Set contrasting text color automatically */
color: contrast-color(var(--button-color));
}
Light and dark mode usage
In the following example, the prefers-color-scheme
media query is used to set a background color based on operating system or browser color scheme settings. The contrast-color()
function is used to set the text color automatically.
Try changing the browser or OS dark mode setting to see the effect.
:root {
--background-color: navy;
}
@media (prefers-color-scheme: light) {
:root {
--background-color: wheat;
}
}
body,
a {
background-color: var(--background-color);
color: contrast-color(var(--background-color));
}
Specifications
Specification |
---|
CSS Color Module Level 5 # contrast-color |
Browser compatibility
See also
contrast()
- CSS colors module
- CSS custom properties and
var()
prefers-contrast
andprefers-color-scheme
@media
features- WCAG: color contrast
- How to have the browser pick a contrasting color in CSS on webkit.org (2025)
- WebAIM Contrast Checker on webaim.org (2025)