UUID Generator

Generate UUIDs the way you actually need them: one for a quick test, a thousand for a migration, formatted as a quoted array or a SQL insert list. Includes time-ordered UUID v7 and ULID, plus an inspector that decodes any UUID you paste.

How to use UUID Generator

  1. Pick a format — UUID v4 for pure randomness, UUID v7 or ULID when ids need to sort by creation time, NanoID for short URL-safe tokens.
  2. Set how many you need, from a single id up to 1,000.
  3. Choose the formatting: uppercase, braces, hyphens removed, or output as a quoted array, JSON, CSV or a SQL INSERT statement.
  4. Copy the batch or download it as a file, and press the regenerate button (or the space bar) for a fresh set.
  5. Paste an existing UUID into the inspector to read back its version, variant and embedded timestamp.

About UUID Generator

A UUID is 128 bits presented as 36 characters, and the version nibble tells you how those bits were produced. Version 4 is pure randomness and remains the sensible default for anything that needs a unique label with no embedded meaning. Version 7, standardised in RFC 9562, keeps the same shape but devotes the leading 48 bits to a Unix millisecond timestamp — which sounds like a small change and is in fact the difference between a database index that stays compact and one that fragments under load.

This generator produces v4 and v7, plus ULID and NanoID, all seeded from the Web Crypto API. The time-ordered formats are monotonic: generate a thousand ids inside the same millisecond and they still sort in creation order, because a counter in the random field increments rather than being re-rolled. That property is easy to skip and is exactly what makes a time-ordered id worth having — without it, ids created in the same tick come back in arbitrary order.

The inspector is the other half of the job. Paste any UUID and it reports the version with a plain-English note on how that version is constructed, the variant field, and — for v1, v6 and v7 — the embedded timestamp converted to a readable date. For v1 it also surfaces the clock sequence and the node identifier, which is worth knowing: a v1 UUID can expose the MAC address of the machine that created it, which is a genuine reason to avoid it in anything public-facing.

Frequently asked questions

Are these UUIDs truly random and safe for production?

Yes. Version 4 UUIDs are built from 16 bytes of crypto.getRandomValues() output with the version and variant bits set per RFC 9562, giving 122 bits of randomness. Collisions are not a practical concern: you would need to generate billions of UUIDs per second for a century before the probability became meaningful.

What is UUID v7 and should I use it instead of v4?

UUID v7 puts a 48-bit millisecond timestamp in the most significant bits, so ids sort by creation time as text or as binary. If you use UUIDs as primary keys, v7 keeps inserts at the right-hand edge of a B-tree index instead of scattering them across every page — often a large write-throughput win in PostgreSQL, MySQL and SQL Server. Use v4 when you specifically do not want the creation time to be visible.

What is the difference between a ULID and a UUID?

A ULID carries the same idea as UUID v7 — 48 bits of timestamp then 80 random bits — but encodes it as 26 characters of Crockford base32 rather than 36 characters of hex. It is shorter, case-insensitive, URL-safe, and omits I, L, O and U so it cannot be misread. UUIDs win on ecosystem support; ULIDs win on ergonomics.

Is anything sent to a server?

No. Generation and inspection happen entirely in your browser, so the ids you produce here are yours alone and no record of them exists anywhere. The tool also works with the network disconnected.

Can I generate UUIDs in bulk?

Yes — up to 1,000 in a single batch, with copy-all and download. The output styles include a quoted array, a JSON array, CSV and a ready-to-run SQL INSERT statement, which covers most seeding and migration jobs without any reformatting.

Are UUIDs case sensitive?

No. The canonical text form is lowercase hexadecimal, but the specification requires implementations to accept uppercase on input, so A1B2 and a1b2 represent the same value. Some databases still compare the string form literally, so stick to lowercase when storing them as text.

Related tools

All generators tools · Browse all 56 free tools →