Menu

UUID 生成器

批量生成 v1/v4 UUID,可直接复制。

作者 Nethanel Bar, Co-founder & CEO

最后更新

准备好真正学会编程了吗?

Coddy 让你在浏览器里编写真实代码来学习:互动课程、即时反馈,卡住时还有 AI 帮忙。

UUID 生成器是什么?

UUID 生成器生成的是通用唯一识别码(Universally Unique Identifier),一种 128 位的值,在统计上可以保证不会和任何地方生成的其他 UUID 重复。开发者把它用作数据库行的主键、API 资源的 id、测试数据的名称、消息队列中的消息 id,以及分布式系统中的标识符。

UUID 好用之处在于,每台机器都可以独立生成,并且可以确信别人不会生成相同的值。不需要中央计数器,不需要协调序列,也不需要请求服务器。所以凡是系统需要自行生成 id 而不必征得许可的地方,它都很实用。

GUID(Globally Unique Identifier,全局唯一标识符)是微软对同一种 128 位标识符的叫法。在日常开发中,GUID 和 UUID 指的是同一个东西,只是不同的技术生态习惯用不同的名字。

生成 UUID 时你会学到

  • UUID v4 最常用,完全随机,非常适合做通用的 id。
  • UUID v7 是按时间排序的,唯一性和 v4 一样,但对数据库索引更友好(行大致按时间顺序插入)。
  • UUID 是标识符,不是密钥。除非它属于更完整的安全设计的一部分,否则不要把它当作访问令牌。
  • UUID 显示为 32 个十六进制字符,分成 5 组,用连字符隔开:8-4-4-4-12。

生成 UUID 的步骤

  1. 选择版本

    随机 id 选 v4;需要按时间排序、索引效果好的 id 选 v7;需要时间戳加节点 id 的旧系统选 v1。

  2. 设置数量

    只需要一个 id 时生成单个 UUID;为数据库填充数据或模拟 API 响应时,一次最多可以生成 1,000 个。

  3. 选择格式

    切换大写、连字符和花括号({...}),以符合你的数据库、代码或平台要求的约定。

  4. 点击“复制”或“全部复制”

    复制单个 UUID 或整个列表。所有内容都在你的浏览器本地生成。

UUID 版本速查

五个广泛使用的 UUID 版本,以及各自适合的场景。

版本唯一性来源适用场景
v1时间戳 + MAC 地址旧系统;可能泄露主机的 MAC 地址
v3名称 + 命名空间的 MD5 哈希从字符串推导出的确定性 id
v4加密级随机数大多数应用的默认选择,拿不准时就用它
v5名称 + 命名空间的 SHA-1 哈希和 v3 类似,但哈希更强
v7Unix 时间戳(毫秒)+ 随机数数据库主键,可按时间排序

可以试试的 UUID 示例

一个典型的 UUID v4

随机 id

550e8400-e29b-41d4-a716-446655440000

五组十六进制数字,用连字符隔开。第 13 位的 4 表明这是一个版本 4(随机)的 UUID。

在 JSON 记录中使用 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。

使用 UUID 的常见错误

  • 把 UUID 当作用户拥有某个资源的证明。它只是一个标识符,请求的权限校验要单独做。
  • 把 UUID 用作密码或会话令牌。默认情况下,它的保密性不足以胜任这种用途。
  • 在同一个数据库里混用大写、小写、带花括号和无连字符的格式,却没有明确的规范化步骤。
  • 在高负载的数据库中默认用 UUID v4 作聚簇主键。随机 id 会让索引碎片化,这种场景应该用 v7(或自增 id)。
  • 用 Math.random() 或弱随机数生成器生成 UUID。始终使用平台提供的 crypto.randomUUID() 或等效方法。

UUID 生成器常见问题

怎么生成 UUID?
打开 UUID 生成器点一下就行。在代码中,大多数平台都内置了方法:浏览器和 Node.js 中用 crypto.randomUUID(),Python 中用 uuid.uuid4(),Java 中用 UUID.randomUUID()。
UUID 是用来做什么的?

凡是系统需要全局唯一标识符、又不想和服务器协调的地方,都会用到 UUID。数据库主键、REST 资源 id、分布式事件 id、日志关联 id 和匿名用户 id 都是常见用途。

UUID 和 GUID 一样吗?
在日常开发中,是一样的,它们指的是同一种 128 位标识符格式。GUID 是微软生态中更常用的名字;UUID 则是 IETF 规范(RFC 4122,后由增加了 v6/v7/v8 的 RFC 9562 更新)以及大多数其他平台使用的名字。
应该用哪个 UUID 版本?

通用的随机 id 用 UUID v4。如果想要按时间排序、适合做数据库主键的 id,就用 UUID v7。只有在明确需要从名称生成确定性 id 时,才用 v3 / v5。

两个 UUID 会重复吗?

理论上会,但对于正确生成的 UUID,这个概率小到可以忽略:每秒生成十亿个 v4 UUID,持续 85 年,发生任何一次重复的概率仍然低于十亿分之一。

UUID 应该存成字符串吗?

字符串没问题,而且通用。很多数据库还支持原生的 UUID 类型,用 16 个字节存储,占用空间减半,比较也更快。选择适合你的数据库和工具的格式即可。

了解更多

其他开发者工具

Coddy 编程语言插图

和 Coddy 一起学编程

开始