Tools · UUID

Minecraft Offline UUID Generator

Every offline-mode Minecraft server — Bukkit, Spigot, Paper, Purpur, Folia — must give each connecting player a stable identifier without calling Mojang. It does that by hashing "OfflinePlayer:" + username with MD5, then stamping the result as a version-3 UUID. This tool runs that exact same calculation in your browser so you get the UUID the server would produce — before the player ever logs in.

Runs 100% in your browser — nothing sent to any serverMatches Bukkit · Spigot · Paper · Purpur · Folia

Minecraft usernames are 1–16 characters. Case-sensitive — Notch and notch produce different UUIDs.

Enter a username above to generate the offline UUID.

Exactly how Minecraft computes offline UUIDs

The entire mechanism lives inside Java's standard library in one line that every Bukkit-based server has called since 2012. Here it is as it appears in CraftBukkit's PlayerProfile code:

UUID offlineUUID = UUID.nameUUIDFromBytes(
    ("OfflinePlayer:" + username)
        .getBytes(StandardCharsets.UTF_8)
);

UUID.nameUUIDFromBytes is defined in RFC 4122 §4.3 as a version-3 UUID: compute the MD5 digest of the input bytes, then overwrite two nibbles to encode the version and variant. Concretely:

  • byte[6]Upper nibble forced to 0x3_ — encodes UUID version 3.
  • byte[8]Top two bits set to 10 — encodes the RFC 4122 variant.

The resulting 16 bytes are printed in lowercase hex, split by hyphens into the familiar 8-4-4-4-12 pattern. That's the UUID your server writes to ops.json, whitelist.json, world/playerdata/, and every plugin's per-player storage.

Why the "OfflinePlayer:" prefix?

Without a namespace, a player named abc could theoretically hash to a UUID that Mojang happened to assign to a completely different account. By prepending OfflinePlayer:, all offline UUIDs are generated from a hash space Mojang never touches. Collision between an offline UUID and a real Mojang UUID is effectively impossible.

Online UUID vs. Offline UUID — what's the difference?

PropertyOnline UUID (Mojang)Offline UUID
UUID versionVersion 4 — randomly generatedVersion 3 — name-based MD5
Assigned byMojang / Microsoft at account creationThe server, locally, on first join
Changes on rename?No — tied to the account foreverYes — new name = new hash = new UUID
Requires Mojang APIYes (server.properties: online-mode=true)No — pure local computation
Unique globally?Yes — cryptographically randomPer-username — same name → same UUID everywhere

When you actually need an offline UUID

Most server admins only stumble across offline UUIDs when something breaks. Here are the real situations where knowing the exact UUID before the player connects matters:

Granting operator status before first join

ops.json stores entries like {"uuid":"...","name":"Steve","level":4}. If you put in the wrong UUID the server will create a second, duplicate entry the moment that player actually joins, and the first entry will never match. Generate the correct offline UUID here, paste it into ops.json, and you're done.

Whitelist setup without a live server

You're configuring a new server, or the server is offline for maintenance, and you want to pre-populate whitelist.json. Same deal as ops — the UUID must match what the server would compute. Enter each username here and paste the results in.

Plugin data migration and repair

Bukkit plugins typically store per-player files named <UUID>.yml or rows keyed by UUID in a database. Common culprits include EssentialsX (user data, homes, economy), LuckPerms (permissions), Vault-backed economy plugins, land-claim plugins like GriefPrevention and Lands, and virtually every RPG or progression plugin. If you're moving player data between servers, fixing corrupted records, or importing from a backup taken under a different UUID, you need the exact offline UUID.

Online-mode → offline-mode migration

This is the most painful scenario. Switching online-mode from true to false means every player gets a new UUID on their next login. Old world data, plugin files, and database rows all sit under the Mojang UUID. The workflow is: fetch each player's Mojang UUID from the API, generate their offline UUID with this tool, then rename every file and update every database row accordingly. Skip this step and players lose all their progress.

Writing plugins and admin scripts

