Privacy-first ID generators
Generate UUIDs, NanoIDs, ULIDs and more — entirely in your browser. No analytics on your IDs, no server round-trip, no logging.
UUID v4
Random, 128-bit
UUID v7
Time-ordered, sortable
UUID v5 / v3
Namespace + name (SHA-1 / MD5)
UUID v6
Reordered v1, time-sortable
NanoID
Short, URL-safe, configurable
ULID
Lexicographically sortable
Generating IDs in distributed systems
The big-picture guide — Snowflake, UUID v4 and v7, ULID, and KSUID, with a decision framework for new projects.
UUID versions explained
Side-by-side comparison of v1 through v8 — what they are, when to use them, and what to avoid.
UUID v7 in .NET: the byte-order pitfall
Why Guid.ToByteArray() silently breaks v7's sequential ordering, and how to fix it.
UUID v7 in PostgreSQL: a practical guide
How to generate v7 UUIDs, storage and index characteristics, and the gotchas to watch for as primary keys.
UUID vs auto-increment primary keys
A practical decision guide — performance, privacy, distributed generation, and when to use each.
NanoID vs UUID
Size, encoding, ecosystem support — and the cases where each format is the right choice.
How to choose a format
The generators here cover three broad families, and picking the right one is mostly a question of what you need the identifier to do.
Random identifiers — UUID v4 and NanoID — are unguessable and carry no embedded information, which makes them the right choice for public tokens, share links, and anywhere a value shouldn't reveal when or in what order it was created.
Time-ordered identifiers — UUID v7, UUID v6, and ULID — sort by creation time, so they work well as database primary keys without fragmenting a B-tree index the way random values do.
Name-based identifiers — UUID v5 and v3 — are deterministic: the same namespace and name always produce the same UUID, which is useful for stable IDs derived from data you already have. Each format is explained in depth on its own page and compared in UUID versions explained.