使用方法
- 选择类型:版本4为随机标识符;版本7或 ULID 为可按时间排序的标识符。
- 将数量设为1到1000之间的数字。
- 若您的系统需要,请勾选大写或用花括号包裹。
- 使用复制复制整个列表,或使用下载将其保存为文本文件,每行一个标识符。
UUID 与 ULID 的格式
UUID 是128位,写作32个十六进制数字,分为8-4-4-4-12的五组,例如 3f2b8c1e-7a9d-4f3e-9b21-6d5e4c3b2a10。版本位表示其种类,变体位表示适用 RFC 的格式。ULID 是128位,写作26个 Crockford base32 字符,例如01ARZ3NDEKTSV4RRFFQ69G5FAV。
UUID 版本 4: 122 个随机位
UUID 版本 7: 48 位时间和另外 74 位
ULID: 48 位时间和 80 个随机位
版本7与 ULID 按时间排序
两者都以 Unix 毫秒时间开头,因此稍后生成的标识符排在较早的之后,这使数据库索引保持高效。在同一批中,于同一毫秒内生成的标识符会递增,因此列表保持有序(RFC 9562 第6.2节,以及 ULID 规范中的单调性规则)。
随机位与标识符的用途
- 随机位来自浏览器的加密随机数生成器,而不只是来自时钟。
- 版本4不含时间,也不排序。顺序无关紧要时请使用它。
- UUID 或 ULID 是标识符,而不是密码或访问密钥。切勿把它当作机密。
计算示例:读取版本7或 ULID 的时间
本页面生成的是新的随机标识符,因此示例必须取自已有的标识符。RFC 9562 附录 A.6 中的 UUID 版本7,其前48位为017f22e279b0,即1,645,557,742,000毫秒,也就是2022-02-22 19:22:22 UTC。
规范中的 ULID 01ARZ3NDEKTSV4RRFFQ69G5FAV 的前十个字符即其时间:01ARZ3NDEK 为1,469,922,850,259毫秒,即2016-07-30 23:54:10.259 UTC。
| 标识符 | 时间部分 | 时间(UTC) |
|---|---|---|
| 017f22e2-79b0-7cc3-98c4-dc0c0c07398f(UUID 版本7) | 1,645,557,742,000毫秒 | 2022-02-22 19:22:22 |
| 01ARZ3NDEKTSV4RRFFQ69G5FAV(ULID) | 1,469,922,850,259毫秒 | 2016-07-30 23:54:10.259 |
常见问题
UUID v4、v7 与 ULID 有什么区别?
版本4是随机的,不含时间。版本7是以 Unix 毫秒时间开头的 UUID,ULID 则是基于同一思路、由26个字符组成的文本。当生成的先后顺序重要时,请使用版本7或 ULID。
生成的两个标识符会相同吗?
版本4的随机空间为2的122次方,因此两个相同的标识符实际上几乎不可能出现。在同一批中,于同一毫秒内生成的版本7和 ULID 标识符绝不会重复,因为它们的计数器是递增的。
这些标识符可以用作密码或访问密钥吗?
不可以。标识符并非为保密而设计,而且版本7和 ULID 会显示其生成的时间。请使用专为机密设计的令牌生成器。
为什么解码版本7或 ULID 时会显示时间?
两者都把生成时间保存在前48位中,以自1970年起的毫秒数表示。任何看到标识符的人都能读出该时间,因此不要在其中放入私人信息。
页面会保存或发送这些标识符吗?
不会。标识符在您的浏览器中生成,不会被保存、上传或记录,关闭页面后也不会留下任何痕迹。
资料来源
- RFC 9562:Universally Unique IDentifiers(UUID),第5.4、5.7和6.2节(IETF,英文)
- ULID 规范(GitHub,ulid/spec,英文)
- Crockford 的 base32 编码(Douglas Crockford,英文)
数据和文字最近核对于2026年11月10日星期二。