UUID & ULID Decoder - Find the Version, Variant and Timestamp
UUID & ULID Decoder
Read the version, variant and timestamp hidden inside an identifier
Versions 1 to 8
Recognizes time-based, DCE, name-based, random, reordered-time, Unix-time and custom UUIDs, plus the nil and max UUIDs.
Hidden Timestamps
Version 1, 6 and 7 UUIDs and ULIDs contain the moment they were created. See it in UTC, in your local time and as Unix milliseconds.
UUID and ULID Forms
Every identifier is shown both as a UUID and as the 26-character ULID with the same 128 bits.
Private
Identifiers are decoded in your browser and are never sent anywhere.
What Is Inside an Identifier
A UUID is 128 bits, and a few of them are fixed. Four bits say which version it is and two or three bits say which variant (layout family) it follows. The rest depend on the version: version 4 is almost entirely random, versions 3 and 5 are hashes of a name, and versions 1, 6 and 7 start with a timestamp. That is why IDs created close together often share their first characters, and why version 7 IDs sort in the order they were made.
A ULID is a different format with the same size: a 48-bit millisecond timestamp followed by 80 random bits, written in 26 characters of Crockford base32. Because both are 128 bits, one can be shown in the other’s notation. A time-based ID reveals when it was created, and a version 1 node field may reveal a hardware address, so think before exposing such IDs publicly.
Key Takeaways
- Checked against reference libraries: Results were compared with Python’s uuid module and a ULID library on hundreds of identifiers.
- Accepts common spellings: Hyphens are optional, and braces and urn:uuid: prefixes are removed.
- Related tools: Use the UUID Generator to create new identifiers.