A little help goes a long way. Find a tool/

Design

CSS Filter Generator

Free CSS filter generator. Combine blur, brightness, contrast, grayscale, hue-rotate, saturate, sepia, invert, opacity and drop-shadow with a live preview and copy-ready CSS.

YOUR WORKSPACEFree to use. No sign-up.
—
Dial in values above — neutral values are omitted automatically.

Deep dive guides

A LITTLE CONTEXT · 4 MIN READCSS Filters Explained: The Post-Processing Pipeline

How css filter generator works

The CSS filter property applies image-processing effects to an element: blurring, recoloring, brightening, adding shadows. Each effect is a function — blur(4px), brightness(120%), grayscale(50%), hue-rotate(30deg) — and you can stack them space-separated: filter: blur(4px) saturate(150%). The functions apply in the listed order, and each works on the output of the previous one, so blur then saturate is not the same as saturate then blur.

This generator handles all nine core functions plus drop-shadow. Every function has a neutral value at which it does nothing: blur 0, brightness and contrast 100%, grayscale and sepia and invert 0%, hue-rotate 0deg, opacity 100%, saturate 100%. Functions left at their neutral value are omitted from the output, so you get the shortest CSS that produces exactly the look you dialed in. The numbers are validated too: percentages that only make sense in a range (like grayscale, capped at 100%) are enforced while open-ended ones like brightness can exceed 100% for over-exposure effects.

The live preview applies your filter stack to a sample box so you can judge the result before copying. Drop-shadow takes its own offset, blur and color — it is the filter version of box-shadow that follows the alpha shape of the element, which makes it the right tool for PNG cut-outs and transparent SVG icons where box-shadow would just draw a rectangle. Copy the final declaration and paste it into any stylesheet.

Frequently asked questions

What is the difference between filter: drop-shadow() and box-shadow?
box-shadow draws a rectangle around the border box; drop-shadow shadows the actual rendered shape, including transparent areas. A transparent PNG of a leaf gets a leaf-shaped shadow from drop-shadow and a rectangle from box-shadow. drop-shadow also has no spread parameter and cannot be inset.
Why is my filtered element blurry at the edges?
blur() samples outside the element's box, so the effect fades at the edges of the element itself, not just inside. This is normal; if you need a crisp edge with a soft shadow, use drop-shadow instead of blur.
Can filter values exceed 100%?
Some can: brightness, contrast and saturate accept any non-negative percentage, so brightness(180%) over-exposes and contrast(200%) deepens both blacks and whites. Functions that interpolate toward a fixed look — grayscale, sepia, invert — max out at 100% where they saturate.
Do filters affect performance?
Yes, filters are raster effects: the browser renders the element to a texture and post-processes it. Small elements are cheap, but large blurred areas can cost paint time, and animating filter values continuously can drop frames on low-end devices. Prefer opacity and transform for animations, and reserve filters for static styling or short effects.
Does filter: opacity() replace the opacity property?
They look identical but filter: opacity() can be promoted to a compositor layer, which sometimes animates more smoothly than the opacity property. The generator includes it so a single declaration can carry every effect; use the plain opacity property when no other filter is needed.