This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
The grayscale() CSS function converts the input image to grayscale. Its result is a <filter-function>.
filter: grayscale(0);
filter: grayscale(0.2);
filter: grayscale(60%);
filter: grayscale(1);
<section id="default-example">
<img
class="transition-all"
id="example-element"
src="/shared-assets/images/examples/firefox-logo.svg"
width="200" />
</section>
grayscale(amount)
amount OptionalAmount of the input image that is converted to grayscale. It is specified as a <number> or a <percentage>. A value of 100% changes the input completely to grayscale, while a value of 0% leaves the input unchanged. Values between 0% and 100% have linear multipliers on the effect. The initial value used for interpolation is 0. The default value is 1.
<grayscale()> =
grayscale( [ <number> | <percentage> ]? )
grayscale(0) /* No effect */ grayscale(.7) /* 70% grayscale */ grayscale() /* Completely grayscale */ grayscale(1) grayscale(100%)
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
grayscale |
18 | 12 | 35 | 15 | 6 | 53 | 35 | 14 | 6 | 6.0 | 4.4 | 6 |
The other <filter-function> functions available to be used in values of the filter and backdrop-filter properties include:
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/grayscale