先确认接收方接受什么
NanoID 默认使用 21 个 URL 安全字符,CUID2 默认长度为 24。自定义字符表只适用于 NanoID;重复字符会报错,不会作为额外的随机权重。
- 修改任何参数都会让已有结果过期,需要再次主动生成。
标识符
选择算法生成新批次,或检查 CUID、KSUID 中实际存在的字段。
在下方选择算法和参数。每次主动生成都会创建新批次;修改参数只会让上一批结果过期,不会悄悄生成新的 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 生成器只展示算法实际支持的参数。NanoID 可以缩短,而 KSUID 固定为 27 个字符;强行截短会破坏编码,不能再当成原来的格式使用。
CUID 与 KSUID 的字段报告可以展开时间和相应的随机部分。NanoID 和 CUID2 不提供伪造的创建时间;即便能读出时间,也只是字符串携带的值,不能证明实际事件发生时间。
NanoID 默认使用 21 个 URL 安全字符,CUID2 默认长度为 24。自定义字符表只适用于 NanoID;重复字符会报错,不会作为额外的随机权重。
碰撞概率使用预计总发行量,和当前生成多少条是两回事。KSUID 需要填写共享同一个时间秒的数量;旧版 CUID 不适用简单的均匀字符串模型。
预览先显示 50 条,每次可追加显示 100 条;复制和下载仍包含全部记录。解码中任何非空行不合法,整批都会失败,避免静默遗漏。
提供 URL 安全字符、十六进制、纯数字和自定义字符表。使用官方拒绝采样算法,避免字符数不是二的幂时直接取模造成偏差。
CUID2 通过 SHA3-512 混合时间、随机盐、计数和会话指纹,以小写字母开头。可选长度为 2–32,不能编辑其内部字段,也不改变固定字符集。
结构依次为 c 前缀、Base36 毫秒、四字符计数、四字符指纹槽位和八字符随机后缀。这里使用随机会话标识填充指纹,不读取设备信息。
KSUID 将 20 字节编码为 27 个区分大小写的 Base62 字符。前四字节是相对 Unix 1400000000 的秒偏移,后十六字节为随机载荷;解码同时提供 UTC 与载荷十六进制。
可以。在 NanoID 模式中选自定义字符表,输入 2–64 个不重复的可见 ASCII 字符。重复字符、空格和不支持的 Unicode 字符都会报错;其他算法保持各自固定的字符表。
没有更严格的目标格式时,可从默认 21 位开始。64 个字符、21 个位置提供 126 位理想空间。缩短长度或改成纯数字都会显著减少组合,应结合预计总发行量评估。
NanoID 使用更大的可用字符表,在默认 21 位下提供与 UUID v4 接近的随机空间;常见带连字符 UUID 文本为 36 位。如果数据库列或协议要求 UUID,就不能直接替换成 NanoID。
任何有限的随机空间都可能重复。这里展示的是独立均匀抽样下的生日近似,不是绝不重复的承诺。缩短字符、提高发行量会增加风险;生产系统仍应设置唯一约束与冲突处理。
先看协议和存储要求,再决定是否需要可读时间、固定长度或自定义字符。CUID2 不公开时间字段,KSUID 可以按秒进行粗略排序;旧 CUID 仅用于兼容。不要只按生成速度或字符串长短决定。
有结果不符合预期?