Home/Tools/Effects/Noise Texture Generator
Effects · Generator

Noise Texture Generator

Generate SVG-based noise textures (Perlin, grain, static) as CSS background-image overlays.

Noise Type

Noise Settings

3
2

Overlay

15%

Preview

Noise Texture

perlin · 0.65 freq · 3 octaves

Generated CSS
.element {
  position: relative;
  background-color: #6366f1;
}

.element::after {
  content: '';
  position: absolute;
  inset: 0;
  opacity: 0.15;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'> <filter id='noise' x='0%' y='0%' width='100%' height='100%'> <feTurbulence type='fractalNoise' baseFrequency='0.650' numOctaves='3' seed='2' stitchTiles='stitch'/> </filter> <rect width='200' height='200' filter='url(%23noise)' opacity='1'/> </svg>");
  background-size: 200px 200px;
  pointer-events: none;
}
100%
Free, no
sign-up needed
0
Code written
by hand
85+
CSS tools
in one place
<1s
Copy-ready
CSS instantly
What is this

What is the CSS Noise Texture Generator?

Generate subtle noise and grain textures as CSS backgrounds using SVG filters. Add organic depth to flat surfaces without image files.

Everything runs locally in your browser. Adjust the controls above, preview instantly, and copy clean, production-ready CSS — no account, no upload.

How to use

Using the CSS Noise Texture Generator

Everything lives in the panel at the top of this page. There is nothing to install — it all runs right here in your browser.

1

Set noise frequency and octaves

Higher baseFrequency creates finer grain. Higher numOctaves adds more detail. Start at 0.65 frequency and 3 octaves for a film grain look.

2

Set opacity

Keep opacity between 0.02 and 0.08 for subtle texture. Use the slider to preview different intensities.

3

Copy the CSS

Click Copy to get the ::after pseudo-element CSS with the data URI SVG filter.

The output

What the generated code looks like

Clean, production-ready CSS — no vendor bloat, no unnecessary declarations.

styles.css
/* SVG noise filter */
.noise-bg {
  position: relative;
}
.noise-bg::after {
  content: '';
  position: absolute;
  inset: 0;
  opacity: 0.04;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 200px 200px;
}

Keep noise opacity below 0.1 for subtle grain. Higher values become visually distracting. Use pointer-events: none so the noise overlay does not block clicks.

Pro tips

Pro tips for better results

Noise textures add perceived quality to flat designs

A 3-5% opacity noise overlay on solid colour backgrounds reduces the sterile flatness of pure colour and adds a tactile quality without introducing visible texture.

Tile the noise texture with background-size

Set background-size to a fixed size (150px-300px) to control the tile frequency. Larger tiles give coarser grain; smaller tiles give finer grain.

Use pointer-events: none on the ::after layer

The noise overlay covers the element and will capture mouse events if pointer-events is not disabled. Always add pointer-events: none to decorative overlay pseudo-elements.

FAQ

Frequently asked questions

The SVG data URI is computed once and tiled as a background image, similar to a PNG texture. It does not recompute on every frame. Performance is comparable to using a small raster texture image.
No. Everything runs in your browser. Nothing is sent to a server.

From the blog

Read more