UUID / ULID Generator: Generate UUIDs and ULIDs, then inspect them.
Runs in your browser — nothing you paste leaves this page. How we prove that
UUID and ULID generator playground
UUID v4 and ULID values are minted in your browser from a secure random source — press Generate for a fresh batch.
Paste any UUID or ULID to decode its version, variant and embedded timestamp.
Results update as you type — press Enter to run now.
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.
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.
-
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.
-
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.
-
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.
-
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.
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.
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.
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.
What is a UUID?
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.
What is a version 4 UUID and how random is it?
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.
What is a ULID and how is it different from a UUID?
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.
What is the nil UUID?
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.
Are these UUIDs safe to use — are they really unique?
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.
Can I generate UUIDs or ULIDs in bulk?
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.
What does the inspector tell me about an identifier?
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.
Does anything leave my browser?
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.
What is the difference between UUID v4 and v5?
A v4 UUID is random: 122 bits from a cryptographic random source, so every call produces a new identifier. A v5 UUID is name-based: it is derived from the SHA-1 hash of a namespace UUID plus a name, so the same namespace and name always yield the same UUID, which suits stable IDs for things such as URLs. This tool generates v4 UUIDs (plus the nil UUID and ULIDs), not v5; for v5 use a library such as Python's uuid.uuid5(). The inspector still reads a pasted v5 UUID and reports its version.
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.
More in Utilities
42 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.