标识符

ULID 生成器与时间解码

生成一批标识符,或逐行检查已有值。生成需手动执行,解码默认自动更新。

ULID 生成器

输入

留空时,执行生成的那一刻只采集一次当前毫秒,整批共用。也可输入 0 至 281474976710655 的整数;不猜测秒数,也不接受 ISO 日期。

所有处理均在当前浏览器内完成,输入不会发送到服务器。

结果

参数设置

开启:首个 80 位尾部使用安全随机值,后续逐个加一。关闭:每个尾部独立随机。每次点击都是新批次,批次之间不保证顺序。

生成数量为 1–1,000;解码最多 1,000 个物理行、100,000 个 UTF-16 码元。导出始终包含全部结果。

选择参数后运行。

排查日志时,看到两个先后顺序反常的标识符,通常需要先确认其中的时间字段。ULID 生成器把内嵌毫秒、随机尾部和批内顺序放在一起,方便区分时间差异与同一毫秒内的随机差异。

制作测试数据时,指定同一个毫秒可以固定时间前缀,但不会固定随机尾部。检查已有数据时,排序报告保留来源行号,重复值也逐条保留,便于回到原文核对。

为什么使用这个 ULID 生成器

直接核对毫秒与时间前缀

ULID 生成器将前 10 个时间字符和后 16 个随机字符拆开,同时展示整数毫秒和 UTC 日期。无需从日期显示反推单位,测试时传入秒数造成的偏差也更容易发现。

一条标识符拆成连接时钟的时间前缀和不透明的随机尾部。

排序后仍能找到原始位置

排序仅改变报告中的记录顺序,不改写输入。每条记录携带 sourceLine,即使有重复值也能追溯来源,方便定位同毫秒内尾部不同造成的先后变化。

乱序标识符通过连线对应到排序后的记录,原始位置保持可见。

先确认时间单位,再检查顺序

01

用固定毫秒做对照

生成模式的示例只填入一个固定毫秒,不会自动发号。时间留空才取当前时刻;输入 1700000000 也按毫秒处理,不会自动乘以一千。

  • 整批只采一次时间,生成 1,000 条时也一样。
02

按需要选择单调模式

开启后,同一批次的随机尾部逐个递增;关闭后,同毫秒内每个尾部独立随机,排序结果就不一定等于生成顺序。

  • 再次点击会重新随机起步,不继承上一批次的尾部。
03

用来源行号核对排序

切到解码,载入打乱顺序的示例,再选择 ASCII 升序,比较 sourceLine。自动解码防抖 350 毫秒;关闭后可点击解码或按 Ctrl/Cmd+Enter。

  • 输入变化立即禁用导出。示例与清空需预览后应用,且支持一次撤销。

从批量测试到字段检查

批量生成 ULID 测试值

一次生成 1–1,000 个规范大写标识符。自定义时间只固定前缀,首个尾部来自安全随机字节;单调开关决定后续尾部是递增还是重新随机。

查看 ULID 时间戳

ULID 解码报告提供 Unix 毫秒、UTC ISO 时间、时间段、随机段及尾部十六进制。随机字段不包含可恢复的用户、机器或进程身份。

严格校验整批输入

长度不符、非法字符或超过 128 位范围都会标出原始行列。出现错误时整批失败,避免把坏行悄悄丢弃后导出一个看似成功的残缺批次。

导出完整字段报告

生成结果可导出每行一个值的 TXT,也可导出带时间和单调选项的 JSON。解码结果导出完整记录;页面初始只显示 50 条,展开与否不影响导出数量。

字符、时间和单调性的边界

只容许大小写差异
每行必须恰好 26 个 ASCII Crockford Base32 字符。不会把 I/L 变成 1,也不会把 O 变成 0;空格、空行、引号和连字符均不自动清理,重复行不去重。
毫秒范围有明确上限
时间是 48 位无符号整数,范围为 0–281474976710655,首个编码字符只能是 0–7。很远的未来时间仍可符合格式;解出的时间不代表真实创建或插入时间。
单调性仅适用于本次调用
尾部递增溢出时整批报错,不绕回零、不重抽随机数,也不偷偷推进时间。不同点击、标签页和设备没有共享状态;指定过去时间也不会被上一批次修正。
不是 UUID 或访问凭证
两者都可占 128 位,但文本和字段布局不同。本页不提供 UUID 版本转换、数据库存在性查询或身份验证。时间可读、相邻单调值可推知,因此不应当作密码或授权令牌。
批量与输入方式限制
最多生成 1,000 条;解码最多 1,000 个物理行和 100,000 个 UTF-16 码元,超限直接拒绝。不提供文件或 URL 导入、SQL 包装及输入排序写回;排序仅影响报告。

ULID 生成器常见问题

ULID 与 UUID 有什么区别?

ULID 使用 26 个 Crockford Base32 字符,前部编码 48 位毫秒时间。UUID 有版本化的位布局,常见文本为 36 个十六进制字符与连字符。存储宽度相同,不代表两种字符串可以互换,也不能据此判定 UUID 版本。

ULID 的 26 个字符中包含哪些信息?

前 10 个字符对应时间戳,后 16 个字符对应 80 位随机尾部。26 个 Base32 字符可以容纳 130 位,但 ULID 只用 128 位,所以首字符限制为 0–7;尾部不携带业务元数据。

单调 ULID 生成是如何工作的?

这个 ULID 生成器先取一个随机尾部,后续在同一批次内加一并处理进位。一次成功生成的结果严格递增;再次点击会独立起步,不提供跨批次、跨标签页或分布式全局单调保证。

我可以从一个 ULID 恢复出创建时间吗?

可以恢复其中编码的 Unix 毫秒,再显示为 UTC 时间。不过生成者可以自行指定毫秒,也可能使用不准确的时钟,所以恢复出来的是内嵌时间,不是实际事件发生时间的证据。

为什么字母表跳过 I、L、O 和 U?

这是 Crockford 字母表为减少混淆而作的选择。本站接受合法字母的小写形式并转为大写,但对 I、L、O、U 直接报错,避免把一次粘贴或抄写错误静默改成另一个有效值。

有结果不符合预期?

开始使用 ULID 生成器

先用 ULID 生成器创建固定毫秒的测试批次,再解码乱序示例,核对时间前缀和来源行号后导出。