Perlin Noise Generator

Create seamless textures and terrain patterns in your browser. Adjust the seed and octaves, check the joins in the 2×2 preview, then save a PNG up to 2048×2048 pixels. No sign-up or installation.

Start with a texture

Choose a texture to load its settings.

4
5
0.50
2

Share a reproducible texture: the link keeps your seed, colours and export size.

Every setting is deterministic in the seed, so the same numbers always produce the same image. With tiling on, lacunarity is restricted to whole numbers — that is what keeps the lattice periods aligned across octaves.

Three tips for exporting your texture

Which texture should I start with?

Terrain colours noise values as sea, sand and land. Clouds combine seven noise layers in greyscale; Ridges folds the noise into sharp crests. For a greyscale height texture, choose Greyscale before saving. The output is an 8-bit image, not a 3D mesh or a 16-bit height field.

How do I check for seams?

Enable Seamless tiling and Show 2×2 tiled, then inspect the horizontal and vertical joins in the centre. The PNG contains one tile, not the four-tile preview. If fine detail looks grainy, try reducing Scale or Octaves.

What size can I export, and how can I reproduce it?

Export a square PNG at 256, 512, 1024 or 2048 pixels. Larger images take longer to render. Use Copy link to this texture to preserve all settings, not just the seed. Opening the link restores the colours, numeric parameters and export size.

How to generate a seamless Perlin noise texture

  1. Choose a preset or adjust Scale and Octaves. Keep the Seed to reproduce the same pattern with the same settings.
  2. Enable Seamless tiling and Show 2×2 tiled to inspect the horizontal and vertical joins.
  3. Choose an export size and press Save PNG. The file contains one tile, even when the preview shows four.

What Perlin noise actually is

It is not random pixels. Random pixels are useless for anything that has to look natural, because natural surfaces are correlated — a point on a hillside is nearly the same height as the point next to it. Perlin noise builds that correlation in from the start.

The construction: put a grid over the plane and give every lattice corner a random unit vector. To evaluate a point, take the four surrounding corners, and for each one compute the dot product of its vector with the offset from that corner to your point. Then blend the four results together with a smoothing curve. Because every lattice point contributes zero to itself, the value at every grid corner is exactly zero, and the structure you see is entirely in between — which is why Perlin noise has a characteristic scale and white noise does not.

The blending curve matters more than it looks. Ken Perlin’s original used 3t² − 2t³; his 2002 revision changed it to 6t⁵ − 15t⁴ + 10t³, whose second derivative also vanishes at the ends. Without that, the second derivative jumps at every lattice line, and although you cannot see it in the noise itself, you can see it immediately in anything computed from the noise — a normal map built from first-derivative shading shows a visible grid. This page uses the quintic curve.

Octaves are what make it look like terrain

A single octave looks like smooth blobs. Real landscapes have detail at every scale: mountain ranges, hills on the ranges, rocks on the hills. Fractional Brownian motion adds several copies of the noise, each at double the frequency and half the amplitude, which reproduces that. Octaves is how many copies, lacunarity is the frequency multiplier and persistence the amplitude multiplier. Persistence near 0.9 gives a rough, noisy surface; near 0.2 gives smooth hills with a faint texture.

Turbulence and ridges

Taking the absolute value before summing folds the noise at zero, producing creases instead of smooth valleys — that is turbulence, and it is where marble and fire textures come from. Subtracting the result from one turns the creases into sharp ridges, which is the standard trick for generating mountain ranges. Both are one line of difference from the fractal sum, and both look nothing like it.

How the tiling works

Seamlessness is not a post-process here; nothing is blended or mirrored. The gradient lookup is done modulo a period, so the lattice itself repeats, and every octave uses a period that is the base period times its frequency. As long as those frequencies are whole numbers, all the octaves come back into phase at the same place and the image tiles exactly. That is the reason lacunarity is locked to integers in tiling mode — at 2.5 the fourth octave would land halfway through a cell and the seam would come back.

Turn on Show 2×2 tiled to check it. The join runs through the centre of the preview, horizontally and vertically; if there were a seam it would be the most obvious thing in the image.

What will you try next?

Share this tool

Part of Shake AI Lab — interactive experiments in mathematics and machine learning. · More tools