Real Epoch Converter logo realepochconverter
uuid / ulid converter

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.

converter

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 of time_hi_and_version. The version nibble is 1.
  • UUID v7, a 48-bit Unix timestamp in milliseconds occupying the first 12 hex characters; the version nibble is 7. Same epoch as Date.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 ms 1786060800000), with the remaining 80 bits random.
  • 019fd985-0000-7000-8000-000000000000 (a UUID v7), the first 12 hex characters 019fd9850000 are the big-endian Unix ms field, which is also Aug 7, 2026 00:00:00 UTC; the 7 nibble is the version.
  • 66507D30-9261-11F1-a111-446655440000, a real v1: version nibble 1 means 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_low first), 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. BigInt recommended 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

Copied