UUID Batch Generator
Draws 16 cryptographic random bytes for each identifier, replaces the RFC 9562 version and variant bits, and renders up to 10,000 UUIDv4 values as a copyable table with a downloadable CSV artifact.
Generated UUIDs
| 1 | 105b3e7f-e1ea-487d-bbda-5afd54969806 |
| 2 | ee75d895-b2fb-4547-b9b6-2d9908f1cae8 |
| 3 | 0ff64381-31f0-4d16-a2e5-d71961af9936 |
| 4 | dab9024d-db45-4f57-a0be-50e7449521bf |
| 5 | 471a24dc-aa3d-4414-85bc-c647139b33ec |
| 6 | 5b10cea6-cbf2-4342-bb8c-4664f3ff2688 |
| 7 | 1ef8e155-385a-49ac-a3ef-4af37cb8c1bb |
| 8 | 05a982ec-719d-45fe-b94a-c6b3a966ef76 |
| 9 | 19096e7b-19ee-4e3e-8d68-6a4fca201cef |
| 10 | efbe9605-ca21-48e8-aea4-b731c743c8f6 |
| 11 | 17a9c388-0c4b-4f87-b346-21966736db77 |
| 12 | 1612fa7e-f770-43cf-8571-b09b0309b8cc |
| 13 | a3e6b169-3d12-48df-a6e7-7d0143fc6506 |
| 14 | ee441aa0-9184-4fa9-b5b6-c58343811884 |
| 15 | d436077b-92ff-44cd-8598-db9ab667983f |
| 16 | 4c23fdc6-f6a8-4d9c-996c-865e413b9dab |
| 17 | 64c39b3b-7c91-4458-8884-68d65eeb5224 |
| 18 | cf8ef5fa-b9f0-402c-b701-a8884b4a485e |
| 19 | 3c062e5c-4a7f-4648-ae8f-8767e4d37381 |
| 20 | fa41672c-8c0d-485c-b8ef-3f5acc31bbd2 |
Results are provided as-is, with no warranty of accuracy. The method and its sources are published below so you can check the working.
How it works
What this works out
A version 4 UUID is a 128-bit identifier whose payload is random except for six bits that say what layout it uses. It does not contain a timestamp, a machine address or a database counter. That is why independent systems can generate values without coordinating a central service.
This tool makes a batch rather than one decorative string. Every generated UUID is a table row, so the result can be copied, inspected for a duplicate, or downloaded as CSV and used as seed data, fixture identifiers or import keys.
The method
RFC 9562 permits an implementation to draw all 128 bits first, then replace the version and variant fields. Written as zero-indexed octets:
octet 6 = (random octet 6 AND 00001111) OR 01000000
octet 8 = (random octet 8 AND 00111111) OR 10000000
The first expression forces the high nibble of octet 6 to hexadecimal 4.
The second forces the two most-significant bits of octet 8 to binary 10, so
its first hexadecimal digit is 8, 9, a or b. All other bits and the low
bits preserved by those masks remain random: 122 bits in total.
Web Crypto limits one getRandomValues request to 65,536 bytes. A maximum batch
contains 160,000 bytes, so the implementation fills the allocation in bounded
chunks instead of relying on a request the platform must reject.
Before you read on
Which canonical string has both the version 4 and RFC variant fields in the right positions?
00000000-0000-4000-a000-000000000000. Version 4 occupies the first nibble of the third group; the RFC variant is visible as 8, 9, a or b at the start of the fourth.
A worked bit-layout example
Tests need a repeatable byte source even though the live generator must not.
Feeding the authored algorithm the 16 bytes 00 01 02 ... 0f gives:
random: 00010203-0405-0607-0809-0a0b0c0d0e0f
UUIDv4: 00010203-0405-4607-8809-0a0b0c0d0e0f
^ ^
version variant
Only the required high bits of octets 6 and 8 changed. The formula test asserts that complete vector, then uses the real Web Crypto source for 100 UUIDs and checks every value against the version/variant grammar. Another test generates the full 10,000-row limit and proves no random request exceeds 65,536 bytes.
Canonical, compact and URN forms
The familiar representation groups 32 hexadecimal digits as 8-4-4-4-12:
00010203-0405-4607-8809-0a0b0c0d0e0f
Compact text removes the four hyphens. URN text prefixes the canonical value:
urn:uuid:00010203-0405-4607-8809-0a0b0c0d0e0f
Uppercase changes a through f to A through F. None of these operations
changes a bit in the UUID; they are formatting contracts for the system that
will consume the list.
Collision probability, stated honestly
There are 2^122 possible random payloads. For n uniformly generated UUIDs,
the birthday approximation for at least one collision is:
p ≈ n × (n - 1) / (2 × 2^122)
For 10,000 values that is roughly 9.4 × 10^-30. Tiny is not zero, and a cryptographic generator is still an implementation dependency. The table’s duplicate counter catches a repeat inside this batch, while a database unique constraint remains the right final authority across every batch and system.
What it does not do
It does not generate time-ordered UUIDv7 values, deterministic name-based UUIDv5 values, or database-specific binary encodings. It also does not promise that a UUID is secret, signed or resistant to modification. Its one job is a standards-shaped batch of cryptographically random version 4 identifiers.
How it is done
- Validate a whole-number batch size from 1 to 10,000. Allocate 16 bytes per UUID and fill them from Web Crypto in calls no larger than its 65,536-byte quota.
- In octet 6, preserve its low four random bits and replace the high four with 0100, the version 4 field. In octet 8, preserve its low six random bits and replace the high two with 10, the RFC variant.
- Render the 16 octets as 32 hexadecimal digits. Canonical form inserts hyphens in the 8-4-4-4-12 grouping; compact removes them; URN adds the urn:uuid prefix. Letter case changes no bit.
- Compare canonical values inside the current batch and report any duplicate actually observed. Render every value as a static result row that can be copied or downloaded as CSV.
What it assumes
- Each UUID starts from browser cryptographic random bytes, not Math.random and not a user-visible seed. Six structural bits leave 122 random bits per value.
- Random UUIDs make collisions extraordinarily unlikely; they do not make a mathematical uniqueness guarantee. The batch duplicate count is an observation, not proof against a value generated elsewhere.
- UUIDs are identifiers, not authentication secrets. RFC 9562 says not to assume they are hard to guess or use mere possession as an access capability.
- The generated values are not placed in the URL, saved to catalogue preferences or sent to a server. Recomputing intentionally produces a new batch.
Common questions
Are UUIDs generated on this page sent to a server?
No. Web Crypto fills the random bytes in this browser, the version and variant bits are set locally, and the table exists only in the rendered result. The generated browser test fails if normal tool use makes an off-origin request.
How many random bits does a version 4 UUID contain?
122. A UUID has 128 bits in total; four identify version 4 and two identify the RFC variant. RFC 9562 assigns the other 122 bits to random data.
Can two UUID v4 values ever be the same?
Yes in principle, because generation is random, but the space contains 2^122 possibilities. The chance stays tiny at ordinary batch sizes, and this page also reports a duplicate if one occurs inside the current list.
Is compact or uppercase UUID text a different identifier?
No. Hyphens, hexadecimal letter case and the urn:uuid prefix are representations around the same 128 bits. Use the shape the receiving database or API expects.
Should a UUID v4 be used as an API key or password?
No. RFC 9562 explicitly warns against assuming UUIDs are hard to guess or using possession as an access capability. Generate a dedicated secret with the length and handling rules appropriate to authentication.