Noise Texture Generator

Generate synthetic noise textures (white, Perlin, fBM) OR upload an image and add real-time noise effects. Control intensity, scale, octaves, and seed.

6.0
4
Privacy-first & offline: All operations (noise generation, image processing) happen locally. No data is uploaded.
Output Preview
Grayscale intensity: 0 (black) → 255 (white) Mean: —   StdDev: —
Texture fingerprint
Mode: Generate
Type: Perlin Noise
Scale: 6.0  |  Seed: 1337  |  Octaves: 4
Randomness quality
Entropy (est.): bits/pixel
Dynamic range:

Understanding Procedural Noise: From White Noise to Fractal Landscapes

Procedural noise is the foundation of modern computer graphics, used to generate natural-looking textures, terrains, clouds, fire, and even planetary surfaces. Unlike bitmap textures, noise functions are mathematically defined and infinite, scalable, and deterministic given a seed. This tool implements three essential classes: White Noise (uncorrelated randomness), Perlin Noise (smooth gradient noise), and fractal Brownian motion (fBM) – a self-similar accumulation of Perlin noise at multiple scales.

The Perlin noise function N(x,y) produces a smooth value between -1 and 1 using:

N(x,y) = Σi=0..n-1 wi · interpolate( gradient(floor(x·2i), floor(y·2i)) )

Where gradients are random unit vectors and interpolation uses a quintic curve (6t⁵ - 15t⁴ + 10t³) for C² continuity.

1. White Noise – Maximum Entropy, Zero Correlation

White noise assigns independent random values to each pixel. It has a flat power spectrum — all frequencies contribute equally. While visually "static", white noise is crucial for dithering, Monte Carlo integration, and as a building block for more advanced textures.

2. Perlin Noise – Coherent Gradient Noise

Developed by Ken Perlin in 1983 (Oscar-winning technique), Perlin noise produces continuous, band-limited noise ideal for natural phenomena. The algorithm: define a grid of random gradient vectors; for any point, compute dot products with surrounding gradients, then interpolate using a smoothstep function. The result is organic, cloud-like, and infinitely tileable if implemented correctly.

3. Fractal Brownian Motion (fBM)

fBM is created by summing multiple octaves of Perlin noise with decreasing amplitude (persistence = 0.5) and increasing frequency (lacunarity = 2). The self-similarity produces rough, mountain-like patterns and is widely used in terrain generation, procedural planets, and marble textures.

Practical Applications & Case Study

Case Study: Real-time Terrain Generation for Indie Games

Indie studio "NebulaForge" used our noise generator to prototype heightmaps for an open-world RPG. By combining fBM (scale=8, octaves=5) with a simple erosion filter, they reduced asset production time by 70%. The orthocenter of art direction met procedural generation: each biome used a distinct seed and noise type, yielding 200+ unique landscape tiles without manual painting. The tool’s interactive feedback allowed instant tuning of roughness and feature size — a perfect demonstration of fBM's creative power.

Mathematical Foundations: Gradient Noise & Spectral Synthesis

From a signal processing perspective, Perlin noise acts as a band-limited noise source, whereas white noise is unbounded. The frequency spectrum of fBM follows a 1/fβ law (β = 2 × persistence × octave contribution). The scale parameter (frequency) directly controls the wavelength of features: low scale = large, sweeping structures; high scale = fine, detailed texture. Our implementation uses a permutation table of size 512 (based on the input seed) and precomputed gradient vectors to ensure deterministic and repeatable results across browsers.

Noise TypeAutocorrelationVisual CharacterUse Cases White Noiseδ(0) onlyStatic / television snowDithering, random sampling, glitch art Perlin NoiseExponential decaySmooth rolling hills, cloudsTerrain bump mapping, fire, procedural wood grain fBMLong-range correlationsRugged mountains, turbulent flowHeightmaps, procedural planets, marble textures

Frequently Asked Questions

Seed initializes the pseudo-random permutation table for gradient noise. Changing the seed generates a completely different texture pattern while preserving statistical properties. The same seed always yields identical output across sessions — perfect for reproducibility in research or asset pipelines.

At low scale values (< 3), the grid interpolation becomes visibly coarse because fewer sampling points span the canvas. Increase scale (> 6) to break up the grid pattern and achieve organic granularity. Our implementation uses quintic interpolation for smoothness, but the inherent lattice structure becomes visible at extreme low frequencies.

Yes — all textures are generated royalty-free on your local machine. There are no usage restrictions. You can export as PNG and use them in any commercial or personal project. We only ask for a backlink if you find the tool useful (not required).

fBM (fractal Brownian motion) sums several octaves of Perlin noise with increasing frequency and decreasing amplitude. This adds small-scale detail while preserving macro-structures, creating a natural roughness similar to mountain ranges or turbulent flow. Standard Perlin noise is a single octave — smoother and less detailed.

Value noise interpolates between random values at lattice points, producing a "blocky" appearance; gradient noise (Perlin) uses random vectors and dot products, resulting in better visual quality and fewer artifacts. This tool uses gradient noise for Perlin and fBM modes.

No, this version does not automatically produce tileable textures. For seamless tiling, you would need to implement domain repetition (e.g., using modulo coordinates or a periodic gradient table). However, you can manually tile the exported PNG in image editors, or adjust the scale parameter to avoid hard edges when wrapping. Future versions may include a seamless mode.
Implementation notes: The Perlin noise algorithm is based on the reference implementation described in “Texturing and Modeling: A Procedural Approach” (Ebert et al., 2003). All noise functions are computed locally on the client side using JavaScript. GetZenQuery Tech team, last update May 2026.