ULID生成器
在线生成和解析 ULID(通用唯一按时间排序标识符),支持批量生成、复制结果、解析已有 ULID 提取时间戳信息。
免费在线工具
Loading…
使用说明
生成 ULID:在“数量”输入框填写要生成的个数(1-100),点击“生成”按钮,结果会显示在文本框中,可点击“复制结果”一键复制。
解析 ULID:在“解析 ULID”区域粘贴一个 26 位的 ULID 字符串,会自动解析出其中编码的时间戳(毫秒)、对应的本地时间和 ISO 格式时间,以及随机部分。也可以点击“加载示例数据”自动生成一个 ULID 并解析。
功能介绍
ULID(Universally Unique Lexicographically Sortable Identifier)是一种 26 位字符的唯一标识符,由 10 位按毫秒精度编码的时间戳和 16 位随机字符组成,使用 Crockford Base32 字母表编码(不含容易混淆的 I、L、O、U)。
相比 UUID,ULID 具有天然的时间可排序性,常用作数据库主键、分布式系统里的唯一 ID,既能保证全局唯一,又能按生成顺序排序,便于索引和分页。
本工具完全在浏览器本地生成,使用 crypto.getRandomValues() 保证随机部分的密码学安全性,不会上传或存储任何数据。
使用场景
数据库主键
作为关系型或 NoSQL 数据库的主键,兼具全局唯一性和按时间自然排序的特性,比自增 ID 更适合分布式场景,比随机 UUID 更利于索引局部性。
分布式系统的唯一 ID 生成
多个服务节点无需协调即可各自生成唯一 ID,同时保留生成顺序信息,便于日志追踪、事件溯源等场景按时间排序。
对象存储的文件命名
为上传的文件生成唯一且按时间可排序的文件名,方便后续按上传时间批量检索或清理。
调试与测试数据构造
开发测试时快速批量生成一批 ULID 作为占位主键或测试数据的唯一标识,并可通过解析功能反查某个 ID 的生成时间用于排查问题。
常见问题
ULID 和 UUID 有什么区别?
UUID(如 v4)是完全随机的 128 位标识符,不具备排序性;ULID 是 26 位字符,前 10 位编码了生成时的毫秒时间戳,因此按字典序排列即等价于按生成时间排序,更适合做数据库主键或需要按时间排序的场景。
ULID 里为什么没有字母 I、L、O、U?
ULID 使用 Crockford Base32 编码,这个编码方案特意去掉了容易和数字混淆的字母(I 和 L 容易看成 1,O 容易看成 0),同时省略了 U 以避免拼出敏感词,目的是提升人工誊写和辨认时的准确性。
生成的 ULID 会重复吗?
同一毫秒内生成的 ULID,时间戳部分相同,但随机部分是 16 位 Base32 字符(约 80 位随机性),使用浏览器原生的 crypto.getRandomValues() 生成,同一毫秒内产生冲突的概率极低,可以安全用作唯一标识符。
可以从 ULID 反推生成时间吗?
可以。ULID 的前 10 位字符直接编码了生成时刻的毫秒级 Unix 时间戳,本工具的“解析 ULID”功能就是把这部分解码还原成具体的时间(本地时间和 ISO 格式),这也是 ULID 相比随机 UUID 的一个额外优势。