The File Never Changes
Applying filter: grayscale(100%) to a colorful photo makes it visually appear entirely black and white in the browser — but the actual image file the browser is displaying is completely untouched. Open that same file directly, outside the context of your CSS, and it's still in full, original color.
What's Actually Happening
CSS filters operate at the browser's rendering stage — after the image data is decoded, but before it's painted to the screen. The browser applies the visual transformation live, every time it renders that element, without ever writing anything back to the source file. It's closer to looking at a photo through a colored lens than actually recoloring the photo itself.
Why This Distinction Genuinely Matters
- The original stays available: since the source file is unmodified, you can always remove or change the filter later without any loss of quality or original detail.
- It's easy to make conditional: apply a filter only on hover, only in dark mode, only above a certain screen width — all without needing multiple copies of the image file.
- It's not a substitute for real image editing: if you need the grayscale version as an actual standalone file — to send someone, to use outside a browser context — a CSS filter alone doesn't produce that. You'd need to actually process and export a new image file.
A Practical Implication
If a design calls for a permanently grayscale product photo used across multiple contexts (a printed catalog, a different app, a downloadable asset), relying on a CSS filter alone won't cover those cases — those need an actual edited image file. CSS filters are the right tool specifically for how something looks within a web page, not for producing a standalone, portable image asset.
Ready to build a display-time effect?
Open CSS Filter Generator