Terrain Heightmap Generator
Random numbers on a grid look like static. What makes a height field look like land is interpolation — a coarse lattice of random values, smoothly blended, with finer layers added on top at half the amplitude each time. The water line then turns one field into many different maps: raise it and you get islands, lower it and you get a continent. The smoothness is measured, not assumed, because a field of independent random values would fail the same check.
What this generator does
Builds a lattice of random values at several frequencies, interpolates each smoothly, and sums them with halving amplitude. Everything below the water line is drawn as sea and everything above is banded by height, with the land share reported.
How to use this tool
- Choose the grid resolution and how many octaves of detail to add.
- Set the water line, which decides how much of the map is land.
- Generate, and move the water line to see the coastline change.
- Seed a map you want to come back to.
Understanding the controls
- Resolution
- Grid cells across, from 12 to 64. Higher resolution samples the same underlying field more finely rather than adding detail.
- Octaves
- How many layers of detail, each twice the frequency and half the amplitude of the last. One octave is smooth hills; five is rugged.
- Water level (%)
- The height below which everything is sea. This is what turns one field into an archipelago or a continent.
- Seed
- Reproduces exactly the same terrain, which is the only way to come back to a map you liked.
Common use cases
- Procedural map backdrops for a game or a story
- Showing what octaves actually add to a noise field
- Height data for a terrain or contour exercise
- Illustrating why interpolation, not randomness, makes noise look natural
- Reproducing the same world from a seed
How this generator works
This is value noise rather than Perlin noise: the random values sit at the lattice points themselves, not gradients, and are blended with smoothstep so the gradient is zero at each lattice point and the seams do not show. The check confirms every value is in range and that neighbouring samples never jump further than the lattice spacing allows — the property that distinguishes interpolated noise from independent random numbers.
Randomness and fairness
The lattice values are random; the interpolation and the summing are not. Seeded terrain reproduces exactly and is therefore explicitly not cryptographically secure. Without a seed the browser's cryptographically secure generator fills the lattice.
For how randomness is produced across the whole site, see how Generate Random works.
Limitations and good to know
- This is value noise, not Perlin or simplex noise — those interpolate gradients rather than values and look subtly different.
- There is no erosion, river carving or climate model; the bands are pure height.
- The map does not tile, so its edges will not join up with a copy of itself.
- Resolution stops at 64 cells across, which is a map rather than a detailed landscape.
- Terrain is not stored between visits; seed a map you want back.
Privacy and your data
The height field is generated in your browser. Nothing about the map or your seed is transmitted or kept.
Related generators
- Elementary Cellular Automaton GeneratorAll 256 one-dimensional rules, run from a single cell or from noise, with the rule number decoded into its eight outputs.
- Game of Life Pattern GeneratorRandom Life soups run until they settle, reporting whether they died, froze, or fell into a cycle — and the exact period.
- Voronoi Diagram GeneratorRegions of nearest-site ownership drawn by sampling, with every checked cell verified against every site and the region shares reported.
- Random Coordinate GeneratorA latitude/longitude coordinate, uniformly distributed across the globe — could land anywhere, ocean included.