UUID 生成器
即时生成随机 v4 UUID。支持单个或批量生成,一键复制。免费,基于浏览器,无需服务器。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
先看第 13 位和第 17 位
本工具每次输出的都是 v4。从别处拿到一个 UUID 时,去掉连字符后看两个位置就能判断它是哪种:第 13 位十六进制数字就是版本号;第 17 位换成二进制后,开头两位是 10 的属于 RFC 9562 定义的变体。工具本身不校验、不解析粘贴进来的 UUID,下面的读法用眼睛就能完成。
下面这个值来自 MySQL 8.4 参考手册里 SELECT UUID() 的示例输出:
6ccd780c-baba-1026-9564-5b8c656024db
^ ^
1 9 = 1001
第 13 位是 1,所以这是第 1 版 UUID。手册写明 MySQL 的 UUID() 返回符合 RFC 4122 第 1 版的值:前三组由时间戳拆成低、中、高三段,最后一组是 IEEE 802 节点号,在 FreeBSD、Linux 和 Windows 上取网卡的 MAC 地址。手册同时提醒,这个值虽然唯一,却不一定不可猜测;需要不可预测的场合要用别的方式生成。如果要把 ID 放进对外的订单链接或分享链接,用本工具或应用代码里的 v4 更合适,它不带时间和机器信息。
另一个容易混淆的地方是 IS_UUID()。手册说它只检查格式:长度正确、只含十六进制数字(大小写都行),可以有连字符或花括号。所以 IS_UUID() 返回 1 只说明「长得像 UUID」,不说明它是 v4,第 13 位仍然要自己看。
把 v1 存成二进制时,UUID_TO_BIN(值, 1) 会交换时间的低段和高段,让变化快的部分落在右边,手册说这样能改善索引效率;手册也写明,这种交换只对第 1 版有意义。本工具生成的 v4 没有时间字段,交换不会带来好处,直接用 UUID_TO_BIN(值) 即可。
碰撞要多少个才会发生
v4 有 122 个随机位,共 2122 种可能。按生日问题估算,生成 n 个时出现任意两个相同的概率约为 p = 1 − e−n²/(2 × 2122)。假设一个系统每秒写入 1 万条记录、连续运行 10 年,总共约 3.16 × 1012 个 UUID:
p ≈ 9.4 × 10^-13
也就是不到一万亿分之一。实际遇到的重复,几乎都来自程序错误,比如把同一个值复制给了两条记录,或在测试数据里写死了 UUID,而不是随机位本身。
批量生成与复制
- 批量数量为 1–100;带小数时舍去小数部分,0 和负数按 1 处理,留空或无效时按 5 处理。
- 「全部复制」复制整批,每行一个值;「复制」只复制上方的单个 UUID。
- 「清除」只清空批量结果;在工具内按 Ctrl/Command+L 会清空单个值和批量结果,数量设置保留。
- 输出全部是小写。数据库或接口要求大写时,复制后自己转换即可:RFC 9562 规定大小写表示同一个值。
限制
- 只生成第 4 版。没有大写、去掉连字符、加花括号或
urn:uuid:前缀的选项。 - 每批最多 100 个。
- 依赖
crypto.randomUUID():Chrome 和 Edge 92 起、Firefox 95 起、Safari 15.4 起支持(MDN 浏览器兼容数据)。更旧的浏览器里不会显示 UUID。 - 只生成,不校验,也不解析粘贴进来的 UUID;上面的读法需要手动完成。
FAQ
什么是 UUID?
UUID(通用唯一标识符,RFC 9562)是 128 位的值,写成 5 组共 32 个十六进制数字。第 4 版(v4)UUID 中有 122 位是随机数,两个独立生成的值实际上不会相同。
生成的 UUID 真的是随机的吗?
是的。值来自 Web Crypto API 的 crypto.randomUUID(),它使用浏览器内置的密码学安全随机数生成器,不使用 Math.random()。
UUID 的格式是什么?
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx:第 13 位十六进制数字固定为 4(版本号),第 17 位 y 只会是 8、9、a 或 b(RFC 9562 变体),其余各位都是随机的。工具输出小写;RFC 9562 第 4 节允许大写、小写或混写,读取方必须三种都接受。
一次可以生成多少个 UUID?
每批最多 100 个。数量大于 100 按 100 处理,小于 1 按 1 处理,留空或不是数字时按 5 处理。数量会记在本浏览器里,生成的 UUID 本身不保存。
做数据库主键,用 v4 还是 v7?
v7 以毫秒时间戳开头,新键排在旧键之后,B 树索引的写入集中在末尾;v4 完全随机,写入分散在整个索引里,但不透露创建时间。本工具只生成 v4。
生成的 UUID 会被发送或保存吗?
不会。crypto.randomUUID() 在当前浏览器标签页里运行,值不会发送给 ZeroTool,离开页面后也不保留。页面只把批量数量存进本浏览器的本地存储。页面上的 Google Analytics 只记录点击了生成或批量生成,不包含 UUID 的值。