UUID / ULID Generator

v4 random, v7 time-ordered, or ULID. Bulk generate 1 to 1000. Copy or download.

UUIDs and ULIDs, generated in your browser. Bulk generate v4, v7, or ULID. Cryptographically secure — no server, no logging. How to use ↓·When to use which ↓
Random 128-bit — no ordering.
Count:
Generated UUID v4s (0)
Click Regenerate to produce IDs.
Generated: 0Total: 0 bytesEach: 0 bytes

How to use

Pick a format with the tabs — UUID v4, UUID v7, or ULID. Set how many to generate at once. IDs appear immediately; hit Regenerate for a new batch.

Toggle uppercase, hyphens, or braces to match your target system's convention. Copy all with one click, or download as a text file.

Keyboard shortcuts

Two shortcuts:

Cmd / Ctrl + RRegenerate the batch
Cmd / Ctrl + EnterCopy all IDs to clipboard

When to use which

UUID v4 — the default when you want a random ID with no coordination. Distributed systems, session tokens, request IDs, one-off things where order doesn't matter.

UUID v7 — when the ID becomes a database primary key. The first 48 bits are a timestamp, so B-tree indexes stay compact. Same 128 bits as v4, same collision-safe randomness, but sortable.

ULID — when you want v7's time-ordering but shorter (26 chars vs 36) and URL-safe (no hyphens, Crockford base-32 skips ambiguous characters like 0/O).

Options

Count — 1, 10, 100, or 1000 IDs per batch.

UppercaseABC-123 vs abc-123. ULIDs default to uppercase; UUIDs default to lowercase per RFC 4122.

Hyphens (UUID only) — with hyphens (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) or without.

Braces — wraps each ID in { }. Standard in some Microsoft contexts.

Format-specific gotchas

Not all databases support UUID v7 natively. Postgres, MySQL, SQLite can store it as text or bytea; some ORMs may not parse the version bits correctly. Test before you commit to it as a primary key type.

ULID lexicographic order. ULIDs sort correctly as strings — that's the whole point. UUID v7 requires binary sort for correct ordering; string sort mostly works because the hex is right-padded per byte, but be aware.

Collision risk is essentially zero. Both UUID v4 (122 bits of randomness) and ULID (80 bits of randomness within one ms) have negligible collision probability at real-world scale.

Uses cryptographic randomness. crypto.randomUUID() and crypto.getRandomValues() under the hood — safe for tokens and IDs where guessability matters. Not Math.random().

Privacy

Everything runs in your browser. No server involved. IDs are generated by your browser's cryptographic random number generator.

Frequently asked questions

What is the difference between UUID v4 and v7?
v4 is fully random. v7 embeds a timestamp in the first 48 bits, so IDs sort by creation time. v7 is a newer spec (RFC 9562, 2024) meant to be database-friendly as a primary key without the fragmentation of v4.
What is a ULID and how does it compare?
ULID (Universally Unique Lexicographically Sortable Identifier) is a 26-character time-sortable ID. Same time-ordering benefit as UUID v7 but shorter and URL-safe out of the box — Crockford base-32, no hyphens, no ambiguous characters.
Can I trust these IDs for security tokens?
Yes. This tool uses the browser's cryptographic random number generator (crypto.getRandomValues). UUID v4 provides 122 bits of randomness — collision-safe and non-predictable.
What is the maximum count I can generate?
1000 per batch in the UI. If you need more, generate multiple batches or script it directly with crypto.randomUUID() in a loop.
Does the tool send my IDs anywhere?
No. Everything runs in your browser. Generated IDs never leave the page.
Is UUID v7 stable enough for production?
The spec was finalized in RFC 9562 (May 2024). Postgres 18+ and many other databases support it natively. Verify your specific stack — some older ORMs may not handle the version bits correctly yet.