Tool
UUID Generator
Generate UUIDs. v7 by default, v4 or v1 if you need them, v3 or v5 for deterministic hashes from a namespace and name. Batch up to 1000, download, copy, or paste into a SQL INSERT. There is a public API too.
UUID version
Time-ordered. Best default for database keys.
How many
Public API
A stateless GET endpoint. Same generator, callable from any script. CORS is open so you can call it from the browser too. Nothing is logged.
One v7 UUID
GET https://nimoyburrowes.com/api/tools/uuid100 v4 UUIDs as JSON
GET https://nimoyburrowes.com/api/tools/uuid?count=100&v=410 v7 UUIDs, plaintext, one per line (curl-friendly)
GET https://nimoyburrowes.com/api/tools/uuid?count=10&v=7&text=1Deterministic v5 UUID from a DNS name
GET https://nimoyburrowes.com/api/tools/uuid?v=5&namespace=dns&name=example.comv: 1, 3, 4, 5, or 7. Default 7.count: 1 to 1000. Default 1.format: standard, uppercase, no-hyphens, braces, urn. Default standard.namespace: dns, url, oid, x500, nil, or a raw UUID. Only used for v3/v5.name: any string. Only used for v3/v5.text=1: plaintext response, one UUID per line.
Which UUID version to use
- v7
- Time-ordered. The first 48 bits are a Unix millisecond timestamp, so v7 UUIDs sort lexicographically by generation time. This is the best default for database primary keys: unique across systems like v4, but index-friendly like an auto-incrementing integer.
- v4
- Fully random. 122 bits of randomness after the version and variant bits. The universal default before v7 landed; still the right choice when you specifically do not want ordering to leak information.
- v1
- Timestamp plus a host identifier (traditionally the MAC address). Sortable but reveals the machine that generated it. Rarely the right choice today; v7 gives you the ordering without the privacy leak.
- v3 and v5
- Deterministic. Same namespace UUID and same name always produce the same output. v3 uses MD5; v5 uses SHA-1. Use when you need a stable, collision-resistant ID for a stable input (a URL, a filename, a canonical string).
A few pointers
- Postgres has a native
uuidcolumn type. Use it. Do not store UUIDs as text if you can avoid it. - MySQL 8+ has
BIN_TO_UUIDandUUID_TO_BINfor storing UUIDs as 16-byte binary, which is smaller and faster than the 36-byte text form. - If you migrate an existing v4 table to v7, do not backfill old rows with v7 timestamps drawn from now. Either leave the old v4s alone or backfill from the row's
created_at. - Do not use v1 in new work. v7 gives you the same sort order without the MAC address leak.
- UUID-as-URL-slug is fine but ugly. Consider a short random string or an integer id for anything a human will see.
How this tool handles your data
- All generation in the UI happens in your browser via the open-source
uuidnpm package. - The public API endpoint generates on the server, does not log the values it emits, and disables caching so no intermediate proxy holds them.
- The site uses Google Analytics for page-view counts. It does not observe UUID output.
Frequently asked
- Which UUID version should I use?
- For new applications, v7. It gives you the uniqueness guarantees of v4 with the sort order of v1 minus the privacy leak. If you have a strict requirement that IDs cannot be sortable by creation time (say, exposing IDs to end users), use v4. Use v3 or v5 only when you need the same input to always map to the same UUID.
- Why is v7 better than v4 for database primary keys?
- UUID v4 is fully random, which shreds B-tree index locality: every insert lands at a random page, forcing constant page splits and I/O amplification. v7 embeds a millisecond timestamp in the first 48 bits, so inserts land at the end of the index the same way an auto-incrementing integer would. You get sub-millisecond generation, distributed uniqueness, and index-friendly writes.
- Can UUIDs collide?
- For v4 and v7, the collision probability is small enough that you could generate a billion UUIDs per second for a century and still be extremely unlikely to see a collision. For v3 and v5, collisions are possible only if the underlying hash function (MD5 or SHA-1) is broken for the inputs you use, which is not a realistic concern for well-chosen namespaces.
- Are UUIDs case-sensitive?
- Canonically UUIDs are written in lowercase, but the standard treats them as case-insensitive. Most databases and libraries normalise on read. Use the uppercase format when a system explicitly requires it (some Windows APIs and older .NET code).
- What is the difference between UUID and GUID?
- GUID is Microsoft's name for the same thing. GUIDs are usually rendered in braces ({...}) and often uppercase. This generator has both formats built in.
- Is the API rate-limited?
- Not currently. It is a stateless endpoint and generation is cheap. If it starts being abused, a per-IP rate limit will land. For heavy use, generate locally with the uuid npm package instead of hammering the endpoint.
- Does the API log the UUIDs it returns?
- No. The route is stateless, cache-disabled, and does not write the emitted values to any log. Each call generates fresh UUIDs and forgets them the moment the response is sent.
- Can I use these UUIDs as passwords?
- You can, but you should not. A v4 UUID has 122 bits of entropy, which is strong, but it is formatted with hyphens and hex digits that are annoying to type. Use the password generator instead. For randomly generated tokens meant to be stored and never typed, a UUID is fine.
More tools
All tools →Password Generator
Open →Random passwords, easy-to-read variants, pronounceable passwords, or diceware passphrases. Runs entirely in your browser.
Password Strength Checker
Open →Paste any password and see how strong it really is. Entropy, estimated crack time, and specific suggestions. Never leaves your browser.