What you see is a live CSS stack on the canvas
We paint your bitmap once, then let the browser tint it with the same filter string you would use in CSS. Presets map to combinations of sepia, saturation, contrast, brightness, blur, and hue rotation. Sliders add offsets on top so you are not locked into a single recipe.
Expect the preview to feel instant because nothing round-trips to a server.
canvas.toDataURL cleanly; others flatten the bitmap without the filter. If your PNG looks flat, screenshot the preview or open the same file in a desktop editor for pixel-perfect exports.Three jobs people use this for
- Stories prep
- You need a warmer still before posting to a vertical feed. You test warmth here, then hand the PNG to your usual scheduling app.
- Client mood boards
- You send five crops with different grades so a brand picks a direction without opening Photoshop.
- Thumbnail tests
- You compare matte versus punchy contrast for a YouTube still, then pair the winner with our image resizer for exact platform pixels.
- Caption pairing
- Once the grade feels right, you draft copy beside the visual using the Instagram post generator so tone in words matches tone in color.
When a heavy filter backfires
Skin turns plastic when saturation and clarity both run hot. Food goes sickly if you push green-magenta hue shifts without pulling saturation back. Night scenes lose stars when brightness climbs but contrast stays flat.
We treat aggressive looks as valid, but you should assume each extra slider compounds noise. Start from Original or Matte, add at most two big moves, then fine-tune.
Privacy in one line
The page loads, your browser runs the math, and the tab forgets the image when you refresh. We do not receive the bytes.
