UUID and ULID inspector
Decode a UUID of any version or a ULID: version, variant, embedded timestamp in UTC, clock sequence, node and every common spelling.
A clear answer. Here’s how.
Reads the 128 bits and applies RFC 9562 (2024, which replaces RFC 4122). The variant comes from bits 64 to 66 (10x is the RFC variant) and the version from bits 48 to 51. Versions 1 and 6 hold a 60-bit count of 100-nanosecond intervals since 1582-10-15 00:00:00 UTC (the Gregorian reform), stored low-mid-high in v1 (section 5.1) and high-mid-low in v6 (section 5.6), plus a 14-bit clock sequence and a 48-bit node; a node with the multicast bit (the lowest bit of its first octet) set is random (section 6.10), otherwise it is probably a network card’s MAC address. Version 7 holds Unix milliseconds in its first 48 bits (section 5.7). Versions 3, 4, 5 and 8 carry hashes, random bits or vendor data, so no time can be read from them; the nil and max UUIDs are recognised (sections 5.9 and 5.10). A ULID (github.com/ulid/spec) is 26 Crockford Base32 characters: 48 bits of Unix milliseconds then 80 random bits; values above 7ZZZZZZZZZZZZZZZZZZZZZZZZZ are refused as overflows. The page shows hyphenated, braced, URN, hex, Base64, integer and binary forms. It does not create identifiers and cannot tell whether one was generated correctly or recover the name behind a v3 or v5 UUID.
How this is checked
5 reference checks passed These 5 cases were run when this page was built, on 20 October 2026, and all reproduce within the stated tolerance. The same cases are part of the automated tests that run on every change to Toolmoz. Engine version 1.
See the checks and where each expected answer comes from
Case 1
- Inputs
- UUID or ULID C232AB00-9414-11EC-B3C8-9F6BDECED846
- Expected, and what Toolmoz gave
- Version expected 1, Toolmoz 1Time (UTC) expected 2022-02-22T19:22:22.0000000Z, Toolmoz 2022-02-22T19:22:22.0000000ZClock sequence expected 13256, Toolmoz 13256Node expected 9f:6b:de:ce:d8:46, Toolmoz 9f:6b:de:ce:d8:46Node type expected Random (multicast bit set), Toolmoz Random (multicast bit set)
- Where the expected answer comes from
- RFC 9562 appendix A.1: timestamp 0x1EC9414C232AB00 is Tuesday 22 February 2022 2:22:22 PM GMT−05:00 (19:22:22 UTC); clock_seq 0b11 then 0x3C8 = 0x33C8 = 13256; node 0x9F6BDECED846 with its multicast bit set
- Allowed difference
- exact
Case 2
- Inputs
- UUID or ULID 1EC9414C-232A-6B00-B3C8-9F6BDECED846
- Expected, and what Toolmoz gave
- Version expected 6, Toolmoz 6Time (UTC) expected 2022-02-22T19:22:22.0000000Z, Toolmoz 2022-02-22T19:22:22.0000000ZClock sequence expected 13256, Toolmoz 13256
- Where the expected answer comes from
- RFC 9562 appendix A.5: the same 60-bit timestamp as A.1, stored high bits first
- Allowed difference
- exact
Case 3
- Inputs
- UUID or ULID 017F22E2-79B0-7CC3-98C4-DC0C0C07398F
- Expected, and what Toolmoz gave
- Version expected 7, Toolmoz 7Unix time (ms) expected 1645557742000, Toolmoz 1645557742000Time (UTC) expected 2022-02-22T19:22:22.000Z, Toolmoz 2022-02-22T19:22:22.000Z
- Where the expected answer comes from
- RFC 9562 appendix A.6: unix_ts_ms 0x017F22E279B0 = 1645557742000, Tuesday 22 February 2022 2:22:22.00 PM GMT−05:00
- Allowed difference
- exact
Case 4
- Inputs
- UUID or ULID 01ARYZ6S41TSV4RRFFQ69G5FAV
- Expected, and what Toolmoz gave
- Kind expected ULID, Toolmoz ULIDUnix time (ms) expected 1469918176385, Toolmoz 1469918176385Time (UTC) expected 2016-07-30T22:36:16.385Z, Toolmoz 2016-07-30T22:36:16.385Z
- Where the expected answer comes from
- ulid/javascript README: decodeTime("01ARYZ6S41TSV4RRFFQ69G5FAV") = 1469918176385; CPython datetime.fromtimestamp(1469918176.385, UTC) = 2016-07-30 22:36:16.385
- Allowed difference
- exact
Case 5
- Inputs
- UUID or ULID 00000000-0000-0000-0000-000000000000
- Expected, and what Toolmoz gave
- Variant expected Nil UUID (RFC 9562 section 5.9), Toolmoz Nil UUID (RFC 9562 section 5.9)
- Where the expected answer comes from
- RFC 9562 section 5.9: the Nil UUID has all 128 bits set to zero
- Allowed difference
- exact
What this shows: the engine reproduces independently worked values for these cases. It does not prove every possible input is right. To test an answer you were given, see how to check a number; to see what is and is not checked across Toolmoz, see the accuracy ledger.
See a worked example
Worked example
A fixed demonstration, separate from the values you enter above.
- UUID or ULID
- C232AB00-9414-11EC-B3C8-9F6BDECED846
Example result
| Field | Value | Meaning |
|---|---|---|
| Canonical form | c232ab00-9414-11ec-b3c8-9f6bdeced846 | RFC 9562 section 4: lower-case hex with hyphens |
| Variant | RFC 9562 / OSF DCE variant (10x) | Bits 64 to 66: 101 |
| Version | 1 – Gregorian time-based (RFC 9562 section 5.1) | Bits 48 to 51 |
| Timestamp (60 bits) | 0x1EC9414C232AB00 = 138648505420000000 | 100 ns intervals since 1582-10-15 00:00:00 UTC |
| Time (UTC) | 2022-02-22T19:22:22.0000000Z | Timestamp − 122192928000000000, divided by 10,000,000 |
This page reads identifiers; it never creates them. Times are UTC. v1 and v6 count 100-nanosecond intervals from 1582-10-15, v7 and ULID count milliseconds from 1970-01-01. A time inside an identifier is whatever the generator’s clock said and proves nothing about when the data was made.