使用步骤
- 选择 ID 类型。一般用 UUID v4;做数据库主键推荐 v7 或 ULID。
- 设置数量和格式:大写、连字符、花括号,或 Nano ID 的长度。
- 复制列表或下载为文本文件,点「生成」换一批。
- 要查看已有 ID 的信息,粘贴到「解析 ID」里。
参数说明
- UUID v4
- 122 位随机数,所有数据库和编程语言都支持,最常用。
- UUID v7
- RFC 9562(2024 年)定义。前 48 位是毫秒级 Unix 时间戳,新 ID 总是排在旧 ID 后面,能让 PostgreSQL、MySQL 的 B+ 树索引更紧凑、插入更快。
- ULID
- 26 个 Crockford Base32 字符,由 48 位时间戳和 80 位随机数组成。可排序、URL 安全、不区分大小写。
- Nano ID
- 由 64 个 URL 安全字符组成的短随机 ID。21 位时抗碰撞能力与 UUID v4 相当。
各格式对比
| 类型 | 示例 | 长度 | 可排序 |
|---|---|---|---|
| UUID v4 | 9b2e4c1a-7f3d-4e8b-a1c2-5d6e7f8091a2 |
36 | 否 |
| UUID v7 | 0199855e-7a40-7c3b-9e1f-2a3b4c5d6e7f |
36 | 是 |
| ULID | 01K5JQ8H2G7R4T6W9X3Y5Z7A1B |
26 | 是 |
| Nano ID | V1StGXR8_Z5jdHi6B-myT |
21 | 否 |
在代码中生成 UUID
- JavaScript:
crypto.randomUUID()(v4) - Python:
uuid.uuid4();Python 3.14 起支持uuid.uuid7() - PostgreSQL:
gen_random_uuid()(v4);PostgreSQL 18 起支持uuidv7() - Java:
UUID.randomUUID()(v4) - MySQL:
UUID()生成的是 v1,可用UUID_TO_BIN(UUID(), 1)调整字节顺序以改善索引
常见问题
生成的 UUID 会重复吗?
实际上不会。v4 有 122 位随机数,要生成约 2.7 × 10¹⁸ 个,才有 50% 的概率出现一次重复。
主键该用 UUID v4 还是 v7?
新表一般推荐 v7。随机的 v4 会插入到索引的任意位置,导致频繁页分裂、缓存命中差;v7 像自增 ID 一样按时间递增,同时又能保证多台服务器之间不冲突。
UUID v7 会暴露记录的创建时间吗?
会,精确到毫秒。如果创建时间属于敏感信息,对外展示的 ID 请用 v4。
这些 ID 能当作安全令牌吗?
随机部分来自 crypto.getRandomValues,不可预测。但会话、重置密码等令牌建议至少 128 位随机数(例如 22 位的 Nano ID),不要用 v7,因为它的时间戳部分可以猜到。
GUID 和 UUID 是一回事吗?
是的。GUID 是微软对同一种 128 位格式的叫法,常写成大写并带花括号,上面可以直接选择这种格式。
隐私说明
本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。