saturate()
The saturate() CSS function super-saturates or desaturates the input image. Its result is a {{cssxref("<filter-function>")}} .
[!NOTE]
saturate()is specified as a matrix operation on the RGB color. It does not actually convert the color to the HSL model, which is a non-linear operation. Therefore, it may not preserve the hue or lightness of the original color.
{{InteractiveExample("CSS Demo: saturate()")}}
filter: saturate(1);
filter: saturate(4);
filter: saturate(50%);
filter: saturate(0);
<section id="default-example">
<img
class="transition-all"
id="example-element"
src="/shared-assets/images/examples/firefox-logo.svg"
width="200" />
</section>
Syntax
saturate(amount)
Parameters
amount{{Optional_Inline}}- : The amount of the conversion, specified as a
{{cssxref("<number>")}}or a{{cssxref("<percentage>")}}. A value under100%desaturates the image, while a value over100%super-saturates it. A value of0%is completely unsaturated, while a value of100%leaves the input unchanged. The initial value for{{Glossary("interpolation")}}is1. The default value is1.
- : The amount of the conversion, specified as a
Formal syntax
{{CSSSyntax}}
Examples
Examples of correct values for saturate()
saturate(0) /* Completely unsaturated */
saturate(.4) /* 40% saturated */
saturate() /* No effect */
saturate(100%) /* No effect */
saturate(200%) /* Double saturation */
saturate() does not preserve hue or lightness
The diagram below compares two color gradients with hsl(0 50% 50%) as the mid-point: the first is generated using saturate(), and the second uses actual HSL color values. Note how the saturate() gradient shows differences in hue and lightness towards the two ends.
<div>
<p>Using <code>saturate()</code></p>
<div id="saturate"></div>
</div>
<div>
<p>Using <code>hsl()</code></p>
<div id="hsl"></div>
</div>
#saturate,
#hsl {
display: flex;
margin: 1em 0;
}
#saturate div,
#hsl div {
width: 2px;
height: 100px;
}
const saturate = document.getElementById("saturate");
const hsl = document.getElementById("hsl");
for (let i = 0; i <= 200; i++) {
const div1 = document.createElement("div");
div1.style.backgroundColor = `hsl(0 ${i / 2}% 50%)`;
hsl.appendChild(div1);
const div2 = document.createElement("div");
div2.style.backgroundColor = "hsl(0 50% 50%)";
div2.style.filter = `saturate(${i}%)`;
saturate.appendChild(div2);
}
{{EmbedLiveSample('saturate_does_not_preserve_hue_or_lightness','100%','350')}}
Specifications
{{Specifications}}
Browser compatibility
{{Compat}}
See also
The other {{cssxref("<filter-function>")}} functions available to be used in values of the {{cssxref("filter")}} and {{cssxref("backdrop-filter")}} properties include:
{{cssxref("filter-function/blur", "blur()")}}{{cssxref("filter-function/brightness", "brightness()")}}{{cssxref("filter-function/contrast", "contrast()")}}{{cssxref("filter-function/drop-shadow", "drop-shadow()")}}{{cssxref("filter-function/grayscale", "grayscale()")}}{{cssxref("filter-function/hue-rotate", "hue-rotate()")}}{{cssxref("filter-function/invert", "invert()")}}{{cssxref("filter-function/opacity", "opacity()")}}{{cssxref("filter-function/sepia", "sepia()")}}