Developer tools

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.

UUID and ULID inspector
Esc to restore

Your inputs

A UUID with or without hyphens, in braces or as urn:uuid:…, as Base64 of its 16 bytes, or a 26-character ULID.

Results update as you type. Larger files run when you press Update result.

Your result

Your result will appear here.

More actions

Your inputs stay in this browser. Nothing is uploaded, and nothing is saved unless you choose “Save result”.

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
  1. 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
  2. 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
  3. 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
  4. 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
  5. 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

First 5 rows of the example result
FieldValueMeaning
Canonical formc232ab00-9414-11ec-b3c8-9f6bdeced846RFC 9562 section 4: lower-case hex with hyphens
VariantRFC 9562 / OSF DCE variant (10x)Bits 64 to 66: 101
Version1 – Gregorian time-based (RFC 9562 section 5.1)Bits 48 to 51
Timestamp (60 bits)0x1EC9414C232AB00 = 138648505420000000100 ns intervals since 1582-10-15 00:00:00 UTC
Time (UTC)2022-02-22T19:22:22.0000000ZTimestamp − 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.