一个典型的 UUID v4
550e8400-e29b-41d4-a716-446655440000
五组十六进制数字,用连字符隔开。第 13 位的 4 表明这是一个版本 4(随机)的 UUID。
批量生成 v1/v4 UUID,可直接复制。
最后更新
Coddy 让你在浏览器里编写真实代码来学习:互动课程、即时反馈,卡住时还有 AI 帮忙。
UUID 生成器生成的是通用唯一识别码(Universally Unique Identifier),一种 128 位的值,在统计上可以保证不会和任何地方生成的其他 UUID 重复。开发者把它用作数据库行的主键、API 资源的 id、测试数据的名称、消息队列中的消息 id,以及分布式系统中的标识符。
UUID 好用之处在于,每台机器都可以独立生成,并且可以确信别人不会生成相同的值。不需要中央计数器,不需要协调序列,也不需要请求服务器。所以凡是系统需要自行生成 id 而不必征得许可的地方,它都很实用。
GUID(Globally Unique Identifier,全局唯一标识符)是微软对同一种 128 位标识符的叫法。在日常开发中,GUID 和 UUID 指的是同一个东西,只是不同的技术生态习惯用不同的名字。
8-4-4-4-12。随机 id 选 v4;需要按时间排序、索引效果好的 id 选 v7;需要时间戳加节点 id 的旧系统选 v1。
只需要一个 id 时生成单个 UUID;为数据库填充数据或模拟 API 响应时,一次最多可以生成 1,000 个。
切换大写、连字符和花括号({...}),以符合你的数据库、代码或平台要求的约定。
复制单个 UUID 或整个列表。所有内容都在你的浏览器本地生成。
五个广泛使用的 UUID 版本,以及各自适合的场景。
| 版本 | 唯一性来源 | 适用场景 |
|---|---|---|
| v1 | 时间戳 + MAC 地址 | 旧系统;可能泄露主机的 MAC 地址 |
| v3 | 名称 + 命名空间的 MD5 哈希 | 从字符串推导出的确定性 id |
| v4 | 加密级随机数 | 大多数应用的默认选择,拿不准时就用它 |
| v5 | 名称 + 命名空间的 SHA-1 哈希 | 和 v3 类似,但哈希更强 |
| v7 | Unix 时间戳(毫秒)+ 随机数 | 数据库主键,可按时间排序 |
550e8400-e29b-41d4-a716-446655440000
五组十六进制数字,用连字符隔开。第 13 位的 4 表明这是一个版本 4(随机)的 UUID。
{ "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Lesson 1", "createdAt": "2026-04-25T10:00:00Z"}API 通常在 JSON 中以字符串形式提供 UUID。很多数据库还支持原生的 UUID 列类型,用 16 个字节存储,而不是 36 个字符。
550e8400-e29b-41d4-a716-446655440000
550E8400-E29B-41D4-A716-446655440000
{550E8400-E29B-41D4-A716-446655440000}
550e8400e29b41d4a716446655440000
同一个 128 位的值,四种不同的外在格式。在一个项目里选定一种并坚持使用,混用格式会导致令人困惑的比较 bug。
Math.random() 或弱随机数生成器生成 UUID。始终使用平台提供的 crypto.randomUUID() 或等效方法。crypto.randomUUID(),Python 中用 uuid.uuid4(),Java 中用 UUID.randomUUID()。凡是系统需要全局唯一标识符、又不想和服务器协调的地方,都会用到 UUID。数据库主键、REST 资源 id、分布式事件 id、日志关联 id 和匿名用户 id 都是常见用途。
通用的随机 id 用 UUID v4。如果想要按时间排序、适合做数据库主键的 id,就用 UUID v7。只有在明确需要从名称生成确定性 id 时,才用 v3 / v5。
理论上会,但对于正确生成的 UUID,这个概率小到可以忽略:每秒生成十亿个 v4 UUID,持续 85 年,发生任何一次重复的概率仍然低于十亿分之一。
字符串没问题,而且通用。很多数据库还支持原生的 UUID 类型,用 16 个字节存储,占用空间减半,比较也更快。选择适合你的数据库和工具的格式即可。