UUID Generator
Generate crypto-secure UUID v4, v7 and v1 in bulk — up to 1,000 at a time — with case, hyphen and brace formatting, per-UUID copy, and text / JSON / CSV export. 100% in your browser.
Pick a variant and a count, hit Generate, and every UUID is produced locally with the Web Crypto API
(crypto.getRandomValues). Reformat the whole batch live (upper/lower case, hyphens, braces),
copy any single UUID or the entire batch as plain text, JSON or CSV, download it as a .txt
or .csv file, re-roll individual values, and inspect exactly what each field of the first
UUID contains. A built-in validator checks pasted UUIDs for format, version and variant.
Case, hyphens and braces reformat the current batch instantly. Variant and count apply when you press Generate.
Generated UUIDs
Anatomy of UUID #1
A UUID is 128 bits (16 bytes) laid out as five groups of hex digits. Here is exactly what each field of the first UUID in your batch contains:
| Field | Bits | Value | Meaning |
|---|
Validate UUIDs
Paste one or many UUIDs (separated by spaces, commas, semicolons or new lines). Each one is checked for the 8-4-4-4-12 hex shape, then its version and variant bits are decoded.
What is a UUID?
A UUID (Universally Unique Identifier, also called a GUID — Globally Unique Identifier — in
Microsoft's naming) is a 128-bit identifier, usually written as 32 hex digits in five groups:
8-4-4-4-12 characters. The full space is 2128 ≈ 3.4 × 1038
possible values — enough that you can generate UUIDs at a rate of 10 billion per second for the
remaining lifetime of the sun and still use a negligible fraction of the space.
UUIDs are defined by RFC 4122 (and, for the newer time-ordered v6/v7, RFC 9562). Their appeal is that anyone, anywhere, can mint identifiers without coordinating with a central authority — no database sequence, no phone call to a registry.
The versions at a glance
| Version | How it's built | When to use it |
|---|---|---|
| 0 (nil) | All 128 bits zero | Sentinel value meaning “no ID” |
| 1 | 100 ns timestamp since 1582-10-15 + 48-bit node | Legacy systems; the timestamp and node can leak when and where it was created |
| 3 | MD5 hash of a namespace + name | Deterministic IDs from stable inputs (deprecated in favour of v5) |
| 4 | 122 random bits | The general-purpose default — what this tool generates first |
| 5 | SHA-1 hash of a namespace + name | Deterministic IDs from stable inputs |
| 6 | Like v1 but re-ordered for lexicographic sorting | Time-ordered IDs in systems built on v1 |
| 7 | 48-bit Unix-millisecond timestamp + 74 random bits | Modern database primary keys — time-ordered like v1 but Unix-based and index-friendly |
| 8 | Custom / vendor-defined | Private schemes that must stay UUID-shaped |
Why v4 is the default
Version 4 draws 122 random bits (the other 6 encode the version and variant). The birthday bound says
the chance of any collision among n generated v4 UUIDs is roughly
n(n−1) / 2123. For a batch of 1,000 — the maximum this tool
generates — that is about 1 in 1031. The stats line under your batch shows the exact
figure for whatever count you generate.
v4 also leaks nothing: a v4 UUID tells an observer nothing about when or where it was created, unlike v1, whose 100 ns timestamp and 48-bit node are right there in the bits.
Why v7 for database primary keys
Random v4 primary keys are a well-known performance trap: in a B-tree index (Postgres, MySQL/InnoDB, SQLite), every insert lands at a random position, so the index page splits and fragments constantly. Version 7 starts with the current Unix time in milliseconds, so UUIDs generated close together sort close together — inserts append to the end of the index the way an auto-increment integer would, while still being globally unique and safe to generate on any client before the row exists. That is the main reason v7 (RFC 9562) exists, and why this tool offers it as a first-class variant.
Where you'll meet UUIDs
- Database primary keys — rows created on any client (mobile, edge, multi-region) without a sequence service.
- API and resource IDs — opaque identifiers in URLs that reveal neither counts nor ordering (v4) or that sort by creation time (v7).
- File and asset IDs — content-addressed or client-minted identifiers in object stores.
- Session and correlation tokens — request IDs that fan out across services and logs.
- Distributed systems — any place two nodes must name the same thing without talking to each other.
Common pitfalls
- v4 is not sortable. Random values do not sort by creation time — if you need that, use v7 (or v6).
- v1 leaks metadata. The 100 ns timestamp and node are readable by anyone holding the UUID. This tool uses a random per-page node instead of a real MAC address, so no hardware identity leaks.
- Case and braces are cosmetic.
{8-4-4-4-12}with braces or UPPERCASE is the same UUID as lowercase with hyphens. Some APIs and config formats (COM, .NET, some YAML) expect braces; many databases expect bare lowercase. Format for the consumer, not for looks. - Don't truncate. Every hex digit carries entropy. A “short UUID” (first 8 chars = 32 bits) collides after only ~4 billion of them — the birthday bound bites at 216.
- UUIDs are not secrets. v4 is unpredictable, but a 128-bit identifier is not a 256-bit key. For tokens where guessing matters, use a dedicated secret of at least 128 random bits (a v4 is exactly that, but don't reuse identifier logic for authentication material).
- The nil UUID. All-zero
00000000-0000-0000-0000-000000000000is a reserved value meaning “no identifier” — never generate or store it as a real ID.
Generate them from the command line instead
- Linux/macOS:
uuidgen(orcat /proc/sys/kernel/random/uuidon Linux) - Python:
import uuid; uuid.uuid4()— usesos.urandomunder the hood - PowerShell:
[guid]::NewGuid() - JavaScript (browsers & Node 19+):
crypto.randomUUID()— the same Web Crypto API this page uses
Nothing on this page leaves your browser: generation, formatting, validation, copying and downloading all happen locally, with no server round-trip and no storage of any kind.