The CSS Filter Playground lets you dial in image effects visually instead of guessing
numbers in a stylesheet. Load your own photo (or the built-in sample), drag the sliders for
blur, brightness, contrast, saturate, hue-rotate, sepia, grayscale, invert and opacity,
and the preview updates in real time. When the look is right, copy it as a plain filter
value, a complete CSS rule, or Tailwind utility classes — or download a PNG with the effect
permanently baked into the pixels. It’s built for front-end developers tuning a hero banner,
designers mocking up a duotone treatment, and anyone who wants a photo filter without opening
a heavyweight image editor.
How it works
The CSS filter property accepts a space-separated chain of functions that the browser
composites in order, left to right. This tool maps one slider to each common function and
rebuilds the chain on every change, only including a function when it differs from its no-op
value — so brightness(100%) and blur(0px) are omitted automatically and your output stays
clean. The live preview simply sets that string as the filter style on the image element,
which is why it is instant and GPU-accelerated.
The Download PNG button does something the preview can’t: it re-draws your image onto an
HTML canvas, sets the canvas context’s filter to the same string, and exports the result.
Because the canvas rasterises the effect, the downloaded file contains real filtered pixels you
can use anywhere — not just a CSS hint. The before/after split overlays the untouched
original clipped to a draggable divider so you can judge the effect honestly, and saved
presets let you name a look once and reapply it to any image later. Everything — file reading,
canvas export, and preset storage — runs locally in your browser with no network calls.
Example
Suppose you want a moody, cinematic banner. Start with the Noir quick look (full grayscale, contrast pushed to 135%, brightness eased to 95%), then nudge contrast down a touch for less crush. The tool emits:
.filtered {
filter: brightness(95%) contrast(135%) grayscale(100%);
}
For a warm vintage photo instead, set sepia to 45%, saturate to 130%, and add a small
hue-rotate(350deg) — the playground produces the exact chain, and the Tailwind copy gives you
brightness-[0.95] contrast-[1.35] grayscale-[1] for utility-first projects. Double-click any
slider to zero out just that one effect while keeping the rest, and the value always reads back
in the same predictable order every time.