UUID & GUID Generator

Free UUID and GUID generator: bulk v1, v3, v4, v5, v6, v7, ULID and NanoID, sortable batches, every written form — plus a decoder that reads any UUID.

Quick presets

122 random bits. The default choice when you just need a unique ID.

Written form
Wrapping
Preview019a0c2e-7d51-7b8e-9f42-6ac3d0b81e77

Every UUID version RFC 9562 defines

RFC 9562 Table 2. Versions 2 and 8 are reserved and have no generation procedure, so no general-purpose tool can produce them; every other row is generated above.

VersionBuilt fromSorts by timeUse it for
UUIDv160-bit 100-ns timestamp + clock sequence + nodeNo — timestamp is splitLegacy systems already using it
UUIDv2Reserved for DCE SecurityNot specifiedNot defined in RFC 9562
UUIDv3MD5 of namespace + nameNo — hash outputLegacy name-based IDs; prefer v5
UUIDv4122 random bitsNo — fully randomGeneral-purpose unique IDs
UUIDv5SHA-1 of namespace + nameNo — hash outputA stable ID derived from a name
UUIDv6v1 fields with the timestamp reorderedYesSortable replacement inside a v1 system
UUIDv748-bit Unix ms + 74 random bitsYesDatabase primary keys
UUIDv8Reserved for custom formatsDefined by the implementerVendor-specific layouts
Nil UUIDAll 128 bits zeroConstantA placeholder meaning "no ID"
Max UUIDAll 128 bits oneConstantA sentinel above every other UUID

The written forms of one UUID

The same 128 bits in five written forms. All five decode back to the same UUID, and this page accepts every one of them.

FormExampleCharsUsed for
Canonical019a0c2e-7d51-7b8e-9f42-6ac3d0b81e7736The RFC 9562 canonical form — the default everywhere
No hyphens019a0c2e7d517b8e9f426ac3d0b81e7732Compact storage, URL paths, filenames
Uppercase019A0C2E-7D51-7B8E-9F42-6AC3D0B81E7736Microsoft tooling and registry keys
Braces (GUID){019A0C2E-7D51-7B8E-9F42-6AC3D0B81E77}38The Windows GUID registry format
URNurn:uuid:019a0c2e-7d51-7b8e-9f42-6ac3d0b81e7745The URN namespace registered in RFC 9562 §4

UUID, ULID or NanoID

All four are URL-safe. The scheme selected above carries 122 random bits; a time-based scheme spends part of its 128 bits on the timestamp, which is what buys the sort order.

SchemeLengthRandomnessSorts by time
UUIDv436 (32 hex digits)122 bitsNo
UUIDv736 (32 hex digits)74 bits per millisecondYes
ULID26 (Crockford base32)80 bits per millisecondYes
NanoID (21)21126 bitsNo
Did this calculator solve your problem today?

Contributor

Reviewed by

Generate UUIDs, GUIDs, ULIDs and NanoIDs

Create identifiers in one click — UUID v4 (random), v7 and v6 (time-ordered), v1, name-based v3 and v5, the Nil and Max UUIDs, plus ULID and NanoID. Generate up to 1,000 at a time, copy or download them, switch between all five written forms including the braced uppercase GUID Windows uses, and paste any UUID into the decoder to read its version, variant and timestamp. Everything runs in your browser with a cryptographically secure random source, and nothing is sent anywhere.

What Is a UUID?

A UUID — universally unique identifier — is a 128-bit value written as 32 hexadecimal digits in five hyphen-separated groups of 8-4-4-4-12. GUID, globally unique identifier, is Microsoft's name for exactly the same thing; the only difference you will see in practice is that Windows tooling writes it in uppercase inside braces. Six of the 128 bits are spoken for: four say which version generated the UUID, and two identify the variant. What fills the remaining 122 depends on the version. A v4 fills them with random data. A v7 puts a 48-bit Unix millisecond timestamp first, so v7 values sort by creation time. A v6 does the same job for systems already built on v1, by reordering the v1 timestamp so its most significant bits come first. A v3 or v5 fills them with a hash of a namespace and a name, which makes the result deterministic: the same two inputs always give the same UUID. ULID and NanoID are not UUIDs at all — ULID packs a timestamp and 80 random bits into 26 sortable characters, and NanoID is a plain random token of whatever length you choose.

