UUID Generator
One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
Ctrl+Enter Run · Ctrl+Shift+C Copy · Esc Clear
Understand UUID Generator
生成 UUID v4 或 UUID v7 标识符,可以一次生成一个,也可以一次生成至多 100 个。
How it works
UUID 共 128 位,其中六位由版本和变体字段固定,因此 v4 剩下 122 位随机——大约要生成 270 京个之后,碰撞概率才达到 50%。v4 直接来自 crypto.randomUUID,因此随机性即平台的 CSPRNG。v7 把开头的 48 位换成以毫秒计的当前 Unix 时间,其余 74 位填入随机值,这使得 v7 的值作为普通字符串就能按创建顺序排序。
When to use it
- 创建一个客户端在记录发往数据库之前就能生成的主键。
- 为请求或链路打上标记,以便在多个服务之间关联。
- 为上传的文件命名,避免两个用户互相覆盖。
- 填充需要真实且必然互不相同的标识符的测试夹具。
- 当插入顺序影响索引健康时,选择 v7。
Watch out for
- 用 UUID v4 作主键会让 B 树索引产生碎片。每次插入都落在键空间中的随机位置,因此工作集是整个索引,而不只是它的尾部。v7 和 ULID 像自增主键那样追加,从而避开这个问题。
- UUID 不可猜测,但它不是授权。如果一个对象只要知道 id 就能访问,那么任何拿到该 URL 的人都能访问——请同时检查权限。
- UUID v7 会公开它的创建时间。时间戳明文摆在值里,因此任何持有该 id 的人都能精确到毫秒地知道记录是何时创建的。若这一点敏感,请使用 v4。
- 在数据库允许的情况下按 16 字节存储。存成 char(36) 时,一个 UUID 占用的空间超过两倍,而且每次索引比较都要遍历字符串,而不是比较整数。
Not the right tool for: 需要有人读出或输入的短码。36 个字符抄写起来太长——NanoID 或所需长度的随机字符串更合适。
Frequently Asked Questions
UUID v4 和 v7 有什么区别?
UUID v4 是随机生成的,不含时间成分。UUID v7 按时间有序(可按字典序排序),因此更适合作数据库主键,它产生的索引项是顺序递增的。
UUID v4 的唯一性有多强?
UUID v4 有 122 位随机性。生成 10 亿个 UUID 时发生碰撞的概率约为八亿分之一——在实践中基本不可能发生。
应该用 UUID 作数据库主键吗?
UUID v4 会造成数据库索引碎片。UUID v7 或 ULID 是更好的选择,它们按时间有序,插入时落在索引末尾。
How to Use UUID Generator
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.