Skip to content

UUID / ULID Generator · Utilities

Generate UUIDs and ULIDs, then inspect them.

Batch out cryptographically random v4 UUIDs, the nil UUID or sortable ULIDs, copy any row, then decode a value’s version, variant and embedded timestamp — all client-side in your browser. Free, no signup, and nothing ever leaves your device.

Runs in your browser — nothing you paste leaves this page. How we prove that

Runs in your browser Crypto-random v4 No signup Updated Jul 29, 2026

UUID and ULID generator playground

Examples
Options
Generated

Pick a type and press Generate — or tap an example — to produce identifiers here.

Paste any UUID or ULID to decode its version, variant and embedded timestamp.

Results update as you type — press Enter to run now.

Every value is generated in your browser — nothing is uploaded.

The Gap

The wrong random source, a duplicate key.

Generating an identifier looks like a one-liner until the details bite. Reach for Math.random() and you get values that look like UUIDs but lack real entropy; hand-roll a ULID and it is easy to botch the Crockford alphabet or overflow the 48-bit timestamp so it no longer sorts.

This generator uses the browser’s cryptographic random source for v4 UUIDs and encodes ULIDs exactly to spec, so every value is well-formed and unique. Need to check what someone handed you? Paste it into Inspect and read back its version, variant and — for a ULID — the timestamp baked into its first 48 bits.

And don’t ask an AI to “generate a random UUID”: a language model predicts plausible-looking text, not cryptographically random bits, so its output can repeat and is never safe as a unique key. This tool draws real entropy from your browser, in your tab, with nothing uploaded.

Working with a signed token instead? The JWT Decoder splits and decodes a JWT for you.

The Pipeline

How it works.

Four deterministic steps — all inside your browser tab, drawing real entropy from the platform crypto source.

  1. Pick a type.

    Choose v4 UUID for a random key, ULID for a time-sortable one, or the nil UUID placeholder — the segment sets the format.

  2. Draw the bits.

    v4 pulls 122 random bits from the browser’s crypto source; a ULID stamps a 48-bit millisecond time then appends 80 random bits.

  3. Encode and format.

    Bytes are laid out as 8-4-4-4-12 hex for UUIDs or 26 Crockford base32 characters for ULIDs, honouring the uppercase toggle.

  4. Generate or inspect.

    Emit a batch and copy any row — or paste an identifier into Inspect to decode its version, variant and embedded timestamp.

Format Reference

UUID versions & ULID structure.

A UUID encodes its version and variant in fixed positions; a ULID splits its 128 bits into a sortable timestamp and randomness. Here is where each piece lives.

UUID version & variant

The version lives in nibble 13 and the variant in the top bits of nibble 17.

uuid-layout
f47ac10b-58cc-4372-a567-0e02b2c3d479
                  ^         ^
                  |         └─ variant (top bits of nibble 17)
                  └─────────── version (nibble 13)

version  meaning
1        time + node (MAC)
3        name-based, MD5
4        random               ← generated here
5        name-based, SHA-1
7        time-ordered (Unix ms)

variant bits   name
10x            RFC 4122 (standard)
110x           Microsoft (reserved)
0xx            NCS (legacy)

ULID structure

Ten Crockford base32 chars of timestamp, then sixteen of randomness — sortable as plain text.

ulid-structure
01ARYZ6S41 TSV4RRFFQ69G5FAV        (26 chars)
└───┬────┘ └──────┬────────┘
 48-bit ms      80-bit
 timestamp     randomness

· Crockford base32: 0-9 A-Z minus I L O U
· first 10 chars decode to a Unix ms time
· sorts chronologically as plain text
· 1 char of the time field carries only 3 bits,
  so a valid ULID's first char is <= '7'

Next Step

Need a fingerprint, not an ID? Hash it.

A UUID is a unique label; a hash is a deterministic digest of some content. The Hash Generator computes SHA-256 and friends in your browser, or, if you are holding a token instead of an ID, the JWT Decoder reads its claims.

identifiers.txt
v4 UUID  f47ac10b-58cc-4372-a567-0e02b2c3d479
ULID     01ARYZ6S41TSV4RRFFQ69G5FAV
nil      00000000-0000-0000-0000-000000000000

FAQ

Questions, answered.

Tap a question to expand the answer.

A UUID (Universally Unique Identifier) is a 128-bit value written as 32 hexadecimal digits in the 8-4-4-4-12 grouping, e.g. f47ac10b-58cc-4372-a567-0e02b2c3d479. Its size makes accidental collisions astronomically unlikely, so systems can mint identifiers independently — with no central coordinator — and still be confident they are unique. This tool generates version 4 (random) UUIDs, the standard choice when you just need a unique key.

A v4 UUID has 122 random bits (six bits are fixed to encode the version and variant). It is generated here with the browser’s cryptographic random source — crypto.randomUUID() when available, otherwise crypto.getRandomValues() — not Math.random(). With 122 bits of entropy you would need to generate billions of UUIDs before the chance of a single collision became meaningful.

A ULID (Universally Unique Lexicographically Sortable Identifier) is a 128-bit value encoded as 26 Crockford base32 characters. Its first 48 bits are a millisecond timestamp and the remaining 80 bits are random, so ULIDs sort chronologically as plain strings and stay unique. UUIDs are the interoperable standard; ULIDs trade a little standardisation for sortability and a shorter, URL-friendly encoding.

The nil UUID is the special all-zero value 00000000-0000-0000-0000-000000000000. It is defined by the spec as a placeholder — a UUID that is explicitly “none” — often used to represent an absent or not-yet-assigned identifier. Select “Nil UUID” to emit it.

For practical purposes, yes. Version 4 UUIDs draw on a cryptographic random source, and the probability of a collision is negligible for any realistic volume. They are not secret, though: a UUID is an identifier, not a token or a password. Never rely on one being unguessable for security.

Yes. Set the count (1–1000) and press Generate to produce a batch, then use “Copy all” to copy every value on its own line. Bulk generation is handy for seeding a database, building test fixtures or pre-allocating keys.

Paste any UUID or ULID into the Inspect field and it decodes what the value encodes: for a UUID, its version (the 13th nibble) and variant (RFC 4122, Microsoft or NCS); for a ULID, the embedded millisecond timestamp shown as an ISO-8601 date plus the Unix time and the random component. It is a quick way to confirm which flavour of identifier you were handed.

No. Every value is generated and every identifier is decoded entirely client-side in your tab — there is no server, no account and no logging. You can safely generate keys for private systems; nothing is uploaded.

More free, private DevOps tools.

The UUID / ULID Generator is one tool in OpsCanopy — a growing canopy of browser-based validators, converters and generators that never touch a server.

39 free tools, every one offline-capable — opscanopy.com works with no signup and nothing uploaded.

Related tools: the JWT Decoder and the Hash Generator, or browse the full tools directory.

Provided as-is for convenience; a UUID or ULID is an identifier, not a secret — never rely on one being unguessable for security. OpsCanopy is free and open.