UUID 生成器与校验工具
生成密码学安全的随机 v4 UUID 或可排序的 v7 UUID,一次一个或一千个;还可以检查任意 UUID 或 GUID,查看其版本和内嵌的时间戳。
在浏览器中运行无需注册不上传任何数据
已生成的 UUID
如何使用UUID 生成器
- 选择 v4 生成完全随机的 ID,或选择 v7 生成按创建时间排序的 ID。
- 设置所需数量(最多 1,000 个),然后点击生成。
- 还可以切换为大写、去掉连字符,或加上大括号生成 Microsoft 风格的 GUID。
- 点击大号显示的 UUID 即可复制,批量生成时可使用全部复制/下载 .txt。
- 把任意 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
| v4 | v7 | |
|---|---|---|
| 内容 | 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。