UUID Generator
Generate UUIDs of version 1, 4 and 7, up to a thousand at a time, derive version 3 and 5 UUIDs from a namespace and a name, and write them in six formats.
Overview
A UUID is a 128-bit identifier that can be made anywhere without asking a central registry and still not
collide, defined in RFC 9562. It is written as 32 hexadecimal digits in five groups,
550e8400-e29b-41d4-a716-446655440000. The first digit of the third group is the version, the first
digit of the fourth group holds the variant, 8, 9, a or b
for the UUIDs of RFC 9562. GUID is Microsoft's name for the same thing.
Web interface
Generator makes UUIDs: pick the version, the format and a quantity from 1 to 1,000, and press Generate or Ctrl/⌘ + Enter. Copy copies all of them, one per line. Namespace UUIDs derives version 3 and 5 UUIDs from a namespace and a name as you type.
Versions
| Version | Made from | Sorts by time |
|---|---|---|
| v1 | the time in 100-nanosecond steps since 15 October 1582, a random clock sequence and a random node, marked as random by its multicast bit as RFC 9562 asks | no: the low bits of the time come first |
| v4 | 122 random bits | no |
| v7 | the Unix time in milliseconds, followed by 74 random bits | yes |
| v3 | a namespace and a name, hashed with MD5 | no, the same input always gives the same UUID |
| v5 | a namespace and a name, hashed with SHA-1 | no, the same input always gives the same UUID |
| Nil | all zeros: 00000000-0000-0000-0000-000000000000 |
The random bits come from crypto.getRandomValues, the browser's cryptographic random source.
Within one millisecond, v7 counts its random part up instead of drawing it again (RFC 9562, section 6.2,
method 2), so a batch of a thousand sorts in exactly the order it was made, and a UUID made later never sorts
before one made earlier on the same page. That is what makes v7 a good primary key: new rows land at the end of
an index.
Namespace UUIDs
Version 3 and 5 hash the 16 bytes of a namespace UUID followed by the name in UTF-8. The presets are the four
namespaces RFC 9562 defines, DNS, URL, OID and X.500; Custom takes any UUID. The same namespace
and name always give the same UUID, which makes them useful as stable identifiers for things that already have a
name. For the DNS namespace and example.com the tool gives:
| Version | UUID |
|---|---|
| v3 (MD5) | 9073926b-929f-31c2-abc9-fad77ae3e8eb |
| v5 (SHA-1) | cfbff0d1-9375-5685-968c-48ce8b15ae17 |
Both were checked against Node.js's own MD5 and SHA-1. Prefer v5 for new work; v3 exists for compatibility.
Formats
| Format | Example |
|---|---|
| Standard | 550e8400-e29b-41d4-a716-446655440000 |
| Uppercase | 550E8400-E29B-41D4-A716-446655440000 |
| No dashes | 550e8400e29b41d4a716446655440000 |
| Braces | {550e8400-e29b-41d4-a716-446655440000}, as Microsoft writes GUIDs |
| URN | urn:uuid:550e8400-e29b-41d4-a716-446655440000 |
| Short | VQ6EAOKbQdSnFkRmVUQAAA: the 16 bytes in URL-safe Base64, 22 characters |
No API
There is no API for this tool. UUIDs are made in the browser; in a script, use uuidgen on the
command line, crypto.randomUUID() in JavaScript or the uuid module in Python, all of
which make version 4.
Privacy
Nothing leaves the browser. The UUIDs are made on the page and are not stored or logged anywhere, so nobody else has seen the ones you use.