在线 ULID 生成器
在你的浏览器中生成可排序的 ULID、解码其中内嵌的时间戳,并在 ULID 与 UUID 之间转换。不上传任何内容。
这款 ULID 生成器完全在你的浏览器中运行。随机性来自 Web Crypto API,你生成、解码或转换的 ULID 绝不会离开你的设备,也不会到达 ArrayKit。
打开 UUID 生成器
关于 ULID 生成器
这款 ULID 生成器可创建 ULID——一种按字典序可排序的标识符,它把一个 48 位的毫秒时间戳和 80 位的随机性打包进一个紧凑的 26 字符 Crockford base32 字符串中。你可以生成单个 ULID 或成百上千的一批,切换单调模式让在同一毫秒内生成的 ID 仍按创建顺序排序,并按你数据库偏好的格式切换大小写。解码模式则相反:粘贴任意 ULID,即可读回精确的创建时间,以纪元毫秒和一个 ISO-8601 时间戳呈现。内置的转换器可把一个 ULID 转换为它等价的 128 位 UUID 并转换回来,不丢失一个比特。当你需要按时间排序的数据库键、日志关联 ID,或一个 UUID 的替代方案时,它都很有用。随机字节来自你浏览器的 Web Crypto API,每个 ULID 都在你的设备上构建,因此你生成的任何内容都绝不会发送到服务器。
功能特性
- 生成单个 ULID,或一次性生成最多 500 个的一批
- 单调模式递增随机字段,让同一毫秒的 ID 仍能正确排序
- 使用 Web Crypto API,为末 80 位提供强随机性
- 把任意 ULID 解码为它内嵌的纪元毫秒和 ISO-8601 时间戳
- 在一个 ULID 和它等价的 128 位 UUID 之间无损转换
- 大写或小写输出,以匹配你的架构
- Crockford base32 字母表跳过 I、L、O 和 U,以避免易混淆的拼写错误
- 一键复制整批或单个 ID
如何使用 ULID 生成器
- 保持选中生成标签页,并设置你需要多少个 ULID
- 为按时间排序的键开启「单调」,或关闭以获得独立的随机后缀
- 从输出框复制这个 ULID 或整批
- 切换到「解码」读取一个 ULID 的时间戳,或用「ULID 转 UUID」进行转换
示例
输入
01ARZ3NDEKTSV4RRFFQ69G5FAV
输出
timestamp: 1469922850259 (2016-07-30T23:54:10.259Z)
uuid: 01563e3a-b5d3-d676-4c61-efb99302bd5b
前 10 个字符解码为创建时间;全部 128 位映射到一个 UUID。
常见错误与故障排除
- 解码报告 ULID 无效,尽管它看起来没错。 — 一个 ULID 恰好是 26 个字符。请移除两侧的引号或空白,并注意首个字符必须是 0–7,以免 48 位时间戳溢出。
- 在紧密循环中创建的两个 ULID 排序错乱。 — 开启「单调」。没有它,共享同一毫秒的 ID 会得到独立的随机后缀,可能以任意顺序排序。
- 数据库拒绝小写的 ULID。 — Crockford base32 规范上是大写的。请关闭「小写」开关,或以不区分大小写的方式存储它们,因为解码两种大小写都接受。
- 转换出的 UUID 看起来不像一个版本 4 的 UUID。 — 一个 ULID 没有版本或变体位,因此它的 UUID 形式在版本半字节处不会带 4。这是预期的——转换保留的是原始的 128 位,而非 UUID 的布局。
常见问题
- 什么是 ULID,它与 UUID 有何不同?
- ULID 是一个 128 位的标识符,写作 26 个 Crockford base32 字符。与随机的 UUIDv4 不同,它的前导位是一个毫秒时间戳,因此 ULID 作为纯文本就能按创建顺序排序,同时仍全局唯一。
- 单调 ULID 生成是如何工作的?
- 当在同一毫秒内生成多个 ULID 时,单调模式会复用那一毫秒的随机字段,并为每个新 ID 在其基础上加一,而不是抽取新的随机性。这保证了每个 ULID 都严格大于前一个。
- 我可以从一个 ULID 恢复出创建时间吗?
- 可以。前 10 个字符编码了一个 48 位的毫秒时间戳。把一个 ULID 粘贴进解码模式,本工具会显示精确的纪元毫秒值以及匹配的 ISO-8601 日期和时间。
- ULID 转 UUID 的转换可逆吗?
- 可逆。一个 ULID 和一个 UUID 都持有 128 位,因此转换器会把每一位无损地映射过去。把一个 ULID 转换为 UUID 再转换回来,你会精确地得到原来的 ULID。
- 为什么字母表跳过 I、L、O 和 U?
- ULID 使用 Crockford base32,它省略了 I、L、O 和 U,让 ID 易读且难以打错。为方便起见,解码时本工具仍会把 I 和 L 当作 1、把 O 当作 0 接受。
- 我在这里生成的 ULID 是私密的吗?
- 是的。每个 ULID 都在你的浏览器中构建,随机性来自 Web Crypto API。你生成、解码或转换的 ID 绝不会发送到 ArrayKit 或任何服务器。
相关工具
全部 ArrayKit 工具