UUID v1, v7 & ULID Timestamp Converter. Extract Creation Time
UUID v1, UUID v7, and ULID all embed a millisecond timestamp in their first bits. Paste any of the three and this tool pulls out the exact creation instant, no database, no API, just bit arithmetic.
UUID v1, v7 & ULID → timestamps.
Extract the embedded creation time from time-ordered IDs (and mint new ones from a date. No lookups: the time is right inside the bits.
Where the timestamp lives in each format
-
UUID v1, a 60-bit timestamp of 100-nanosecond intervals since
the Gregorian reform (1582-10-15), split across the first three groups:
time_low(8 hex),time_mid(4), and the low 12 bits oftime_hi_and_version. The version nibble is1. -
UUID v7, a 48-bit Unix timestamp in milliseconds occupying the
first 12 hex characters; the version nibble is
7. Same epoch asDate.now(), which makes it the modern default for new systems. - ULID. 48 bits of millisecond time in the first 10 Crockford base-32 characters, followed by 80 bits of randomness. ULIDs sort correctly by creation time and are case-insensitive.
ULIDs, v7s, and v1s, decoded by hand
-
01KZCRA000…(a ULID), the first 10 Crockford base-32 chars encode the millisecond time; this one decodes to Aug 7, 2026 00:00:00 UTC (Unix ms1786060800000), with the remaining 80 bits random. -
019fd985-0000-7000-8000-000000000000(a UUID v7), the first 12 hex characters019fd9850000are the big-endian Unix ms field, which is also Aug 7, 2026 00:00:00 UTC; the7nibble is the version. -
66507D30-9261-11F1-a111-446655440000, a real v1: version nibble1means the first three groups are Gregorian time. It decodes to Aug 7, 2026 13:10:45.123 UTC — note v1 stores the pieces little-endian (time_lowfirst), which is why the groups look scrambled.
Extracting the time field in your own code
- ULID time: parse the first 10 chars as base-32.
BigIntrecommended in JS. - UUID v7 time:
BigInt('0x' + id.replace(/-/g, '').slice(0, 12))→ milliseconds. - UUID v1 time:
(time_hi << 48 | time_mid << 32 | time_low) - 122192928000000000n, then divide by 10,000 for ms.
Gotchas: two epochs, random v4s, and base-32 vs hex
- Gregorian vs Unix, v1 counts from 1582, so you must subtract the 122,192,928,000,000,000-tick offset before dividing to milliseconds. This converter does that step for you.
-
v4 has no time, random UUIDs (version
4) carry no timestamp at all. The tool only accepts v1 and v7, and says so. - ULID vs UUID, both are 128 bits but ULIDs are base-32 (Crockford) text, not hex. If you paste a ULID into a UUID parser it fails; the converter auto-detects by shape.
First published · Last reviewed · Maintained and developed by the Real Epoch Converter team · Email · Contact · Methodology
Sortable IDs and the time inside them
UUIDs and ULIDs carry timestamps differently — related formats and the deep dive: