ULID 生成器

生成 ULID(通用唯一字典排序标识符)。26 个字符,URL 安全,可按时间排序,兼容 UUID。

生成 ULID

创建可排序的唯一标识符

生成的 ULID

点击"生成 ULID"创建唯一标识符

常见问题

什么是 ULID?

一个 26 字符标识符,包含 48 位毫秒时间戳和 80 位随机性,因此 ID 按创建时间排序。

为什么选择 ULID 而不是 UUID?

ULID 按时间字典顺序排序,更短,并且使用 URL 安全Crockford base32,无需管理连字符。

我可以相信这个顺序吗?

跨越不同的毫秒,是的。在同一毫秒内,无法保证两个 ULID 之间的顺序。

ULID 在使用 UUID 的情况下工作吗?

它们会放入大多数字符串列和 API 中,当两种格式必须共存时,ULID 和 UUID 之间的转换非常简单。

ULID 有多长?使用哪些字符?

每个 ULID 固定为 26 个字符,采用 Crockford Base32 编码,包含数字 0-9 以及除 I、L、O、U 之外的字母 A-Z。这种固定长度使数据库列的大小可预测,并且在口头朗读或手动输入 ID 时避免了易混淆的字符。

ULID 可以安全地用于 URL 和文件名吗?

可以。ULID 仅包含大写字母和数字,不含连字符、斜杠或符号,因此在 URL、路径段和文件名中使用时无需百分号编码。26 个字符的长度也能轻松适配路由模式和日志行。

同一毫秒内可以生成多少个 ULID?

80 位的随机数部分在每毫秒内可提供约 2^80 个取值,因此实际上不可能发生碰撞。如果您的应用程序在同一毫秒内创建多个 ID,请使用单调递增模式,它会将随机部分加一,从而保持排序顺序。

如何从 ULID 中读取时间戳?

前 10 个字符编码了以毫秒为单位的 Unix 时间戳,其余 16 个字符是随机数。将这 10 个字符从 Crockford Base32 解码为数字,再用任意 Unix 时间戳工具进行转换,即可得到确切的创建时间。

ULID 结构

每个 ULID 由两部分组成:时间戳和随机数

时间戳 (10 字符) 随机数 (16 字符)

01ARZ3NDEKTSV4RRFFQ69G5FAV

示例:此 ULID 在特定毫秒生成,包含 80 位随机数

时间戳 (48 位)

Unix 纪元(1970-01-01)以来的毫秒数。提供时间排序功能,可持续到 10889 年。

随机数 (80 位)

加密安全的随机值。每毫秒可生成 121 万亿个唯一 ID。

技术规格

ULID 设计为可排序、URL 安全且兼容 UUID

特性

  • 加密安全的随机性
  • 仅客户端生成
  • 字典序可排序
  • 无特殊字符(URL 安全)

规格

  • 26 个字符(128 位)
  • Crockford's Base32 编码
  • 48 位时间戳 + 80 位随机数
  • 每毫秒 121 万个 ID

参考资料与资源