UUID 在线生成器

免费的 UUID 在线生成工具,支持 UUID v4(随机)与 UUID v7(时间有序,2024 RFC 9562 新标准),可一次性批量生成最多 1000 个,提供大小写、无连字符、大括号等多种格式。基于 Web Crypto API 密码学安全随机数。

最后更新:

10 个 UUID · 使用 Web Crypto API crypto.getRandomValues 生成密码学安全随机数

UUID 各版本对比

版本原理是否有序推荐场景
v1时间戳 + MAC 地址部分已不推荐,泄露 MAC
v3 / v5命名空间 + MD5 / SHA-1需要可重现 UUID 的场景
v4122 位随机通用,但作为索引性能差
v6v1 字段重排为可排序从 v1 迁移
v748 位毫秒时间戳 + 74 位随机新项目首选,数据库主键
v8自定义实现取决于实现特殊定制(罕用)

v6、v7、v8 由RFC 9562(2024 年 5 月发布)定义,取代原 RFC 4122。

各语言生成 UUID

语言UUID v4UUID v7
JavaScriptcrypto.randomUUID()uuid v9+ 包的 v7()
Pythonuuid.uuid4()uuid7 包 / Python 3.13+ uuid.uuid7()
JavaUUID.randomUUID()JDK 21 com.github.f4b6a3:uuid-creator
Gouuid.NewRandom()github.com/google/uuid v1.6+ NewV7()
RustUuid::new_v4()Uuid::now_v7()
PostgreSQLgen_random_uuid() (v13+)uuidv7() (v18+) / pg_uuidv7 扩展
MySQLUUID() 返回 v1自实现或客户端生成

常见问题

UUID v4 和 v7 应该选哪个?

新项目优先选 v7。v4 是完全随机的 128 位,安全性最高但在数据库索引里因为乱序会导致 B+ 树频繁页分裂、写入性能差。v7 把前 48 位换成毫秒时间戳,剩下随机,仍然全球唯一且不可猜测,但天然按时间排序,作为主键时索引性能接近自增 ID。如果你的项目已经用 v4 没问题就不必迁移,新表建议直接上 v7。

UUID 真的全球唯一吗?会不会撞?

理论上有概率,实际可忽略。UUID v4 有 122 位随机性,要在 1 个组织里生成 10 亿条才有约 50% 概率出现一次重复。前提是用密码学安全的随机源(如本工具用的 crypto.getRandomValues)。用 Math.random() 实现的 UUID 是不安全的——质量差且可预测,绝不要在生产用。

UUID 作为数据库主键合适吗?

看场景:分布式系统、需要客户端预生成 ID、安全敏感(隐藏自增 ID 暴露数据量)—— 用 UUID v7。单库应用、写入密集、ID 不需要保密 —— 用自增 BIGINT 性能更好。MySQL 8 的 InnoDB 用 v7 比 v4 性能高 30%~50%。注意:MySQL 用 BINARY(16) 存比 CHAR(36) 节省 55% 空间。

UUID 和 Snowflake / ULID / NanoID 区别是什么?

Snowflake(Twitter):64 位 long,时间戳+机器ID+序列,需要中心化分配 worker ID;ULID:128 位,前 48 位时间戳 + 80 位随机,Crockford Base32 编码(26 字符);NanoID:可自定义长度的 URL-safe 短 ID,没有结构含义;UUID v7:RFC 9562 标准、JS/Java/Go 库支持广。新业务优先选 UUID v7(标准化最好)或 ULID(更短更友好)。

UUID 显示为大写还是小写?带不带连字符?

RFC 4122/9562 规定 UUID 字符串应小写并带连字符(8-4-4-4-12)。但解析时必须不区分大小写、可选连字符。一些场景例外:.NET 的 GUID 默认大括号、Windows 注册表常见 {大写}、URL 友好场景去掉连字符省 4 字节。本工具默认输出小写带连字符(最标准),其他格式按需切换。

为什么 UUID 不适合做短链或邀请码?

UUID 太长(36 字符)且看着像乱码,用户体验差。短链/邀请码建议用 NanoID(默认 21 字符,可配 8-12 字符)或自定义 Base62 短 ID。如果需要不可猜测+短,NanoID 比 UUID 更合适;如果可枚举(如自增数 + Base62 编码),别用 UUID。