Structure

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (M = version, N = variant)

How to Use It

1

Pick a preset, or choose an ID type — v4 if you just need a unique value, v7 if it will be a database key.

2

Set how many you want, up to 1,000.

3

For v3 or v5, choose a namespace — or paste your own UUID as one — and type the name to derive the ID from.

4

For NanoID, set the length. Shorter is prettier in a URL and weaker against collisions; the figures below the results say by how much.

5

Choose the written form. Uppercase plus braces gives you the Windows GUID form; turning hyphens off gives the 32-character form.

6

Press Generate, then copy one, copy them all, or download the batch as a text file.

7

To inspect an existing identifier, switch to Decode and paste it in.

Common Uses

Database primary keys

A v7 key keeps the index appending at one end instead of scattering writes across it the way v4 does, which is the main practical cost of random keys.

Seeding test data

Generate a batch, download the text file, and load it into fixtures or a migration.

Windows and .NET GUIDs

Registry keys, COM class IDs and .NET attributes want the uppercase braced form, which the GUID preset produces directly.

Stable IDs from URLs or emails

A v5 UUID of a namespace and a name is reproducible, so two systems that never talk to each other can derive the same identifier for the same thing.

Short public identifiers

A 12-character NanoID fits in a URL where a 36-character UUID does not; the table shows what that costs in randomness.

Reading an unknown identifier

A UUID in a log tells you more than it looks: the decoder recovers when a v1, v6 or v7 was created, down to the millisecond.

Why Use This UUID Generator?

Batches that really are ordered

Most generators draw each v7 independently, so a batch created inside one millisecond shares a timestamp and ends up in random order — which defeats the reason to choose v7. Here the bits after the timestamp are a randomly seeded counter that only ever advances, so 1,000 v7s generated at once come out in creation order.

Every version the RFC defines

v1, v3, v4, v5, v6 and v7, plus the Nil and Max UUIDs. Version 6 in particular is missing from most tools, and it is the one to reach for when a system is already on v1 and you need the keys to sort.

All five written forms, live

Canonical, 32 characters with the hyphens removed, uppercase, the braced Windows GUID form, and the URN form. Switch between them and the values already on screen change with you.

A decoder that says no

Paste a UUID and it reads back the version, the variant, the embedded timestamp and the byte ranges each field occupies. Paste something that only looks like an ID and it tells you why it is not one, instead of confidently labelling it.

Custom namespaces for v3 and v5

Any UUID is a legal namespace. The four in the list are the ones RFC 9562 registers, but real applications mint their own, so you can paste yours.

Private and offline

Generation and decoding both happen in your browser using the Web Crypto random source. No identifier you create or inspect leaves the page.

Frequently Asked Questions

UUID stands for universally unique identifier. It is a 128-bit number, written as 32 hexadecimal digits grouped 8-4-4-4-12, designed so that anyone can generate one at any time without coordinating with anybody else and still be confident it has never been generated before.

GUID means globally unique identifier and is Microsoft's term for a UUID. The bits are identical and the two are interchangeable. The only real difference is convention: Microsoft tooling tends to write a GUID in uppercase and wrap it in braces, as in {019A0C2E-7D51-7B8E-9F42-6AC3D0B81E77}. Switch on Uppercase and Braces above and this page produces exactly that form.

Turn the Hyphens toggle off. The hyphens carry no information at all — they are a readability convention in the canonical form — so removing them leaves the same 32 hexadecimal digits and the same 128 bits. The 32-character form is common in URLs, filenames and compact database columns, and the decoder on this page reads it back happily.

A v4 is 122 random bits and nothing else, so two v4s created a second apart have no relationship. A v7 spends the first 48 bits on a Unix millisecond timestamp and fills the remaining 74 with randomness, so v7 values sort by creation time as plain strings. That matters for database primary keys: random keys scatter inserts across a B-tree index, while time-ordered keys append. Both are 128 bits and both are effectively unique.

