UUID Generator

Generate up to 1000 random version 4 UUIDs at once using your browser's own cryptographic generator. Nothing is uploaded and no library is involved.

🌐 Español

🔒 Private by design: everything is generated locally in your browser and never uploaded to any server.

An identifier nobody has to hand out

The problem a UUID solves is coordination. If two systems both need to create records and both need unique identifiers, the obvious answer is a counter, and a counter needs a single authority to hand out the next number. That authority becomes a bottleneck, a single point of failure, and an obstacle to anything working offline.

A version 4 UUID sidesteps the whole arrangement by making the identifier so large and so random that two independently generated values colliding is not a realistic concern. There are 122 random bits in one, which is a big enough space that no coordination is needed at all. Any machine can mint one whenever it likes and be confident nobody else will produce the same value.

That is why they show up everywhere, as database primary keys, as request identifiers threaded through logs, as filenames for uploads, and as correlation identifiers between services.

Generating a batch

  1. Set How many UUIDs? anywhere from 1 to 1000.
  2. Generate.
  3. Copy the block or download it as a text file.

Values come back one per line with nothing around them, which is the form that pastes cleanly into a spreadsheet column, a seed script or a fixture file.

No library between the randomness and the output

There is a real category of bug in home made UUID generators, and it comes from doing arithmetic between the random source and the printed value. A generator that draws random numbers and then formats them by hand can bias a nibble, put the version marker in the wrong place, or accidentally reuse a value.

This page does none of that. It calls the platform’s own identifier function, which is present in modern browsers and backed by the same cryptographic randomness used for security purposes, and prints the string it returns. There is no formatting step of this tool’s own to get wrong.

The count is the one thing that is guarded, and it is clamped at both ends rather than only the top. A count below one becomes one and a count above a thousand becomes a thousand, because a numeric field’s own limits do not stop somebody editing the value, and a runaway count would tie up the tab for no good reason.

Reading the shape

Every version 4 value has the same recognisable form. Eight hexadecimal digits, then three groups of four, then twelve, separated by hyphens.

Two positions are not random. The first digit of the third group is always a four, which is the version marker and is why these are called version 4. The first digit of the fourth group is always eight, nine, a or b, because the top two bits of that digit are fixed as the variant marker.

Knowing those two positions lets you tell at a glance whether a value in a log is a version 4 UUID or something else pretending to be one, which is more often useful than it sounds when you are tracing an identifier through a system that mixes formats.

What a version 4 value cannot do

It does not sort. Because the bits are random, ordering a set of version 4 UUIDs tells you nothing about the order they were created in, and using one as a clustered database key scatters inserts across the index rather than appending to the end of it. If creation order matters, a timestamp column alongside the identifier is the usual answer, and Timestamp Converter helps when you are reading those back.

It also carries no information. That is a feature when you do not want an identifier leaking a record count or a creation time, and a limitation when you wanted it to. For an identifier derived from content rather than randomness, a hash such as SHA-256 Hash or MD5 Hash is the right tool, since identical input always produces the identical value.

For filling a test database with more than identifiers, Fake Data Generator produces realistic records. For a random value that is not an identifier, Random Number Generator draws from the same kind of source. The rest are on the dev tools hub.

See it in action

Screenshot of the UUID Generator tool with How many UUIDs? set to 5
UUID Generator mid-process: How many UUIDs? set to 5.
Screenshot of the UUID Generator result screen showing the generated output “310dce75-c89e-4d7b-aae8-b23381dfa07a 37531d6d-1d…”
The finished result: the generated output “310dce75-c89e-4d7b-aae8-b23381dfa07a 37531d6d-1d…”. The download link is a local blob URL — the file never leaves your device.

Frequently asked questions

Which UUID version is this?

Version 4, the fully random one. Its 128 bits are random apart from a fixed version marker and a two bit variant marker, which is why every value looks like arbitrary hex rather than encoding a timestamp or a machine address. That makes it the right choice for a database key, a request identifier or a filename, and the wrong choice if you need identifiers that sort in creation order.

What produces the random bits?

Directly from the platform's own identifier function, which is backed by the same cryptographic random source the browser uses for security work. There is no library involved and no arithmetic of this tool's own between the random bytes and the value you see, which removes the most common way a home made generator goes wrong.

How many can I generate at once?

One to a thousand, and the limit is enforced rather than suggested. A value below one becomes one, a value above a thousand becomes a thousand, and a fractional value is rounded, so an edited field cannot produce an empty result or set a browser tab generating for a very long time. Values come back one per line, which pastes straight into a spreadsheet column or a script.

Can two people generate the same UUID?

In practice, no. There are 122 random bits in a version 4 value, which is a space large enough that a collision is not something to design around. That is the entire point of the format, since it lets separate systems mint identifiers with no coordination and no central allocator, which is exactly what makes it useful in distributed and offline work.

Are the generated values recorded anywhere?

No. Generation happens in your browser tab and nothing is sent, logged or stored. The values exist only in the page until you copy or download them, so take what you need before navigating away. There is also no history, which is deliberate, because a list of previously issued identifiers is not something a web page should be keeping.

How do I know the output is a well formed version 4 value?

The format is eight, four, four, four and twelve hexadecimal digits separated by hyphens, with the first digit of the third group always a four and the first digit of the fourth group always eight, nine, a or b. Those two fixed positions are the version and variant markers. Any value from this tool matches that shape, and it is checkable at a glance without any tool at all.

Are the letters uppercase or lowercase?

Lowercase, which is what the platform's own generator produces and what the specification recommends for output. Comparisons should still be case insensitive, since plenty of systems store and return them uppercase, and a string comparison that assumes one case is a bug waiting for the first value that arrives from somewhere else.

Related tools