UUID Generator
Generate one or many UUID v4 identifiers using the browser's cryptographic random source. Nothing uploaded, nothing predictable.
Your stuff stays yours. The conversion happens in this page's JavaScript. Nothing you paste here leaves your machine, and the tool keeps working with the network unplugged.
Generates version-4 UUIDs from crypto.randomUUID(), the browser's cryptographically secure random source - not Math.random(), which some online generators quietly use and which produces guessable identifiers. Type a count, get that many, one per line, ready to paste into a database seed, a test fixture, or a config file.
How to generate UUIDs with this tool
- Type how many identifiers you want into the How many? (1-1000) box. Leave it empty and you get one.
- Press Generate. The UUIDs out box fills with one lowercase UUID per line, with no blank line at the end.
- Press Copy result to put the whole list on your clipboard, or select a single line if you only need one.
- Press Generate again for a fresh batch. The previous batch is replaced, so copy it first.
The count box reads the leading digits of whatever you type. 25 gives 25, 3.9 gives 3, and anything that does not start with a digit (such as ten or -5) quietly falls back to a single UUID.
What is inside a version 4 UUID
A UUID is a 128-bit number written as 32 hexadecimal digits in five groups of 8, 4, 4, 4, and 12, separated by hyphens, for 36 characters in total. RFC 9562, the current UUID standard, defines several versions that differ in where those bits come from. Version 1 and version 6 encode a timestamp and a node identifier, version 5 is a hash of a name, and version 7 puts a Unix millisecond timestamp in front of random bits. Version 4, the one this tool makes, is almost entirely random.
Six of the 128 bits are fixed so that software can recognize the format:
- The version nibble. The first digit of the third group is always
4. - The variant bits. The first digit of the fourth group is always
8,9,a, orb, because its top two bits are fixed at binary10.
The remaining 122 bits come from the Web Crypto random source. When a browser lacks crypto.randomUUID(), the page fills 16 random bytes with crypto.getRandomValues() and sets those same six bits by hand, so the result has the identical layout either way.
Randomness makes a v4 UUID unguessable in practice, but the standard still advises against treating UUIDs as security tokens. A UUID tends to end up in logs, URLs, and analytics, which is not where a secret belongs. If you need a session key or reset token, generate it as a secret and store it as one.
A worked example
Enter 3 and press Generate. Your values will differ on every click, but the output always has this shape:
3f0c9a52-7d1e-4b6a-9c2f-58e1d0b7a4c3
b81e44d0-2c95-4f3e-a7d8-0e6b1c9f2a55
06d7e2b9-f4a1-4c80-8b3e-d95a17c6e0f4
Look at the 13th hex digit of each line (the first character after the second hyphen): it is 4 every time. The 17th hex digit (first of the fourth group) is 9, a, and 8 here, always one of the four variant values. If you want to check that a string in your own data is a well-formed v4 UUID, this pattern matches exactly that layout:
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
Add a case-insensitive flag if your data may contain uppercase UUIDs. The standard says parsers should accept both cases, and this tool always emits lowercase.
Storing UUIDs well
As text, a UUID takes 36 bytes plus overhead. PostgreSQL has a native uuid type that stores it in 16 bytes, SQL Server has uniqueidentifier, and in MySQL 8 you can keep it in a BINARY(16) column with UUID_TO_BIN() and BIN_TO_UUID(). Random v4 values also spread inserts across the whole index. On a clustered primary key, such as InnoDB's, that means more page splits than a sequential key would cause. If insert speed on a very large table is a concern, a time-ordered version 7 UUID is the usual answer. This tool does not generate v7, so use your database or language library for those.
Common problems and fixes
"Capped at 1000 per batch."
Requests above 1000 are refused. Generate several batches of 1000 and paste them one after another. The chance of a duplicate across batches is no higher than within one.
You asked for many and got exactly one
The count box only reads digits at the start. Scientific notation like 1e3, words, or a leading minus sign all fall back to 1. Type a plain whole number.
A system wants uppercase or braces
Some Windows tools and registry entries show GUIDs as {3F0C9A52-7D1E-...}. The value is the same number. Convert the list with the case converter and add braces with a find-and-replace in your editor.
A strict validator rejects the value
Check for a trailing space or a stray line break picked up while copying one line out of the list. A UUID with surrounding whitespace is 37 or more characters and fails length checks.
Related tasks
For credentials rather than identifiers, use the password generator. To fingerprint text deterministically instead of randomly, use the SHA-256 hash generator.
Questions this tool gets asked
Are these UUIDs cryptographically random?
Yes. They come from the Web Crypto API's secure random source, the same generator browsers use for key material. UUIDs from Math.random()-based tools can collide or be predicted; these cannot in any practical sense.
Can two generated UUIDs collide?
The random space of UUID v4 is 122 bits. You would need to generate roughly a billion UUIDs per second for decades to reach even a remote chance of one collision.
Are the UUIDs logged anywhere?
No. They are generated inside your browser tab and appear nowhere else unless you paste them somewhere.