UUID v7 Timestamp Decoder

Extract the millisecond timestamp embedded in the first 48 bits of a UUID v7, converting it back to a UTC date and time by simply pasting the string. Detects non-v7 versions and variant anomalies, and works as the reverse of the sibling UUID v7 Generator tool.

UUID v7 bit layout

Bit range Field Description
0-47 unix_ts_ms Milliseconds since the Unix epoch, stored big-endian. The value this tool extracts.
48-51 version The UUID version number. Fixed to 0111 (7 in hex) for v7.
52-63 rand_a 12 bits of random data. Some implementations use it to preserve ordering within the same millisecond.
64-65 variant Fixed value 10 indicating the RFC 4122/9562 variant. The first hex digit becomes 8/9/a/b.
66-127 rand_b 62 bits of random data, providing entropy to avoid collisions.

Tips

  • All decoding happens entirely inside your browser's JavaScript — the UUID you enter is never sent to the toolbase.cc server.
  • If your database primary key uses UUID v7, you can recover the record's creation time by simply pasting the key here, even without a dedicated created_at column.
  • Entering a non-v7 UUID (such as v4) triggers a warning, but the mechanically extracted reference value from the first 48 bits is still shown, which is useful for learning how the formats differ.
  • If you need to generate a UUID, use the sibling "UUID v7 Generator" tool — it produces UUIDs that this tool can decode back directly.
  • Pasting UUID v7 values found in log files or API responses one at a time is a handy way to estimate when events occurred in an external system during debugging.

Frequently Asked Questions

UUID v7 is standardized in RFC 9562, and a millisecond-precision Unix timestamp is fixed in big-endian order within the first 48 of its 128 bits. Simply converting the first 12 hex digits to a number and interpreting it as milliseconds recovers the generation time.

Since UUID v4 is entirely random, the "timestamp" extracted from it is a meaningless number unrelated to any actual creation time. This tool inspects the version digit and shows a warning, but it still displays the mechanically extracted value from the first 48 bits for reference.

Per the UUID v7 specification, the precision is one millisecond. If multiple UUID v7 values are generated within the same millisecond, the first 48 bits are identical, and their generation order cannot be recovered — that distinction is left entirely to the random rand_a and rand_b values.

RFC 4122/9562-compliant UUIDs require the first hex digit of the 4th group to be 8, 9, a, or b. If it is any other value (0-7 or c-f), it may indicate a custom ID generation scheme or corrupted bits, so a warning is shown.
ツールくん

Side Note — Giving UUIDs a built-in clock

What makes UUID v7 groundbreaking is that the identifier itself permanently carries its generation time. With the older UUID v4, a separate created_at column was essential to know when a record was made, but if a table's primary key uses UUID v7, the generation time can be mechanically recovered from the ID string alone. This tool provides that recovery process as the reverse of the sibling UUID v7 Generator tool.

This property is especially useful during incident investigations and data migrations. If an order ID buried in an old log, or an event ID received from an external system, happens to be in UUID v7 format, you can instantly tell roughly when the record was created without consulting a dedicated timestamp column. This also applies to legacy systems missing a created_at column, or to analyzing UUID v7 values issued by another company.

That said, there are caveats. A UUID v7 timestamp depends entirely on the generating machine's clock, so if that server's clock is off, the extracted result will be off too. Also, keep in mind that this tool mechanically extracts a "would-be timestamp" even from other UUID versions like v4 — that is purely an interpretation of bit positions, and does not guarantee the resulting value is meaningful.

→ Browse all trivia