This tool runs locally in your browser.
Results are estimates based on your input only; entered values and result contents are not stored by BoringToolsKit.
Your inputs and results stay in this browser. This page may send privacy-bounded aggregate interaction events described in Privacy; it does not send your entered values or result contents.
Use this result
Share the current inputs or ask ChatGPT to explain the calculation in context.
More options
What does this tool show?
UUID generator: create random UUID v4 identifiers instantly, one at a time or in bulk, ready to copy anywhere. Free, runs locally in your browser, no signup.
- v4 UUIDs carry 122 random bits — collision odds are negligible even at billions of IDs.
- Generate UUIDs server-side for anything security-relevant; client-side generation is fine for fixtures and non-sensitive IDs.
When this tool earns its keep
Use it when you need unique identifiers for databases, test fixtures, and API development — unique identifiers repeatedly or once, with the result ready to copy. Pair it with its related tools below when the output feeds the next step.
How this calculator works
Formula
Takes 16 random bytes, sets version 4 and the RFC 4122 variant bits, then prints them as 8-4-4-4-12 hex groups. Randomness comes from crypto.getRandomValues when available.
Site methodology
This page does not cite an external source yet. The link above documents how we build and check calculators; it is our own process, not third-party validation. Treat the inputs and results as editable estimates.
Assumptions to verify
- Input format is assumed clean; malformed input is reported rather than guessed at.
- Output is computed client-side and stays in your browser.
Frequently asked questions
Is anything sent to a server?
No. The transform runs in your browser; nothing you paste leaves the page.
What is the honest limitation?
It is mechanical, not judgmental: the tool guarantees format correctness, not fitness for your context — skim the output before shipping it.
Cite this tool
BoringToolsKit. “UUID Generator.” boringtoolskit.com/uuid-generator/ (reviewed 2026-09-20). Free to reference in articles, syllabi, and answer posts with a link.
Privacy: Inputs and results stay in this browser. Results are estimates based on your input only; nothing you enter is stored by BoringToolsKit.
Anatomy of one generated UUID, byte by byte
The generator pulls 16 random bytes (128 bits), then burns exactly 6 of them to stamp version and variant. Byte 7 is forced to hex 4X, so byte 7's high nibble becomes 0x4 and only its low nibble stays random: 2 of the 128 bits fixed. Byte 9 is forced to one of 8, 9, A, or B, which fixes its top two bits to binary 10: 2 more bits gone. 128 minus 4 equals 122 truly random bits, which is the 122 quoted in the result panel.
122 bits means about 5.3 x 10^36 possible UUIDs (2^122 = 5,316,911,983,139,663,491,615,228,241,121,137,804,736). To put that in perspective: if every person on Earth generated 1 billion UUIDs per second, continuously, the chance of any two colliding reaches 50 percent only after about 73 years (2^61 generations). A single batch of 10 UUIDs from this tool has a collision probability near 1.6 x 10^-35, so any duplicate you actually see points to a bug in the calling code, not in the algorithm.
Check any output against the stamp: the 13th hex character (first character of group 3) must be 4, and the 17th character (first character of group 4) must be 8, 9, a, or b. Everything else is uniform over 16 possibilities per position. If a generated string fails either check, the byte manipulation was applied wrong and the output is not a valid v4 UUID.
What this tool will not do, and where the numbers actually bite
This is a v4-only generator. It cannot produce v1 (timestamp plus MAC address), v3 or v5 (name-based, MD5 or SHA-1 hashed), or v7 (time-ordered) UUIDs. Those variants matter when you need sortable keys or deduplication of the same input; v4 gives you none of that, only randomness. Count is capped at 10 per click, and the validation is strict: 0 returns an error, 11 returns an error, and a negative or non-numeric count fails the 1-to-10 range check the same way.
Randomness quality depends on the runtime. In a modern browser, crypto.getRandomValues draws from the OS entropy pool (ChaCha20-backed on Chromium, Fortuna-based on Firefox) and is cryptographically secure. The Math.random fallback path only triggers in environments without Web Crypto, and Math.random is seeded and predictable, so UUIDs from that path are unsuitable for session tokens, API keys, or anything adversarial. The tool degrades visibly in that case rather than silently, but you should still verify your own runtime before trusting the output for security purposes.
Two practical boundaries: pasted UUIDs lose their hyphens if downstream code normalizes them, so always store the canonical 8-4-4-4-12 form shown here, and remember that 122 bits of entropy in a v4 UUID is not the same as 122 bits in a random string, because 6 bits are structurally fixed. Anything requiring strictly 128 bits of entropy should use a raw 16-byte hex dump or a base64 encoding instead of a v4 UUID.