Live model · Minecraft world generation

How Minecraft World Generation Actually Works

A Minecraft seed is the number world generation draws all its randomness from. It shuffles the tables behind Perlin noise, a smooth random field. Several octaves of that noise, each finer and fainter than the last, add up to a height, and thresholds on height and other noise maps decide ocean, beach, forest or mountain.

A seed, octave by octave

Seed 375 drives a seeded generator that shuffles 0 to 255 into a permutation table: 222, 61, 125, 63, 49, 103, … The same seed always makes the same table, so the same world.
StopOctave noise
SeedOctavesFeature size
Octave0 of 5Lattice cell24 cellsWeight1

Seed 375's permutation table, first 16 of 256

One octave alone

Height so far, colored by biome

Cross-section along row 24

seasnow-0.4-0.200.20.40.6010203040columnheight
  • Height so far
  • This octave alone

Cells by biome, of 2,304

  • CH1 Height so far
  • CH2 This octave alone
  • CH4 Below sea level

Watch the Python behind this model run, line by line

How to read the stage

Seed 375 shuffles 0 to 255 into a permutation table, shown first. Each step then samples one octave of noise from it (left map: blue high, magenta low) and adds it to the height (right map, colored by biome). Octave 1 makes smooth blobs, with water over 48% of the map. Octaves 2 to 5 add coastlines and peaks, each at half the size and half the weight, ending at 40% water. The chart cuts along row 24.

Why Perlin noise looks natural

Perlin noise puts a random gradient at each point of a grid, picked by hashing the point through the table, and blends the four around each cell with a fade curve. Ken Perlin's 2002 revision changed that curve from 3t² − 2t³ to 6t⁵ − 15t⁴ + 10t³, whose first and second derivatives are zero at both ends, to remove visible creases where grid cells meet. It also limited the gradients to the 12 edge directions of a cube.

How seeds work

Every height depends only on the seed and the cell's coordinates. The stage below walks east one chunk at a time, computing everything from scratch, and of the 1,536 cells each pair of windows shares, all 1,536 come out identical. Minecraft builds chunks of 16 by 16 columns as players come near, so nothing exists before anyone arrives. Numeric seeds reach 2^64 worlds; a text seed is hashed to a 32-bit number, about 4.3 billion of them.

Walking east, one chunk at a time

Seed 375, columns 0 to 47: three chunks of 16 columns. Every height is computed from the seed and the cell's coordinates, and nothing else.
StopChunk by chunk
SeedOctavesFeature size
Step0 of 6Identical cellsnone yet

Columns 0 to 47, chunk borders drawn

Chunks in view

ChunkColumnsThis step
00 to 15new
116 to 31new
232 to 47new

Watch the Python behind this model run, line by line

What the model leaves out

Since Java Edition 1.18, released November 30, 2021, Minecraft doesn't read height off one noise map. It samples several, including continentalness, erosion and weirdness, which drives peaks and valleys, and maps them through splines to a height offset and stretch. A 3D density then decides solid or air for every block, and biomes come from a six-dimensional climate space. This page shows the octave-noise core those build on.

Questions

How do Minecraft seeds work?
A seed is the starting number for every random choice world generation makes. The same seed in the same version gives the same terrain, anywhere and in any order, because each block's terrain is computed from the seed and its coordinates. Numeric seeds cover 2^64 worlds, and text is hashed down to a 32-bit number. An update that changes generation can change what a seed makes.
Is a Minecraft world infinite?
Nearly, but not quite: Java Edition worlds end 30 million blocks out in each direction. Inside that, terrain exists only once it's generated. Chunks of 16 by 16 columns are built from the seed as players come near, so the world never has to be made or stored ahead of time.
What is Perlin noise?
A smooth random function Ken Perlin published in 1985 for computer graphics. It hashes each grid point to a pseudo-random gradient and blends between them, so nearby points get similar values and the result looks organic rather than like static. Summing octaves of it, each at double the frequency and half the amplitude, gives the rough, self-similar look of terrain.
Why does changing the seed by one change everything?
The seed feeds a generator whose output scrambles completely when the seed changes at all. Seed 376 shuffles the permutation table into an order that matches seed 375's in none of its 256 places, so every gradient moves. Try The next seed under Break it: none of the coastline survives.
What do octaves do?
Each octave is the same noise at twice the frequency and half the weight of the one before. On the stage, one octave gives smooth blobs, with a lattice point every 24 cells, and puts 541 cells under snow; five give coastlines with detail down to a couple of cells, and 246 snowy cells. A sixth changes only a few dozen cells on a map this size.

More of how it works