UUID 生成器与校验工具

生成密码学安全的随机 v4 UUID 或可排序的 v7 UUID,一次一个或一千个;还可以检查任意 UUID 或 GUID,查看其版本和内嵌的时间戳。

在浏览器中运行无需注册不上传任何数据

已生成的 UUID

如何使用UUID 生成器

  1. 选择 v4 生成完全随机的 ID,或选择 v7 生成按创建时间排序的 ID。
  2. 设置所需数量(最多 1,000 个),然后点击生成。
  3. 还可以切换为大写、去掉连字符,或加上大括号生成 Microsoft 风格的 GUID。
  4. 点击大号显示的 UUID 即可复制,批量生成时可使用全部复制/下载 .txt。
  5. 把任意 UUID 粘贴到检查器中,即可校验它并读取其版本、变体和时间戳。

什么是 UUID?

UUID(通用唯一识别码,Universally Unique Identifier),在 Microsoft 平台上称为 GUID,是一个 128 位的值,写作分为五组的 32 个十六进制数字:8-4-4-4-12。其格式由 RFC 9562 定义,该标准于 2024 年取代了 RFC 4122。其中一位数字表示版本(第 13 个十六进制数字),第 17 个数字的高位表示变体。

UUID v4 与 UUID v7

v4v7
内容122 个随机位48 位 Unix 毫秒时间戳 + 74 个随机位
排序随机按时间顺序
数据库索引随机插入会导致 B-tree 索引碎片化追加到末尾,对索引友好得多
暴露创建时间否是

对于插入顺序很重要的数据库主键和事件 ID,请使用 v7。当 ID 不能泄露创建时间时,请使用 v4。即使在同一毫秒内生成大量 ID,本生成器也能保证 v7 ID 严格递增。

它们有多唯一?

v4 有 122 个随机位,大约要生成 270 亿亿(2.7×10¹⁸)个 v4 UUID,才会有 50% 的概率出现一次碰撞。本页面使用浏览器的密码学安全随机数生成器(crypto.getRandomValues),绝不使用 Math.random()。

在代码中生成 UUID

// JavaScript (browsers, Node 19+)
crypto.randomUUID()
# Python
import uuid; uuid.uuid4()
-- PostgreSQL 13+
SELECT gen_random_uuid();

常见问题

这些 UUID 可以在生产环境中使用吗?
可以。它们使用 Web Crypto API 的安全随机数生成器在本地生成,并遵循 RFC 9562。不会发送到服务器,也不会被服务器记录。
UUID 和 GUID 有什么区别?
它们是同一个东西。GUID 是 Microsoft 的叫法,通常写成带大括号的大写形式,例如 {3F2504E0-4F89-11D3-9A0C-0305E82C3301}。使用上方的选项即可生成这种格式。
可以从 UUID 中获取创建时间吗?
只有基于时间的版本可以。v7 在前 48 位中存储 Unix 毫秒数,v1 和 v6 存储以 100 纳秒为单位的时间戳。把它粘贴到检查器中即可看到日期。v4 不包含任何时间信息。
应该用 UUID 作为数据库主键吗?
它们非常适合分布式系统和对外公开的 ID。优先选择 v7 而不是 v4,这样新行会落在索引的末尾;并将其存储在原生 uuid 或 16 字节的二进制列中,而不是 36 个字符的字符串。
什么是 nil UUID?
全零值 00000000-0000-0000-0000-000000000000,用作表示“没有 UUID”的占位符。RFC 9562 还定义了全为 f 的 max UUID。

相关工具