UUID / ULID Generator
Generate UUID v4 (random), UUID v7 (time-ordered) or ULID, one or many at once, using crypto.getRandomValues. Fully local, no Math.random.
Generated identifiers
How they are generated
UUID v4 16 bytes from crypto.getRandomValues. Version
4 is set in the high nibble of byte 6 and the RFC 4122 variant (10xx)
in the two high bits of byte 8. That leaves 122 random bits, formatted 8-4-4-4-12.
UUID v7 the first 48 bits are the Unix timestamp in milliseconds
(big-endian), then version 7, variant and 74 random bits. It is
time-ordered: two v7 values in a row compare as increasing.
ULID 26 characters in Crockford base32: 48 bits of time (10 chars) + 80 random bits (16 chars). Lexicographically sortable by its time prefix.
All randomness comes from the browser's CSPRNG. Math.random is never used
and nothing leaves your machine.
Identifiers are generated entirely in your browser. Nothing is downloaded or queried online.
Runs locally in your browser · no sign-up · nothing leaves your browser
How it works
The generator creates unique identifiers of three kinds, one at a time or in batches of up to 100: UUID v4 (16 random bytes with the version and variant bits set per RFC 4122, leaving 122 bits of randomness), UUID v7 (the first 48 bits are the Unix timestamp in milliseconds and the remaining 74 bits are random, per RFC 9562, making it time-sortable) and ULID (26 characters in Crockford base32: 48 bits of time plus 80 random bits, lexicographically sortable).
All randomness comes from crypto.getRandomValues, the browser CSPRNG; Math.random is never used, since it is not suitable for identifiers with security value. You can adjust the output format (uppercase, wrapped in braces {…}, or dash-free for UUIDs) and copy each identifier or the whole batch. In v7 and ULID batches each element adds 1 ms to the base instant, so they stay strictly increasing even when generated within the same millisecond.
Use case: primary keys that do not fragment the index
- Generate a UUID v7: for example
0190c2f3-…-7…. Its first 48 bits encode the creation instant. - When inserted as a primary key, new records always land at the end of the B-tree index, avoiding the fragmentation that random v4 keys cause.
- If you prefer a shorter, URL-friendly identifier, use ULID: 26 characters with no dashes, sortable just like v7.