Perlin Noise Generator
Generate seamless 2D Perlin noise in the browser. Tune seed, scale, octaves, persistence and lacunarity, preview as grayscale, terrain or heatmap, and export a PNG.
384×384 px · seed 1337
What is Perlin noise?
Perlin noise is a gradient noise function invented by Ken Perlin in 1983 while working on the film Tron. Unlike a grid of independent random numbers — which looks like television static — Perlin noise is smooth and continuous: nearby points have similar values, so the output reads as natural, organic structure rather than harsh digital noise. It earned Perlin a Technical Achievement Academy Award in 1997.
The algorithm assigns a pseudo-random gradient vector to every point on an integer lattice, then interpolates between them with a smooth fade curve 6t⁵−15t⁴+10t³. The result is a reproducible field in roughly [-1, 1] that depends only on the coordinates and the seed — sample the same point twice and you always get the same value.
Octaves & fractal Brownian motion
A single Perlin layer is fairly bland. Real-world detail is fractal — big shapes carry medium shapes that carry fine texture. This generator stacks several layers (octaves) of noise at increasing frequency and decreasing amplitude, a technique called fractal Brownian motion (fBm).
- Octaves: how many noise layers are summed. More octaves = more fine detail, at a linear cost in render time.
- Persistence: how much each successive octave contributes to amplitude. Low values (<0.5) give smooth, rolling fields; high values keep the fine octaves loud and the result looks rough and grainy.
- Lacunarity: the frequency multiplier between octaves. The classic value is
2.0(each octave doubles in frequency); higher values spread detail across very different scales. - Scale: how many screen pixels span one noise unit — effectively a zoom. Large scale = broad, slow features; small scale = busy, high-frequency texture.
Parameter cheat sheet
| Goal | Suggested settings |
|---|---|
| Soft clouds / fog | scale 120, octaves 4, persistence 0.40 |
| Terrain heightmap | scale 90, octaves 6, persistence 0.50, terrain colour |
| Rough rock / grain | scale 50, octaves 8, persistence 0.70 |
| Marble / wood vibe | scale 70, octaves 5, contrast 2.0× |
Where Perlin noise is used
Procedural noise is everywhere in graphics and games: terrain and cave generation (Minecraft, No Man's Sky), textures for marble, wood, clouds and water, animated effects like fire and smoke, heightmaps for displacement mapping, motion jitter for natural-looking animation, and data-art / generative design. The PNG you export here can be dropped straight into a shader, a game engine as a heightmap, or an image editor as a texture layer. For seamless tiling or 3D effects you would extend the same idea to 3D/4D noise and sample a looping slice.