CSS Filter Generator
Layer blur, brightness, contrast, grayscale, hue-rotate, invert, opacity, saturate, and sepia into a single CSS filter.
Layer blur, brightness, contrast, grayscale, hue-rotate, invert, opacity, saturate, and sepia into a single CSS filter.
Layer blur, brightness, contrast, grayscale, hue-rotate, invert, opacity, saturate, and sepia into a single CSS filter. Preview on a live illustration, photo, or text — all client-side.
filter: none;The filter property applies a space-separated pipeline of image-processing functions to any element and everything it paints — images, text, borders, even backdrops of nested children. Toggle each function on and tune its slider; the tool only emits enabled functions, so the final CSS stays compact. You can also start from a preset (Vintage, Noir, X-ray…) and then fine-tune the values.
Order matters. Filters are applied left-to-right, so blur(4px) contrast(150%) sharpens an already-blurred image, while contrast(150%) blur(4px) softens a high-contrast one. This generator emits functions in a fixed, readable order (blur → sepia → …), but you can rearrange them in your stylesheet if the sequence matters for your look.
Unit cheat sheet. blur takes pixels — anything over ~8px starts to look glassy. hue-rotate takes degrees on the HSL wheel — 180deg is complementary, 90deg is a quarter-turn. Everything else is a percentage: brightness / contrast / saturate default to 100% and can go above 100% to intensify, while grayscale / invert / sepia / opacitymax out at 100%. Setting any percentage filter to 0% removes that effect entirely — which is why the tool treats the neutral value as “off.”
Watch performance on animated elements. Each filter is a paint- stage effect, so animating filter directly triggers repaint every frame. If you need to transition a filter, wrap the filtered element with will-change: filter so the browser promotes it to its own layer, or animate only opacity on a shadow pseudo-element and keep the filter static. Everything in this tool runs locally in your browser — no uploaded image or CSS leaves your device.