redzilla
All tools
Security

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.

Identifier type

Random, no time ordering. Version 4, RFC 4122 variant.

1 100 identifiers
Format
redzilla.cl — uuid
 
Type UUID v4
Random bits 122
Length 36

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

    1. Generate a UUID v7: for example 0190c2f3-…-7…. Its first 48 bits encode the creation instant.
    2. 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.
    3. If you prefer a shorter, URL-friendly identifier, use ULID: 26 characters with no dashes, sortable just like v7.

    Frequently asked questions

    What is the difference between UUID v4 and UUID v7?
    v4 is 100% random (122 bits), with no relation to time: ideal when you do not want to leak when a record was created. v7 devotes its first 48 bits to the Unix timestamp in milliseconds and leaves 74 random bits: two v7 values generated in sequence compare in increasing order, which improves database index performance. v7 was standardized in RFC 9562 (2024).
    Can two UUID v4 values collide?
    In theory yes, in practice no: with 122 random bits, the collision probability after generating a billion UUIDs per second for a century is still negligible. By the birthday paradox, you would need about 2⁶¹ (over 2 quintillion) UUIDs to reach a 50% chance of a single collision.
    What advantage does a ULID have over a UUID?
    It is more compact (26 characters versus 36), has no dashes, is URL-safe and sorts lexicographically by its time prefix: sorting ULIDs as text is the same as sorting them by creation date. Its Crockford base32 alphabet excludes I, L, O and U to avoid misreadings. In exchange, UUID is the format with native support in most databases.
    Is it safe to generate identifiers here? Are they sent to a server?
    Nothing is sent: the identifiers are generated entirely in your browser using the system cryptographic generator (crypto.getRandomValues), with no network calls. You can use them in production with the same confidence as identifiers generated by your backend.
    Was this tool useful?
    Disclaimer We take great care to keep every tool accurate and review it thoroughly; even so, we can't guarantee it is free of errors or take responsibility for how the results are used. We recommend double-checking anything critical.
    Found an error? Let us know →