Menu

Search toolsChangelog

to move to openDescribe the problem, not the tool

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.

One to 10,000 independent version 4 UUIDs. The table can be copied or downloaded as CSV.

The underlying 128 bits are the same. Only their text representation changes.

UUIDs generated
20
Random bits in each UUID
122
Duplicates in this batch
0
Representation
Canonical, lowercase

Generated UUIDs

1105b3e7f-e1ea-487d-bbda-5afd54969806
2ee75d895-b2fb-4547-b9b6-2d9908f1cae8
30ff64381-31f0-4d16-a2e5-d71961af9936
4dab9024d-db45-4f57-a0be-50e7449521bf
5471a24dc-aa3d-4414-85bc-c647139b33ec
65b10cea6-cbf2-4342-bb8c-4664f3ff2688
71ef8e155-385a-49ac-a3ef-4af37cb8c1bb
805a982ec-719d-45fe-b94a-c6b3a966ef76
919096e7b-19ee-4e3e-8d68-6a4fca201cef
10efbe9605-ca21-48e8-aea4-b731c743c8f6
1117a9c388-0c4b-4f87-b346-21966736db77
121612fa7e-f770-43cf-8571-b09b0309b8cc
13a3e6b169-3d12-48df-a6e7-7d0143fc6506
14ee441aa0-9184-4fa9-b5b6-c58343811884
15d436077b-92ff-44cd-8598-db9ab667983f
164c23fdc6-f6a8-4d9c-996c-865e413b9dab
1764c39b3b-7c91-4458-8884-68d65eeb5224
18cf8ef5fa-b9f0-402c-b701-a8884b4a485e
193c062e5c-4a7f-4648-ae8f-8767e4d37381
20fa41672c-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?

  • The variant is right, but the first nibble of the third group says version 3.

  • The version is right, but 7 begins with variant bits 01 rather than 10.

  • Yes. The third group starts with 4 and a starts with binary 10.

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Sources