Seed (level generation)

Minecraft seeds are values made up of character(s) (including negative or positive integers) that are used as the basis for generating every Minecraft world.

Compatibility
Seeds are not compatible across editions, but are sometimes compatible with the older and newer versions. However, after Village & Pillage, the villages and other generated structures changed.

seeds between Alpha 1.2.0 and Beta 1.7.3 are mostly the same. Beta 1.8 changed world generation completely, and Release 1.2 changed locations of land biomes with the addition of jungles. Release 1.7.2 rewrote the world generation entirely, determining the arrangement of land biomes and oceans that is still present in the current version. 1.13 featured addition of underwater caves, new aquatic biomes, and adjustment to locations of mutated biomes and structures. 1.14 included the new bamboo jungle biome, and added snowy tundra villages and pillager outposts. In 1.16, shipwrecks and ocean ruins were made rarer, and four new biomes were added to the Nether. World generation is overhauled in 1.18, with the addition of bigger caves, biomes in caves, new mountains, and changes in terrain height. Not mentioned are structure additions in several updates throughout, but the addition of a generated structure usually does not require a complete change of biome generation.

Legacy Console Edition seeds were updated in a similar schedule to Java Edition equivalents.

$$, the Pocket Edition v0.9.0 update was the only update to overhaul world generation. Oceans were changed in the Update Aquatic. Villages and other structures were changed in Village & Pillage. Bedrock Edition 1.17 changed the location algorithm for some structures such as dungeons. Bedrock Edition 1.18.0 becomes the second update to overhaul the world generation entirely.

Certain seeds share a similar biome map across Java and Bedrock with some terrain differences and no similarity in generated structure locations.

World generation
Whenever the game has to generate a new world, it calls upon an algorithm known as Perlin noise. This algorithm outputs a pseudo-random value that is then used to determine the characteristics and features of the world. However, the algorithm always outputs the same value each time for a constant starting point (seed). Thus, the same seed generates the same terrain every time.

A world's seed is set when that world is created. By default, it is decided automatically, but it can also be set manually. Setting and reusing a seed from one world generates the same world. Either a number or a word/phrase can be used, including negatives. If a word/phrase is used, it is converted into a 32-bit integer.

Whenever the world generation algorithm is updated (usually by adding new biomes to the game), the same seed no longer generates the same terrain. If the seed or generator changes in a saved world, new chunks are based on the new seed and no longer match those from the old seed. $$, major (terrain-breaking) changes were observed with Alpha v1.2.0, Beta 1.8, 1.7.2, and Java Edition 1.18. Deleted chunks can regenerate if the seed and generator remain the same, but changes if either the seed or generator changes. In fact, deleting chunks is sometimes done to let newly-introduced features appear in an old world; see Tutorials/Updating old oceans in 1.13 using MCEdit.

Because seeds are simply random values read into an algorithm and not actually names of different worlds, using a certain seed does not result in a world with any relevance to the value of that seed. For instance, using a biome name as the seed does not necessarily result in the creation of a world with primarily that biome, nor does it spawn the player within the said biome.

Determining the seed
$$, the player can enter the command to view the world's seed. This command is available in singleplayer worlds even if cheats are off. The player can also select 'Re-create' in the Worlds menu to see the seed.

$$, the seed can be found on the world options screen. There is also a seed picker that offers the player several pre-set seeds to generate worlds with specific features near the spawn point. Additionally, the beta version has a visible seed on the top of the screen.

Realms
$$, a player can type /seed in the chat. $$, the seed is shown in the settings on a single player world, although the seed is not visible when playing on Realms Plus.

Java Edition
If the seed contains characters other than numbers or is greater than or equal to 20 characters in length, the Java  function is used to generate a number seed. This restricts Minecraft to a subset of the possible worlds to 232 (or 4,294,967,296), due to the datatype used. Number seeds or a default world seed must be used to access the full set of possible worlds (264, or 18,446,744,073,709,551,616). There are 248 meaningful seeds because Java's  uses 48 bits of the seed; seeds are equivalent to one another modulo 248.

Bedrock Edition
has a total of 232 (or 4,294,967,296) possible worlds no matter whether strings or numbers are used as the seed. This is because Bedrock Edition uses a 32-bit variant of the Mersenne Twister PRNG, which accepts only 32-bit seeds. The hashing algorithm is identical to : a hash h starts with 0, and for each character c, the value of h is changed to h * 31 + c, within the boundary of a 32-bit integer.

