1001Ferramentas
๐ŸŒซ๏ธGenerators

Noise SVG Texture Generator

Create noise (grain) textures in SVG using feTurbulence for modern backgrounds. Control frequency, octaves and output color.


  

Noise SVG textures: beyond plain grain

SVG noise built on the <feTurbulence> filter is the most flexible way to add a tactile, analog feel to a digital interface. The base filter outputs a procedurally-generated Perlin noise field โ€” but the real power shows when you chain extra primitives like feColorMatrix, feDisplacementMap and feComposite to mimic real-world materials.

Texture variations via filter combos

  • Paper texture โ€” low baseFrequency (0.6-0.9) and 2-3 octaves, plus a soft warm tint via feColorMatrix.
  • Concrete / stone โ€” high frequency (1.5+) with 5+ octaves and an edge-detection matrix to sharpen contrast.
  • Wood grain โ€” anisotropic noise: stretch the field on one axis with baseFrequency="0.05 0.8" to make horizontal fibres.
  • Fabric weave โ€” same anisotropic trick, with two perpendicular noise layers blended via feComposite operator="arithmetic".
  • Water ripple โ€” feed the noise into feDisplacementMap to warp an underlying image โ€” the basis of glass-distortion effects.

Seamless tiling and multi-octave detail

For a noise that repeats without seams, set stitchTiles="stitch". The browser then aligns the procedural field to tile boundaries, letting you reuse the same generated SVG as a CSS background-image or <pattern> without visible repeats. The numOctaves parameter controls how many noise frequencies are summed โ€” more octaves yield a denser, more "natural" texture, at the cost of GPU time. In Chromium 80+, feTurbulence is GPU-accelerated, and a 600ร—300 texture renders comfortably at 60 fps.

<filter id="paper">
  <feTurbulence type="fractalNoise" baseFrequency="0.85"
                numOctaves="3" stitchTiles="stitch"/>
  <feColorMatrix type="matrix" values="
    0 0 0 0 0.95
    0 0 0 0 0.92
    0 0 0 0 0.85
    0 0 0 0.18 0"/>
</filter>

Brand and editorial applications

Noise is the secret behind several recognisable design languages. The NYT digital editorial style uses a faint paper grain under every long-form article to suggest print continuity. Brutalist web pages embrace heavy grain as a stylistic statement. Warm B2C brands (skincare, slow food, indie books) layer 5-10% opacity noise on hero sections to humanise the flat-design aesthetic. A Risograph effect โ€” combining high-opacity noise with a restricted 2-3 colour palette โ€” emulates the print-style aesthetic of zines and small-batch posters.

Performance vs PNG and integration

An SVG noise filter beats a tiled PNG on every axis: it is smaller (under 1 KB versus tens of KB), scalable to any resolution including Retina, and its colour is customisable at runtime via feColorMatrix. For best performance, generate the filter once and reference it through a <pattern> or a cached data: URL in CSS. PostCSS plugins like postcss-svg-noise let you inline the result during the build, and there are Tailwind plugins exposing a backdrop-noise utility for component-level use.

FAQ

Are complex filter chains expensive? The first paint costs a few milliseconds; subsequent paints reuse the rasterised result if you keep the filter inside a <pattern> or mask. Avoid placing them on elements that animate transforms โ€” the filter region recomputes every frame.

How much noise should a brand site use? Subtle โ€” around 5-10% opacity. Anything more crosses from "tactile finish" into "broken display" territory.

Can I control the noise colour? Yes โ€” feTurbulence outputs greyscale, and feColorMatrix tints it to any palette without leaving SVG.

How do I make it seamless across a full-bleed background? Combine stitchTiles="stitch" with a square <pattern> sized 200-400 px and apply it via fill="url(#noise)".

Related Tools