博客
简体中文

UUID生成器 — 批量生成 UUID v4 和 v7

批量生成 UUID v4 和可排序的 v7

在浏览器中处理 · 不上传任何内容

功能简介

UUID 是一种 128 位的标识符,任何机器都可以独立生成,重复的概率几乎可以忽略,因此常用于数据库主键、文件名和请求追踪。本工具可以生成 v4 或 v7 UUID,每次最多 1000 个。

使用方法

  1. 选择版本:v4 完全随机,v7 按时间排序。
  2. 设置数量,范围为 1 到 1000。
  3. 需要时打开大写,或关闭连字符。
  4. 列表会立即更新。点击复制会把整个列表复制到剪贴板,每行一个 UUID。
  5. 点击“重新生成”可以得到新的一批。

生成原理

  • 输出遵循 RFC 9562(取代了 RFC 4122):32 个十六进制数字,按 8-4-4-4-12 分组。
  • v4 由浏览器的 crypto.randomUUID 生成:版本位为 4,变体位为 10,其余 122 位为随机数。
  • v7 由工具自行构造:48 位以毫秒为单位的 Unix 时间戳、版本 7、12 位计数器、变体位 10,再加 62 位随机数。
  • 同一批内(以及同一浏览器会话中的多批之间)保证排序。 同一毫秒内生成多个 ID 时,12 位计数器会递增。即使时钟停滞或回拨,生成的值也不会小于上一个,所以对字符串排序就能得到创建顺序。如果同一毫秒内计数器即将溢出,时间戳会向前推进 1 毫秒。
  • 所有随机数都来自 crypto.getRandomValues,从不使用 Math.random。

示例

项目 格式
v4 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx(y 为 8、9、a 或 b)
v7 tttttttt-tttt-7xxx-yxxx-xxxxxxxxxxxx(t 为毫秒时间戳,y 为 8、9、a 或 b)
无连字符 连续的 32 个十六进制数字
大写 同样的值,A–F 变为大写

生成一批 v7,再把这些行按字母顺序排序,你会发现顺序完全不变。

常见问题

该选 v4 还是 v7?

只需要唯一 ID 时用 v4。用作数据库主键等场景时选 v7,按创建时间排序的 ID 对索引更友好。

两个 UUID 会重复吗?

理论上会,但 v4 有 122 位随机数,在常规规模下不必担心碰撞。v7 加入了计数器,同一毫秒内生成的 ID 也能保持唯一且有序。

v7 包含时间戳会有问题吗?

v7 的前 48 位是以毫秒为单位的创建时间。只在可以公开创建时间的场合使用它,不能公开时请选 v4。

UUID 会被保存吗?

不会。它们由浏览器的加密随机源生成,不会发送到任何地方。

没找到想要的工具?