SimulatorDeveloperUtilityEducation

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

80 px
5
0.50
2.00
1.00×

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

GoalSuggested settings
Soft clouds / fogscale 120, octaves 4, persistence 0.40
Terrain heightmapscale 90, octaves 6, persistence 0.50, terrain colour
Rough rock / grainscale 50, octaves 8, persistence 0.70
Marble / wood vibescale 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.