Why Minecraft Switched from Usernames to UUIDs
In early versions of Minecraft, player inventory data, whitelist entries, operator statuses (OP), and server bans were tracked solely by player usernames. However, when Mojang introduced username changes in Minecraft 1.8, storing player progress by string names became impossible without game-breaking exploits (such as inventory loss or ban evasion).
To resolve this, Mojang adopted Universally Unique Identifiers (UUIDs) based on the RFC 4122 standard. A player can change their in-game display name every 30 days, but their underlying 128-bit UUID remains permanent and immutable for the lifetime of that Minecraft account.
Trimmed vs. Hyphenated UUID Formats
When working with Minecraft server files and web development, you will encounter two primary UUID representations:
- Hyphenated UUID (8-4-4-4-12): The canonical human-readable representation separated by dashes, such as
069a79f4-44e9-4726-a5be-fca90e38aaf5. This format is required by modern server plugins like LuckPerms, EssentialsX, CoreProtect, and whitelist JSON files. - Trimmed UUID (32 Hex Characters): The same 128 bits compressed without dashes (e.g.
069a79f444e94726a5befca90e38aaf5). This is the compact notation returned by official Mojang REST APIs to minimize bandwidth payload size.
Online Mode vs. Offline (Cracked) UUIDs
It is vital to understand the difference between official and offline UUIDs:
- Online Mode (Official Mojang): When
online-mode=trueis set inserver.properties, the server requests Mojang’s authentication servers to verify player ownership and fetches their official Version 4 random UUID. - Offline Mode (Cracked / LAN): When
online-mode=false, the server cannot connect to Mojang and instead generates a deterministic Version 3 (MD5-based) UUID computed directly from the string"OfflinePlayer:" + username. These offline UUIDs will not match the official Mojang database.