可排序、URL 安全的唯一 ID:批量生成、单调递增模式、还能反解出生成时间戳,全程浏览器本地
- 本地处理
- 分类 开发运维
- 适合 格式化、校验、压缩或检查和代码相关的文本。
同一毫秒内也严格升序,适合做有序主键。
解出的时间会显示在这里。
这个工具能做什么
在浏览器里生成 ULID:26 位、按字典序可排序、URL 安全的唯一 ID。 给后端和全栈开发者挑主键方案用:既要全局唯一,又想直接 ORDER BY id 就拿到时间顺序,UUIDv4 做不到的这件事 ULID 能做到。一个 ULID 把 48 位毫秒时间戳放进前 10 位 Crockford Base32 字符,把 80 位随机放进 后 16 位,所以把这堆 ID 当字符串排序,就等于按生成时间排序,不用再单 建一个 created_at 列。一次生成 1 到 100 个;打开单调递增模式,哪怕几 个 ID 落在同一毫秒也严格升序;可转小写,可复制单个或全部。内置解码器 接受任意 ULID,把时间戳还原成毫秒数加上可读的 UTC 与本地时间,并校验 Crockford 字母表(不含 I、L、O、U),填错一位立刻报错。随机数走 crypto.getRandomValues,不上传任何内容。
工具细节
- 输入
- 文本 + 数值
- 页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
- 输出
- 即时结果 + 复制 + 下载
- 结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
- 隐私
- 浏览器本地处理
- 主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
- 保存 / 分享
- 可分享链接状态
- 关键设置会进入 URL,复制链接后别人能复现同一组参数。
- 性能预算
- 首屏 JS ≤ 9 KB
- 没有声明 WASM 依赖,适合快速打开和移动端使用。
- 适用场景
- 开发运维 · 程序员
- 分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。
怎么用
-
1. 输入
把内容粘贴或拖入工具面板。
-
2. 处理
点击按钮,在浏览器内本地处理,文件不上传。
-
3. 复制 / 下载
一键复制结果或下载到本地。
ULID 生成器 适合怎么用
适合穿插在写代码、查问题、做 Review、上线前的小任务里。
适合开发场景
- 格式化、校验、压缩或检查和代码相关的文本。
- 把片段整理好再放进文档、工单、提交或交接材料。
- 不切换工具,快速检查一个小 payload。
开发检查项
- 压缩、混淆这类不可逆处理,先对副本操作。
- 除非确认工具本地处理,不要粘贴密钥和敏感片段。
- 转换后的代码上线前,仍要跑自己的测试或 lint。
下一步可以接着做
这些入口会把当前任务接到更完整的工具链里。
真实使用场景
选一个能按插入时间排序的主键
给新建的 Postgres 表选 ID,又不想为"取最新几行"额外 ORDER BY created_at。把 UUIDv4 换成 ULID:ID 列上的 B-tree 索引大致保持时间 有序,插入集中在索引右端而不是四处散落,"给我最新 50 行"就是 ORDER BY id DESC LIMIT 50。先在这里生成几个,定列类型前先看清格式。
做只追加的事件日志或 outbox
outbox 表或事件流需要的键既要唯一,又要让事件保持发生顺序。打开 单调模式,每个 ULID 都严格大于上一个,哪怕一毫秒内每秒插几千条 也成立。消费者按 ORDER BY id 读,就能完全照生产者写入的顺序回放。
从日志里的 ULID 反查发生时间
工单里贴了个记录 ID,比如 01HN8X...,你想不查库就知道它什么时候 建的。粘进解码器,读出精确到毫秒的时间和对应 UTC。不用碰 schema、 不用查 created_at,时间就写在 ID 里。
给测试夹具灌入真实且有序的 ID
写依赖顺序的集成测试?生成一批单调 ULID 放进夹具,"最新优先"这类 断言就能稳定通过。点全部复制,直接粘到 seed 文件或 JSON 夹具里。
常见踩坑
把 ULID 的随机部分当安全令牌用。80 位随机让碰撞几乎不可能,但时间那一半是完全可读的。ULID 是标识符不是密钥,别拿它当会话 token、密码重置码,或任何必须整体不可猜的东西。
高频插入时忘了开单调模式。同一毫秒生成很多 ID 又没开它,顺序就是随机的,突发流量下"按 ID 排序"会悄悄失准。只要插入顺序必须等于 ID 顺序,就把单调开上。
手写或用错字母表的正则校验 ULID。Crockford Base32 不含 I、L、O、U,放行整个 A–Z 的校验会把畸形 ID 当合法。要按那 32 个字符的精确集合去解码或校验,本工具就是这么做的。
隐私说明
每个 ULID 都在你的浏览器标签页里生成。80 位随机来自 crypto.getRandomValues,和系统生成密钥用的是同一套加密随机源,不是 Math.random,也不会离开页面。解码器同样全程在本地跑,你粘进来查看 时间戳的 ULID 不会被记录或上传。只有设置(数量、单调和小写开关)会写 进可分享的网址;生成的 ID 本身每次点击都重新随机,始终留在本地。
常见问题
类似工具组合
做你这行的人, 还会一起用这些。