UUID v4 Generator
A UUID v4 is a 128-bit identifier built from 122 random bits, formatted as 8-4-4-4-12 hex digits — like 94ee83ff-27c5-4b46-b003-8939ea31553d. This bulk generator mints 1–100 of them at a time using the Web Crypto API's cryptographically secure random number generator; nothing is logged, stored or reused.
Your UUIDs one per line
Freshly minted server-side for this exact request. Load again for new values — or enable JavaScript to keep generating locally without reloads.
How it works — and how unlikely a collision really is
Each identifier starts as 16 bytes from crypto.getRandomValues(), a CSPRNG seeded by the host OS. Two fields are then overwritten per ISO/IEC 9834-8 and RFC 9562: the version nibble becomes 4 (byte 6 high nibble) and the variant field becomes 10xx (byte 8 top bits). That leaves exactly 122 random bits — the entire collision story below rests on those.
The honest collision math
Birthday-bound math says you need about √(2123 × ln 4) ≈ 2.7 × 1018 v4 UUIDs before the probability of even one duplicate reaches 50% — that's 2.71 quintillion. Generating a billion UUIDs per second, it would take roughly 85 years to reach coin-flip odds. At more realistic scale: minting 103 trillion UUIDs gives about a one-in-a-billion chance of any single collision. Duplicate risk is not zero, but treating v4 IDs as unique within a system is engineering-grade sound.
UUID versions at a glance (per RFC 9562)
| Version | Source of bits | Typical use / caveat |
|---|---|---|
| 1 | 60-bit Gregorian timestamp + node MAC address | Sortable-ish; leaks MAC & creation time |
| 2 | DCE security (POSIX UID/GID) | Rare; mostly historic |
| 3 | MD5 hash of a namespace + name | Deterministic; MD5 legacy |
| 4 | 122 random bits (this tool) | The default choice everywhere |
| 5 | SHA-1 hash of a namespace + name | Deterministic, stronger than v3 |
| 6 | v1 reordered for lexicographic sorting | New in RFC 9562; DB-friendly |
| 7 | Unix-ms timestamp + 74 random bits | New in RFC 9562; sortable & modern favorite |
| 8 | Vendor/experimental custom | Not guaranteed unique — read the spec |
Need unpredictable secrets instead of identifiers? Random tokens belong to the password generator; scheduling jobs that consume these IDs is the cron generator's job; log correlation pairs them naturally with the Unix timestamp converter; and port numbers for the services emitting your events sit in the common ports reference.
Frequently asked questions
What is a UUID?
A Universally Unique Identifier: a 128-bit value displayed as 32 hexadecimal digits in the pattern 8-4-4-4-12 (for example 3d7f2a9c-41b5-4e88-9f21-c58a0d92b7ef). Version bits inside declare how it was made; v4 means 'from random bits'.
Can two UUID v4 values collide?
In theory yes, in practice no. You'd need on the order of 2.7 quintillion v4 UUIDs before a duplicate becomes likelier than not; at a billion per second that is ~85 years of continuous generation for 50/50 odds. Within any realistic database the probability is negligible.
What is the difference between a GUID and a UUID?
None functionally. 'GUID' is Microsoft's name for the same 128-bit construct used in Windows/COM/SQL Server; 'UUID' comes from the ITU/ISO and IETF specs. Modern Microsoft docs use both interchangeably, and this generator's output is valid as either.
Which UUID version should I use?
Default to v4 when uniqueness alone matters and nothing should be inferable. Prefer v7 (or v6) for database primary keys where insertion-order sortability reduces index churn. Use v5 only when you need the same input to always yield the same ID.
Are UUID v4 values cryptographically secure?
They are unpredictable when built on a CSPRNG like crypto.getRandomValues(), as this tool does. Note the distinction: unpredictability makes them hard to guess, but they are identifiers, not authentication tokens — for secrets use a dedicated token generator.
Are UUIDs safe in URLs and filenames?
Yes. Hex digits plus hyphens need no percent-encoding, they never collide with reserved path segments, and their fixed length keeps logs column-aligned. Lowercase is canonical; uppercase parses identically but byte-compare after normalizing case.