Skip to content
mc-api.io

Minecraft UUID lookup

Resolve a username to its UUID, turn a UUID back into a name, or find the XUID behind a Bedrock gamertag. Paste any identifier - the tool works out which one it is.

Names, dashed or plain UUIDs and Bedrock XUIDs all work.

Edition
Try

What a Minecraft UUID actually is

A UUID is the 128-bit identifier Mojang assigns to an account when it is created. It is written either with dashes (069a79f4-44e9-4726-a5be-fca90e38aaf5) or without (069a79f444e94726a5befca90e38aaf5); both mean the same value, and this API accepts either form.

The important property is that a UUID is permanent. A player can change their name, and someone else can later claim the name they gave up - so any plugin, database or Discord bot that keys player data by name will eventually attach data to the wrong person. Store the UUID and resolve the name for display.

Bedrock accounts: XUID and the derived UUID

Bedrock players sign in with an Xbox Live account, which has no Mojang UUID. What it has is an XUID: a 64-bit integer such as 2535439361006376. To keep both editions usable through the same routes, the API also derives a UUID from that XUID, which is why every Bedrock UUID starts with a long run of zeros.

Practically: pass BEDROCK as the edition when you look a gamertag up by name, and use either the XUID or the derived UUID everywhere else. Gamertags may contain spaces, so URL-encode them.

The endpoints behind this tool

The lookup above is a single GET request. Here is the same call in four languages, resolving a name and edition to a UUID.

curl -s "https://mc-api.io/uuid/ByteException_/JAVA"
const response = await fetch("https://mc-api.io/uuid/ByteException_/JAVA");
if (!response.ok) {  const { message } = await response.json();  throw new Error(message);}
const uuid = await response.json();console.log(uuid);
import requests
response = requests.get("https://mc-api.io/uuid/ByteException_/JAVA", timeout=10)response.raise_for_status()
uuid = response.json()print(uuid)
HttpClient client = HttpClient.newHttpClient();HttpRequest request = HttpRequest.newBuilder(URI.create("https://mc-api.io/uuid/ByteException_/JAVA")).build();
HttpResponse<String> response = client.sendAsync(request, BodyHandlers.ofString()).join();System.out.println(response.body());

The full parameter and response reference lives in the UUID endpoint documentation, alongside the name and profile endpoints.

Frequently asked questions

Still stuck? The endpoint reference documents every parameter and status code.

How do I convert a Minecraft username to a UUID?

Type the name above, or call GET /uuid/{name}/{edition} on the API. The response contains the UUID and, for Bedrock accounts, the XUID it was derived from.

Can I look up a username from a UUID?

Yes. GET /name/{uuid} returns the current name for a Java or Bedrock UUID, and GET /name/{xuid} does the same for an XUID.

Do UUIDs need dashes?

No. Both the dashed 36 character form and the plain 32 character form are accepted on every endpoint that takes a UUID, and the tool above shows you both so you can copy whichever your code expects.

Why does a Bedrock UUID start with so many zeros?

Bedrock accounts have no Mojang UUID. The API derives one from the 64-bit XUID by padding it into UUID form, which is why the leading half is always zeros - a reliable way to tell a Bedrock UUID from a Java one.

Does the UUID change when a player renames?

No. The UUID stays with the account for its lifetime, which is exactly why you should store the UUID rather than the name. Names can be released and claimed by someone else.