Overlap between editions
Positive seeds in the range 0–231 (0–2,147,483,648) generate the same arrangements of biomes in both Java and Bedrock editions, although with different structures and structure locations, caves, ore generation, and spawned entities, as well as minor terrain differences. Java Edition seeds between 2,147,483,648 - 4,294,967,295 have a similar equivalent on Bedrock edition with the aforementioned differences, but must first be negated by subtracting 4,294,967,296 to obtain the Bedrock edition seed number equivalent.

Seed 0
$$, the numeric entry for Minecraft seeds does not allow the number "0" (zero), as the game interprets "0" as a character, hashing it to its ASCII value of. However, by using a text seed for which the Java  function returns a zero value, the "zero seed" can still be used. Word strings that produce a zero seed include. However, any text that hashes to 0 works, such as, with being the shortest. Numeric seeds that are congruent to 0 modulo 248 (such as ) also generate the same terrain as seed 0, but do not display as 0 using.

$$, the game rejects all numbers from -9 to +9. However, changing the last character of the seed by one also changes the output hash code by one, so to arrive to a value of +2 from, the last letter is advanced two positions to become. The shortest version is still ddnqavb, followed by any other letter from a through s.

Generation quirks
Through certain seeds, it is possible to observe interesting effects.

Changing terrain without changing some structures
Only certain sections of the seed are used to generate specific features within the world. It is possible to generate multiple worlds with identical cave systems, Nether biomes and other arrangements of generated structures simply by converting the seed into binary and tweaking the desired bits. An example is the seed generator using only the first 48 bits to generate cave systems and badlands clay banding layers.

Shadow seeds
The biome distribution of one world is identical to the biome distribution of another world whose seed can be found by subtracting the current seed from the constant. The terrain generates differently in both worlds, however.

Repetition


Certain seeds return 0 in the internal code, causing infinite arrays of caves and other structures to generate. $$, the seed 107038380838084 returns 0 on the first call and 164311266871034 returns 0 on the second call, causing mineshafts, caves and underwater ravines to loop on the X and Z axes respectively. Underwater caves and normal ravines do not repeat with this seed for 1.13 onward, as a salt was unaccountably added for these. However, if 1 is subtracted from either seed, ravines and underwater caves repeat, but the other three structures do not.

Other features can also repeat, such as decorations. These instead generate diagonally.

$$, diagonal cave, ravine, dungeon, and decoration repetition occur with the seeds 289849025 and 1669320484.

Trivia

 * It is possible to generate Legacy Console Edition biomes on Java Edition version 1.7.2 - 1.12.2 by modifying the source code to remove 2 hard-coded layers in the biome stage of biome generation, which downscales the biomes 4x to obtain the final Legacy Console biome map, as the 1.12.2 old Customized's biome size option uses a different hard-coded formula to downscale/upscale biomes. Specifically, legacy console edition does not scale the biomes 2x immediately prior to where the biome edges are applied, whereas Java Edition customized changes the number of times biomes are scaled after beaches are placed on the biome map.

Notable Java Edition seeds
The following map seeds have, at one point or another, been used for generating official Minecraft maps and resources or otherwise significant community material $$.


 * The demo world seed can be played in the full version by entering in the seed input.
 * The PC Gamer demo world seed can be played in the appropiate era by entering, all lowercase unlike the famous seed where the G is capitalized, in the seed input.
 * The seed for each title screen panorama are as follows:
 * T he panorama used between Beta 1.8 Pre-release and 18w22c is either or, generated between Beta 1.6.6 and Beta 1.7.
 * The panorama used for Java Edition 1.13 is, which is the seed resulting from typing in as a seed, generated in snapshot 18w22a.
 * Java Edition 1.14 is, taken in 18w48a.
 * Java Edition 1.15 is, taken in 19w40a.
 * Java Edition 1.16 is, taken in 20w13a.
 * The seed for the original pack.png file is, generated in Alpha v1.2.2. It can also be generated between Alpha v1.2.0 and Beta 1.7.3 with minor population differences.
 * The seed for the Skull on Fire painting is either or, generated in Alpha v1.1.2_01 or prior.
 * The seed used for the original Herobrine doctored screenshot is, generated in Alpha v1.0.16_02.