UUID Generator

Generate version 4 UUIDs in bulk for databases, APIs and testing. Free, fast, and your files never leave your device.

What a version 4 UUID is made of

A UUID is 128 bits printed as 32 hexadecimal characters in a 8-4-4-4-12 grouping. Version 4 means those bits are random rather than derived from a clock or a MAC address. Six of the 128 bits are fixed by RFC 4122: the first character of the third group is always 4, marking the version, and the first character of the fourth group is always 8, 9, a or b, marking the variant. That leaves 122 bits of randomness, which is where the collision resistance comes from.

This page calls the browser's own crypto.randomUUID(), part of the Web Crypto API. The bytes come from the platform cryptographically secure random number generator, not from Math.random(), and the version and variant bits are set by the browser engine itself. The tool adds no randomness of its own, so the output is exactly what your browser would produce inside any other script on your machine. Everything happens in your browser and nothing is uploaded to a server. No identifier you create is ever recorded anywhere.

The formatting switches

  • Uppercase converts the hex digits to capitals. UUIDs are case insensitive when compared properly, but Microsoft tooling and some legacy exports expect capitals.
  • Include hyphens is on by default. Turning it off gives a bare 32 character string, which is what you want for a MySQL BINARY(16) import, a URL path segment or a filename.
  • Wrap in braces produces the registry style {0b28...} form used by Windows GUIDs, COM class IDs and .NET Guid.ToString("B").

The count box accepts 1 to 500 and is clamped to that range, so typing 9000 silently becomes 500 and typing 0 becomes 1. The batch is joined with newlines into the output box, a running total is shown underneath, and two buttons appear: Copy all puts the whole list on your clipboard, and Download .txt saves it as uuids.txt.

A sample batch

Set the count to 3, leave hyphens on and everything else off, then press Generate. The output box fills with three lines such as 9f1c4b3e-2d7a-4c58-9e11-6b0a83d4f2c7, c47a2f10-8b63-4d9e-a205-71ff3c8ea946 and 15d8e0b7-6a94-4f31-bd72-0c39a57e8d14. Note the 4 starting each third group and the 9, a or b starting each fourth group. Tick Uppercase and Wrap in braces, generate again, and the same shape comes back as {9F1C4B3E-2D7A-4C58-9E11-6B0A83D4F2C7}.

Where bulk UUIDs get used

Primary keys are the obvious case. Generating an identifier on the client means a record can be created offline and synchronised later without a central sequence handing out numbers, which is how apps built on PouchDB, Realm or a queued mobile cache work. Beyond that, a batch of UUIDs is handy for seeding a Postgres table with test rows, filling an Idempotency-Key column while writing API documentation, naming uploaded objects in an S3 bucket so two users cannot overwrite each other, generating correlation IDs for a distributed tracing example, creating unique identifiers for Kubernetes resource annotations, and populating a CSV of dummy customer records before a migration rehearsal.

What this tool will not do

It generates version 4 only. There is no version 1 (timestamp and node), no version 5 (name based SHA-1), and no version 7 (time ordered), so if your database needs sortable identifiers for index locality, version 4 is the wrong choice and this is not the right generator. It also does not validate or parse an existing UUID, convert between representations, or check a list for duplicates.

One practical caution: because version 4 UUIDs are random, inserting millions of them as a clustered primary key scatters writes across the index and hurts performance on large tables. That is a database design question rather than a generator question, but it is worth knowing before you commit. And while the values are unpredictable, treat a UUID as an identifier rather than a secret. It is fine in a URL for a shared document, but it is not a substitute for an authentication token.

Related tools

Generating identifiers costs nothing. Once the stored credit is used up, a few seconds of rewarded advertising covers the next batch, and no sign up exists.

FAQ

Are these random enough to rely on?

They come from the browser's cryptographically secure generator via crypto.randomUUID, not from Math.random, so they are suitable anywhere a version 4 UUID is appropriate.

Why does every result have a 4 in the same position?

That digit is the version field defined by RFC 4122. The character starting the fourth group is similarly restricted to 8, 9, a or b, which identifies the variant. Both are fixed, leaving 122 random bits.

Can two of these ever match?

In theory yes, in practice no. With 122 random bits you would need to generate on the order of a billion UUIDs per second for decades before a collision became likely.

How do I get the 32 character form without dashes?

Untick Include hyphens before generating. That form suits binary column storage, URL segments and filenames where a dash is awkward.

Why can I only make 500 at a time?

Five hundred keeps the page responsive and the output box readable. Click Generate again for another batch, or paste several batches together in a text file.