If your plugin needs to look up a player who has never joined (e.g. to pre-grant permissions, create a starting kit, or seed an economy balance), you can't call Bukkit.getOfflinePlayer(name) without potentially blocking the main thread. Compute the UUID yourself with the same formula, use the Java or Python output from this tool, and construct the UUID directly.

BungeeCord and Velocity networks

In a proxy network the UUID situation gets layered. If the proxy runs in offline mode, it computes the offline UUID and forwards it to all backends — the backend's own online-mode setting becomes irrelevant for UUID assignment. If the proxy is in online mode, it fetches the Mojang UUID and passes that through, regardless of backend config. Know which mode your proxy uses before relying on this tool for a network.

Common mistakes and gotchas

Wrong capitalisation

Minecraft usernames are case-sensitive in the hash. xXDragon_SlayerXx and xxdragon_slayerxx produce entirely different offline UUIDs. Check the player's profile page or their session screen to confirm the exact capitalisation — do not guess.

Using the Mojang UUID on an offline server

Fetching a UUID from api.mojang.com gives you the account's online UUID (version 4). Pasting that into ops.json on an offline server will never match — the server generates a version-3 offline UUID when the player joins and ignores the entry you added.

Spaces and special characters

Vanilla Minecraft restricts usernames to letters, digits, and underscores, but some cracked launchers let players use spaces or other characters. Those characters are included in the hash — a username of Hello World (with a space) would produce a different UUID than HelloWorld. This tool handles them correctly; just paste the username exactly as-is.

Proxy overrides the UUID

If you're running BungeeCord with ip_forward: true or Velocity with player-info-forwarding-mode = modern, the proxy sends a spoofed login packet containing whatever UUID it decided to assign. An online-mode proxy sends the Mojang UUID; an offline-mode proxy sends the offline UUID. Either way, the backend's own computation is bypassed.

Frequently asked questions

What is a Minecraft offline UUID?

A version-3 UUID generated on the server from MD5("OfflinePlayer:" + username). Servers running online-mode=false use it because they can't call Mojang's session API. The result is stable for a given username but completely unrelated to the Microsoft account UUID.

Does the UUID change when a player renames?

Yes — and this is the most common source of "where did all my player data go?" support tickets. The offline UUID is a hash of the name, so renaming from Builder123 to Builder_123 produces a completely new UUID. All stored plugin data sits under the old UUID and is effectively invisible to the server. To preserve data across a rename you must manually rename every data file.

Which server software uses this exact formula?

CraftBukkit, Spigot, Paper, Purpur, Pufferfish, Folia, and virtually every other Bukkit fork all call the same Java method. Vanilla Minecraft in offline mode follows the same convention. BungeeCord and Velocity also use this formula when they run in offline mode — but if those proxies are online-mode, they forward the Mojang UUID to backends instead.

Is the offline UUID case-sensitive?

Yes, entirely. The MD5 is computed on the raw UTF-8 bytes of the username, and lowercase and uppercase letters have different byte values. Always match the capitalisation the player uses in their client — that is the string the server hashes.

How do I get the offline UUID for LuckPerms?

On an offline-mode server LuckPerms automatically uses the offline UUID the moment a player first connects. If you are pre-importing permissions or writing a migration script, enter the username here, copy the plain-text UUID, and use it as the player identifier in the LuckPerms API or database. You can also use /lp user <username> info in-game to confirm the UUID LuckPerms is actually using.

Why does my offline UUID not match the one in the server's playerdata folder?

Three likely causes: (1) wrong capitalisation in the username you entered; (2) your server runs behind an online-mode proxy which forwarded a Mojang UUID; or (3) a plugin or mod on your server overrides UUID assignment. Double-check the server log line that reads UUID of player X is Y — that is the definitive UUID the server assigned during that session.

Is this tool safe — does it send my usernames anywhere?

No. The MD5 computation runs entirely in your browser using JavaScript. No username, no UUID, and no other data leaves your device. You can disconnect from the internet and the tool still works.

Where can I find offline-mode Minecraft servers to run or join?

Browse thousands of Java and Bedrock server listings — including many that run offline or cracked-friendly configurations — on the MinecraftServer.Buzz server list. You can also explore servers visually with the Server Cloud or check Minecraft service status if you're having trouble connecting.