Passkal

UUID Generator

Draw one UUID or a hundred, as a random v4 or a time-ordered v7, in whichever case and shape your system expects. They are drawn on your device and never leave your browser.

A UUID is a 128-bit label you can hand out without asking anyone first — no central counter, no coordination, and still no realistic chance of two matching. Draw one for a database row or a hundred for a test fixture.

Your UUID

Randomness122 random bitsVery high

Randomness: Very high, 122 random bits

Take the batch with you

One identifier per line, as a plain text file — the shape a seed script, a spreadsheet or a fixture usually wants.

Customize

Version

Reach for v7 when these become primary keys: a database index that receives values in order appends to the end instead of scattering writes across the whole tree. Reach for v4 everywhere else.

1
1 identifiers100 identifiers

Each one is drawn on its own, so a batch is exactly as unique as the same number of separate visits to this page.

Format

Neither changes the value, only how it is written. RFC 9562 asks for lower case with dashes, and that is what most parsers hand back — but plenty of systems store the 32 bare characters, so both are here.

Room before a repeat

122 bits of chance in each3.3 × 10^17 before a 1% chance

The figure comes from the birthday bound — the point where enough identifiers exist that any two matching becomes worth mentioning at all.

Recent identifiers

Nothing here yet. Identifiers you generate are kept on this device only, so you can pick one up again if you close the tab.

Unique is not the same as unguessable

This is the one thing worth taking away. A UUID is built so that two systems that have never spoken can each invent one and not clash — that is a promise about collisions, and nothing else. It is not a promise that nobody can work out the next one, and a UUID ends up in URLs, server logs, referrer headers and error reports, all places a secret must never be. If a link is only safe because the identifier in it is hard to find, generate a token instead.

A v4 does happen to be hard to guess: 122 of its 128 bits are drawn from chance, the other six spelling out the version and the variant. That is a side effect of how it is built rather than a guarantee it makes, and it disappears the moment you switch versions. A v7 keeps only 74 random bits, because the first 48 are the millisecond it was made — public information, and enough of a foothold that guessing one becomes a real exercise rather than an impossible one.

What v7 buys in return is order. Identifiers that arrive in ascending order land at the end of a database index instead of scattering across it, which is the difference between an index that appends and one that splits pages all day. If these are primary keys in a table that is written to constantly, that trade is usually worth making — and it is a trade, which is why it is worth making on purpose.

The numbers behind “will not collide” are less dramatic than they sound, and still overwhelming. Collisions follow the birthday bound, so the interesting figure is the square root of the space, not the space itself: with 122 random bits, it takes around 3.3 × 10^17 identifiers before there is even a one-in-a-hundred chance that any two of them match.

Every one of these is drawn here, in your browser, from the same cryptographic random source the rest of this site uses. Nothing is reserved, registered or checked against a list anywhere — there is no list, and that is the entire point of the format.

Everything happens on your device. Your identifiers never leave this browser.