标识符

Nano ID 生成器同时支持 CUID、CUID2 和 KSUID

选择算法生成新批次,或检查 CUID、KSUID 中实际存在的字段。

Nano ID 生成器

输入

在下方选择算法和参数。每次主动生成都会创建新批次;修改参数只会让上一批结果过期,不会悄悄生成新的 ID。

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

结果

参数设置

每批 1–1,000 个;NanoID 长度 1–128,CUID2 长度 2–32。自定义字符表需有 2–64 个不重复的可见 ASCII 字符,不含空格。解码最多 128,000 字符、1,000 个 ID。

选择参数后运行。

准备数据库测试数据、短链接或导入文件时,Nano ID 生成器可以帮助你先确认字符与长度要求,再选择格式。目标系统如果要求固定编码,不应只为了短一些就截掉后半段。

四种算法的结构不同:NanoID 可自定义字符表,CUID2 将内部信息散列为不透明字符串,旧版 CUID 保留可读字段,KSUID 则带有精确到秒的时间。

为什么使用 Nano ID 生成器

按格式选择长度

Nano ID 生成器只展示算法实际支持的参数。NanoID 可以缩短,而 KSUID 固定为 27 个字符;强行截短会破坏编码,不能再当成原来的格式使用。

四条不同结构的标识符,分别表示可调长度的随机字符、旧版分段字段、不透明散列和时间加随机载荷。

只解码真实存在的字段

CUID 与 KSUID 的字段报告可以展开时间和相应的随机部分。NanoID 和 CUID2 不提供伪造的创建时间;即便能读出时间,也只是字符串携带的值,不能证明实际事件发生时间。

带结构的标识符分解为时钟和随机载荷,旁边是不提供可恢复时间的不透明标识符。

缩短之前先确认使用条件

01

先确认接收方接受什么

NanoID 默认使用 21 个 URL 安全字符,CUID2 默认长度为 24。自定义字符表只适用于 NanoID;重复字符会报错,不会作为额外的随机权重。

  • 修改任何参数都会让已有结果过期,需要再次主动生成。
02

区分批次数量与发行量

碰撞概率使用预计总发行量,和当前生成多少条是两回事。KSUID 需要填写共享同一个时间秒的数量;旧版 CUID 不适用简单的均匀字符串模型。

  • Ctrl/Cmd+Enter 执行当前任务。只有解码可在输入停顿 350ms 后自动运行。
03

核对结果后再完整导出

预览先显示 50 条,每次可追加显示 100 条;复制和下载仍包含全部记录。解码中任何非空行不合法,整批都会失败,避免静默遗漏。

  • 示例和清空均先预览,应用后可撤销,恢复输入、参数及原结果。

四种格式各有适用参数

NanoID 字符表与长度

提供 URL 安全字符、十六进制、纯数字和自定义字符表。使用官方拒绝采样算法,避免字符数不是二的幂时直接取模造成偏差。

CUID2 散列输出

CUID2 通过 SHA3-512 混合时间、随机盐、计数和会话指纹,以小写字母开头。可选长度为 2–32,不能编辑其内部字段,也不改变固定字符集。

旧版 CUID 兼容格式

结构依次为 c 前缀、Base36 毫秒、四字符计数、四字符指纹槽位和八字符随机后缀。这里使用随机会话标识填充指纹,不读取设备信息。

KSUID 秒级字段报告

KSUID 将 20 字节编码为 27 个区分大小写的 Base62 字符。前四字节是相对 Unix 1400000000 的秒偏移,后十六字节为随机载荷;解码同时提供 UTC 与载荷十六进制。

结果能说明什么,不能保证什么

概率不是查重结果
生日模型估算至少一次重复的机会。CUID2 仅按理想输出空间计算;KSUID 仅比较同一秒。不能以概率代替数据库唯一约束,本工具不会连接数据库,也不会发现抽样重复后悄悄重抽。
时间字段不是创建证明
CUID 的时间段长度可变,解析以末尾固定 16 字符为界。KSUID 仅精确到秒,同秒内与时钟回拨后的顺序都不保证;Nil 和 Max 会标记为哨兵,不能当成真实创建事件。
保留原始格式
不会修剪非空行、修复、排序或去重。必须自行选择 CUID 或 KSUID,因为字符集重叠不能证明算法来源。NanoID 和 CUID2 均不支持反解时间。
参数与输入限制
每批 1–1,000 条;NanoID 长度 1–128,字符表为 2–64 个不重复的可见 ASCII 字符;CUID2 长度 2–32。不支持 Unicode 字符表、空格、字符权重、前缀、自选分隔符或改写 KSUID 时间与载荷。
兼容用途与外部系统
旧 CUID 已弃用,保留它是为了兼容测试。ID 不是密码或权限校验。本页不上传文件、不从 URL 读取、不请求 API,也不在安全随机源失效时降级;UUID、ULID、Snowflake 由其他工具处理。

Nano ID 生成器常见问题

可以使用自定义字符表吗?

可以。在 NanoID 模式中选自定义字符表,输入 2–64 个不重复的可见 ASCII 字符。重复字符、空格和不支持的 Unicode 字符都会报错;其他算法保持各自固定的字符表。

Nano ID 应该选择多长?

没有更严格的目标格式时,可从默认 21 位开始。64 个字符、21 个位置提供 126 位理想空间。缩短长度或改成纯数字都会显著减少组合,应结合预计总发行量评估。

Nano ID 与 UUID 有什么区别?

NanoID 使用更大的可用字符表,在默认 21 位下提供与 UUID v4 接近的随机空间;常见带连字符 UUID 文本为 36 位。如果数据库列或协议要求 UUID,就不能直接替换成 NanoID。

碰撞机率有多高,真的不会重复吗?

任何有限的随机空间都可能重复。这里展示的是独立均匀抽样下的生日近似,不是绝不重复的承诺。缩短字符、提高发行量会增加风险;生产系统仍应设置唯一约束与冲突处理。

建立系统时如何选择合适的 ID 格式?

先看协议和存储要求,再决定是否需要可读时间、固定长度或自定义字符。CUID2 不公开时间字段,KSUID 可以按秒进行粗略排序;旧 CUID 仅用于兼容。不要只按生成速度或字符串长短决定。

有结果不符合预期?

打开 Nano ID 生成器

使用 Nano ID 生成器核对算法、字符要求与碰撞模型,参数确定后再生成一批新结果并导出。