On this page, yes, for v6, v7 and ULID. It is worth asking, because a naive implementation fails here: a timestamp only advances every millisecond, so a batch of a thousand generated in a single millisecond shares one timestamp and is then ordered only by its random bits — which is to say, not ordered at all. RFC 9562 §6.2 addresses this directly and asks implementations to add a counter. This page uses the RFC's Monotonic Random method, where the bits after the timestamp are a randomly seeded counter advanced by a random amount for each ID in the tick.

Use v4 for a general-purpose unique value. Use v7 for anything that becomes a database primary key or a sort key. Use v6 instead of v7 when a system is already built on v1 and you need sortable keys without changing the field layout. Use v5 when the identifier has to be reproducible from a name. v1 is worth generating only for compatibility with something that already expects it, and v3 only where MD5 is already the agreed hash — v5 is the same idea with SHA-1.

Version 6 arrived with RFC 9562 in 2024 and is a version 1 with its timestamp rearranged. A v1 stores the least significant part of the timestamp first, which is why v1 values do not sort; a v6 stores the most significant part first, which is why they do. Everything else — the clock sequence, the node field, the field widths — is unchanged, so v6 drops into a system already storing v1 UUIDs. Most generators predate the RFC and simply never added it. This one generates and decodes it.

For a v4 the answer is effectively no, and the figure is derivable rather than folklore. A v4 carries 122 random bits, and the birthday bound puts even odds of a single collision at about 1.1774 × the square root of 2 to the 122nd — roughly 2.7 quintillion UUIDs. Generating a billion every second, you would reach that after about 86 years. The worked figures appear under the results for whichever scheme you pick, including shorter NanoIDs, where the number drops sharply.

The randomness comes from the Web Crypto API, which is a cryptographically secure source, not Math.random. That said, unique is not the same as unguessable, and it is the wrong question for some UUID types. A v1 or v6 exposes the moment it was created and a node value. A v7 exposes its creation millisecond by design. A v3 or v5 is a hash of inputs someone may be able to guess. If a value has to be unpredictable — a session token, a password-reset link — use v4, or a long NanoID, and never a time-based version.

Not from this page. A v1's node field was originally the machine's MAC address, which is exactly why v1 fell out of favour. RFC 9562 §6.10 allows a random node instead, and requires the least significant bit of its first byte to be set — the multicast bit, which a real network card never has — so a randomised node can never be mistaken for a real one. This page draws a random node once per visit and uses it for every v1 and v6 you generate, which is what a single machine would do.

No. RFC 9562, published in May 2024, obsoletes RFC 4122. It keeps versions 1 through 5 unchanged, adds versions 6, 7 and 8, defines the Max UUID alongside the existing Nil UUID, and gives the guidance on batch monotonicity that this page implements. Several well-known generators still describe themselves as RFC 4122 tools, which is a useful way to tell whether one has been updated since 2024.

The Nil UUID is all 128 bits zero and means "no identifier" — it is the value to store when a column needs a UUID and there genuinely is not one. The Max UUID, all 128 bits one, was added by RFC 9562 as the opposite sentinel: it sorts above every other UUID, which makes it useful as an exclusive upper bound in a range query. Neither is generated; both are constants.

A ULID is 26 characters of Crockford base32 holding a 48-bit millisecond timestamp and 80 random bits. It sorts by time like a v7 and is ten characters shorter than a UUID, at the cost of not being a UUID — anything expecting a uuid column type will reject it. A NanoID is a plain random token from a 64-symbol URL-safe alphabet, with the length up to you; the default 21 characters carry 126 bits, slightly more than a v4. Pick ULID when you want sortable and compact, NanoID when you want short and public, and a UUID when something downstream expects the standard format.

Because it cannot, and neither can anything else. A UUID carries a version nibble and variant bits, and a ULID has a length and an alphabet that pin it down — those are structures a decoder can read. A NanoID has none: it is just characters from a 64-symbol alphabet, so a NanoID, a session token and an ordinary English word are indistinguishable by inspection. The decoder therefore reports the length and the maximum randomness that many characters could hold, and stops short of naming a format. Only the system that issued the token can validate it.