Identifiers

UUID Generator

Generate RFC 4122 version 4 UUIDs using your browser's cryptographically secure random number generator, in bulk, with uppercase/lowercase and hyphen options, plus format validation.

Free to use · Runs in your browser · No account required

Processed locally in your browser

Nothing you enter here is uploaded, transmitted to a server, or stored by this tool. Generated UUIDs stay in your browser; nothing is transmitted or logged.

Runs entirely in your browser — nothing is sent to a server

Generate

Up to 1000 per batch.

5 UUIDs (v4)

  • 4bc47d16-49cb-4c09-be4a-8328553afa2c
  • ccd563e5-f719-45b4-8392-6076ff48612a
  • a4acf6a9-ea4d-4c2e-9a85-2920fd769c44
  • 5b440229-0c0d-4015-98d0-812ab5559db1
  • 757d4da0-7303-468f-bf13-d4bbbf07f3ae

How to use this tool

  1. 1Set how many UUIDs you need (up to 1,000) and toggle uppercase or hyphen-free formatting.
  2. 2Click Regenerate any time — every value comes from a fresh cryptographically secure random draw.
  3. 3Copy one value at a time, copy the whole batch, or download as .txt or .json.
  4. 4Paste any existing UUID into the validator to check its format and detect its version.

Why UUID v4, and why not Math.random()

A UUID v4 is 122 random bits arranged into the standard 8-4-4-4-12 hexadecimal layout, with fixed version (4) and variant bits so it's recognizable as a v4 identifier. With a cryptographically secure random source, collision probability is negligible for virtually any practical dataset size.

Math.random() is not appropriate for identifiers. It's not cryptographically secure, and some JavaScript engines use a smaller internal state than the output suggests, making values more predictable than they look. This tool uses crypto.randomUUID() where supported, falling back to crypto.getRandomValues() with the version/variant bits set per RFC 4122 — never Math.random().

Frequently asked questions

Is Math.random() used anywhere in this generator?

No. This tool uses crypto.randomUUID() where the browser supports it, falling back to crypto.getRandomValues() with RFC 4122 version/variant bits set manually — never Math.random().

What UUID version does this generate?

Version 4 — randomly generated, the most common choice for general-purpose unique identifiers.

Is there a limit on how many UUIDs I can generate at once?

Yes, generation is capped at 1,000 per batch to keep the page responsive.

Planned — not yet published

  • Planned
    UUID v4 vs v7: choosing a primary key format for PostgreSQLIndex locality and write-amplification tradeoffs.
  • Planned
    Why Math.random() is the wrong way to generate identifiersCollision math and the case for `crypto.getRandomValues`.
  • Planned
    Using UUIDs as PostgreSQL primary keys without wrecking index performanceCompanion to the indexing deep-dive article.