This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
The invert() CSS function inverts the color samples in the input image. Its result is a <filter-function>.
filter: invert(0);
filter: invert(0.3);
filter: invert(50%);
filter: invert(70%);
filter: invert(1);
<section id="default-example">
<img
class="transition-all"
id="example-element"
src="/shared-assets/images/examples/firefox-logo.svg"
width="200" />
</section>
invert(amount)
amount OptionalThe amount of the conversion, specified as a <number> or a <percentage>. A value of 100% is completely inverted, while a value of 0% leaves the input unchanged. Values between 0% and 100% are linear multipliers on the effect. The initial value for interpolation is 0. The default value is 1.
<invert()> =
invert( [ <number> | <percentage> ]? )
invert(0) /* No effect */ invert(.6) /* 60% inversion */ invert() /* Completely inverted */ invert(1) invert(100%)
| Specification |
|---|
| Filter Effects Module Level 1> # funcdef-filter-invert> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
invert |
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/invert