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.
122 random bits. The default choice when you just need a unique ID.
019a0c2e-7d51-7b8e-9f42-6ac3d0b81e77Every 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.
| Version | Built from | Sorts by time | Use it for |
|---|---|---|---|
| UUIDv1 | 60-bit 100-ns timestamp + clock sequence + node | No — timestamp is split | Legacy systems already using it |
| UUIDv2 | Reserved for DCE Security | Not specified | Not defined in RFC 9562 |
| UUIDv3 | MD5 of namespace + name | No — hash output | Legacy name-based IDs; prefer v5 |
| UUIDv4 | 122 random bits | No — fully random | General-purpose unique IDs |
| UUIDv5 | SHA-1 of namespace + name | No — hash output | A stable ID derived from a name |
| UUIDv6 | v1 fields with the timestamp reordered | Yes | Sortable replacement inside a v1 system |
| UUIDv7 | 48-bit Unix ms + 74 random bits | Yes | Database primary keys |
| UUIDv8 | Reserved for custom formats | Defined by the implementer | Vendor-specific layouts |
| Nil UUID | All 128 bits zero | Constant | A placeholder meaning "no ID" |
| Max UUID | All 128 bits one | Constant | A 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.
| Form | Example | Chars | Used for |
|---|---|---|---|
| Canonical | 019a0c2e-7d51-7b8e-9f42-6ac3d0b81e77 | 36 | The RFC 9562 canonical form — the default everywhere |
| No hyphens | 019a0c2e7d517b8e9f426ac3d0b81e77 | 32 | Compact storage, URL paths, filenames |
| Uppercase | 019A0C2E-7D51-7B8E-9F42-6AC3D0B81E77 | 36 | Microsoft tooling and registry keys |
| Braces (GUID) | {019A0C2E-7D51-7B8E-9F42-6AC3D0B81E77} | 38 | The Windows GUID registry format |
| URN | urn:uuid:019a0c2e-7d51-7b8e-9f42-6ac3d0b81e77 | 45 | The 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.
| Scheme | Length | Randomness | Sorts by time |
|---|---|---|---|
| UUIDv4 | 36 (32 hex digits) | 122 bits | No |
| UUIDv7 | 36 (32 hex digits) | 74 bits per millisecond | Yes |
| ULID | 26 (Crockford base32) | 80 bits per millisecond | Yes |
| NanoID (21) | 21 | 126 bits | No |
Related Calculators
You might also find these calculators useful
SHA-256 & MD5 Hash Generator
Generate and verify SHA-256, MD5, SHA-1, SHA-512 and SHA-3 digests
Password & Passphrase Generator
Strong random passwords and EFF Diceware passphrases, with real crack times
Hex Calculator
Convert, add and mask hex, binary, octal and decimal
JSON Size Calculator
Measure JSON bytes and check platform limits
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
Pick a preset, or choose an ID type — v4 if you just need a unique value, v7 if it will be a database key.
Set how many you want, up to 1,000.
For v3 or v5, choose a namespace — or paste your own UUID as one — and type the name to derive the ID from.
For NanoID, set the length. Shorter is prettier in a URL and weaker against collisions; the figures below the results say by how much.
Choose the written form. Uppercase plus braces gives you the Windows GUID form; turning hyphens off gives the 32-character form.
Press Generate, then copy one, copy them all, or download the batch as a text file.
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.