跳到主要内容

UUID 生成

批量生成 UUID v4 / v7,支持去连字符、转大写与格式校验

批量生成 UUID v4 与 v7,数量可调可选转大写、去连字符,适配不同数据库要求粘贴即校验:识别版本号、读出 v7 内嵌时间戳使用浏览器加密级随机数,不使用可预测的伪随机
版本
校验与解析

生成结果已生成 10 个

128 位 UUID 有 122 位是随机的,要生成约 2.7×10¹⁸ 个才有一半概率出现一次碰撞。日常用量下可以放心当唯一 ID 使用。

短随机 ID

exoY57QXhHSW

校验与解析

最后更新:2026-10-10

工具介绍

UUID 是分布式系统里最常用的全局唯一标识符,最常见的是 v4(纯随机)与 v7(时间有序)。本工具支持批量生成、格式转换与反向校验 —— 粘贴一个 UUID 就能知道它是哪个版本,如果是 v7 还能读出它是什么时候生成的,这在排查数据问题时非常有用。

功能特性

UUID v4:纯随机

16 字节中 122 位为随机数,不包含任何时间或机器信息,不可预测,适合会话 ID、令牌等安全场景。

UUID v7:时间有序

前 48 位是毫秒时间戳,因此生成的 ID 大致按时间递增。作为数据库主键时能避免 v4 那种随机写入导致的索引碎片,这是 v7 的核心价值。

加密级随机源

随机数来自 WebCrypto 的 getRandomValues,而非 Math.random。后者是可预测的伪随机,用它生成的 ID 在安全场景下会被枚举出来。

反向校验与解析

粘贴一个 UUID 即可确认格式是否合法、是哪个版本;v7 还能反解出生成时间,方便核对数据的新旧。

短随机 ID

除标准 UUID 外还提供短 ID,可选十六进制、字母数字、纯小写或纯数字四种字符集。采用拒绝采样,保证每个字符出现概率相同。

批量复制与下载

常见用法是一次要几十上百个,因此支持一键复制全部内容或下载为文本文件,直接喂给脚本或数据库。

怎么用

  1. 1

    选择版本

    做数据库主键选 v7(写入有序、索引友好);做会话 ID、令牌等安全标识选 v4(不可预测)。

  2. 2

    设置数量与格式

    按需调整数量。部分数据库把 UUID 存成无连字符的 32 位字符串,勾选「去掉连字符」即可。

  3. 3

    批量生成与取用

    点生成后复制全部或下载为文件,直接粘进代码或导入数据库。

  4. 4

    校验已有 UUID

    拿到一个来源不明的 UUID 时,粘进校验区可确认格式与版本;若是 v7,还能看到它是何时生成的。

参数说明

UUID v4
128 位中 122 位随机,6 位用于版本与变体标识。碰撞概率极低:要生成约 2.7×10¹⁸ 个才有 50% 概率出现一次重复。
UUID v7
前 48 位 Unix 毫秒时间戳,随后 4 位版本号、12 位随机数、2 位变体、62 位随机数。时间有序且仍保证唯一性。
连字符
标准写法是 8-4-4-4-12 共 36 个字符。去掉连字符后为 32 个十六进制字符,某些数据库与 API 采用这种形式。
大小写
RFC 规定十六进制应使用小写,但解析时必须大小写不敏感。部分系统习惯用大写,可按需切换。
短随机 ID
不遵循 UUID 规范,只是定长的随机字符串。适合短链接、订单号等对长度敏感的场景,但长度不足时碰撞概率会显著上升。

适用场景

  • 为数据库表生成主键(UUID v7 对索引更友好)
  • 生成会话 ID、API 令牌等不可预测的标识
  • 为分布式节点生成不会冲突的本地 ID
  • 前端 mock 数据时批量造 ID
  • 校验外部系统传来的 UUID 是否合法
  • 反查一个 UUID v7 的生成时间,排查数据新旧
  • 生成短链接码或订单号

常见问题

关于这个工具,你可能会问

UUID v4 和 v7 该怎么选?

看用途。做数据库主键选 v7 —— 它把时间戳放在高位,生成的 ID 按时间递增,写入时不会像 v4 那样随机分散而导致 B 树索引频繁分裂,这对大表性能影响明显。做会话 ID、令牌这类需要不可预测性的标识则选 v4,因为它不含时间信息,外部无法推测出生成规律。

UUID 会重复吗?

理论上会,但概率极低。v4 有 122 位随机空间,要生成约 2.7×10¹⁸ 个 UUID 才有 50% 的概率出现一次碰撞 —— 按每秒生成十亿个算也需要几百年。实际系统中完全可以当作不重复使用。

为什么不能用 Math.random 生成 UUID?

因为 Math.random 是可预测的伪随机数。攻击者通过观察若干输出就可能推算出后续序列,从而猜出你生成的会话 ID 或令牌。本工具改用 WebCrypto 的 getRandomValues,它是操作系统提供的加密级随机源。如果环境不支持,工具会直接报错而不是悄悄降级。

去连字符后还能用吗?

可以,内容完全一样,只是书写形式不同。标准形式是 8-4-4-4-12 共 36 个字符,去掉连字符后是 32 个十六进制字符。部分数据库(如 MySQL 的 BINARY(16) 存储、某些 API)采用后者,可以省掉一次格式转换。

UUID v7 里的时间戳怎么读?

v7 的前 48 位就是 Unix 毫秒时间戳。本工具的校验区会自动解析并显示出来。这在排查问题时很有用 —— 比如你能看出某条数据是三天前创建的,还是刚刚被写入的。

短随机 ID 和 UUID 有什么区别?

UUID 是遵循 RFC 规范的 128 位标准格式,带版本号与变体位;短 ID 只是定长的随机字符串,不遵循任何标准。短 ID 更适合短链接、订单号这类对长度敏感的场景,但要注意长度越短碰撞概率越高,不适合海量数据。

生成的 ID 会被上传或记录吗?

不会。随机数由你的浏览器生成,不存在任何网络请求,我们既收不到也无法记录生成的内容。你可以断开网络后验证功能依然可用。

为什么 UUID 里有固定的数字?

那是版本号与变体位。第 13 个十六进制字符是版本号(v4 就是 4,v7 就是 7),第 17 个字符的高两位固定为 10(所以只会是 8、9、a、b 之一)。这两个位置不是随机的,而是规范要求,用于让解析器识别版本、避免与其他 UUID 变体冲突。