Skip to main content

ULID 编号生成器 生成带有嵌入时间戳的可排序 ULID 标识符。

ULID 编号生成器 illustration
📝

ULID 编号生成器

生成带有嵌入时间戳的可排序 ULID 标识符。

1

设置选项

选择数量和大小写首选项。

2

生成

输入任何内容以生成ULID。

3

复制ULID

从输出中复制生成的ULID。

Loading tool...

What Is ULID 编号生成器?

ULID(通用唯一字典排序标识符)生成器创建的128位标识符既是唯一的,又可以按照创建时间进行排序。与UUID不同,ULID在前48位中编码了毫秒级精度的时间戳,其后跟着80位的随机数。这意味着稍后生成的ULID总是在排序上优先于较早的ULID,使其非常适合用作数据库主键、事件日志和任何需要按时间顺序排列的场景。ULID使用Crockford的Base32编码,产生紧凑的26个字符的字符串,这些字符串是URL安全的且区分大小写。

Why Use ULID 编号生成器?

  • 可按创建时间排序 - 新的ID总是排在旧的后面
  • 使用Crockford Base32压缩成26个字符的字符串
  • URL安全且大小写不敏感
  • 兼容UUID 128位存储
  • 嵌入毫秒精度的时间戳

Common Use Cases

数据库主键

使用ULID作为可排序的主键,维护插入顺序而无需额外的时间戳列。

事件源

生成按时间自然排序的有序事件ID。

分布式系统

创建跨服务维护全局时间顺序的唯一ID。

日志条目

为日志条目分配可排序的ID,以便于按时间顺序查询。

Technical Guide

ULID格式是一个26个字符的Crockford Base32字符串:10个字符用于表示48位时间戳(自Unix纪元以来的毫秒数),16个字符用于表示80位随机数。时间戳部分编码了创建时间并提供排序功能--在同一毫秒内生成的ULID将根据其随机组件进一步进行排序。Crockford Base32使用0-9和A-Z(不包括I、L、O、U)字符,以避免歧义。这种编码比十六进制更紧凑(26个字符vs UUID的36个),同时保持相同的128位信息内容。实现使用crypto.getRandomValues()生成随机部分。

Tips & Best Practices

  • 1
    ULID按创建时间lexicographically排序 - 适合数据库排序
  • 2
    前10个字符编码了时间戳 - 可以提取创建时间
  • 3
    ULID大小写不敏感;小写选项是出于样式偏好
  • 4
    26个字符的ULID比36个字符的UUID更紧凑
  • 5
    ULID可以存储在兼容UUID的16字节二进制列中

Related Tools

Frequently Asked Questions

Q ULID与UUID有什么不同?
ULID按创建时间lexicographically排序,更紧凑(26个字符vs 36个字符),且URL安全。UUID是随机的,不能按时间排序。
Q ULID会发生碰撞吗?
每毫秒有80个随机位,因此同一毫秒内生成的ID发生碰撞的概率约为2^80。
Q 可以从ULID中提取时间戳吗?
是的,前10个字符编码了自Unix epoch以来的创建时间戳(毫秒)。
Q ULID是否URL安全?
是的,ULID仅使用字母数字字符(Crockford Base32),且无需编码即可在URL中使用。
Q 应该使用UUID还是ULID?
当需要可排序的ID(数据库键、事件日志)时,使用ULID。当顺序无关紧要或与现有的UUID系统兼容时,使用UUID。

About This Tool

ULID 编号生成器 is a free online tool by FreeToolkit.ai. All processing happens directly in your browser — your data never leaves your device. No registration or installation required.