NanoID Generator
One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
Ctrl+Enter Run · Ctrl+Shift+C Copy · Esc Clear
Understand NanoID Generator
生成简短、对 URL 安全的随机标识符,长度和字母表都可配置。
How it works
字节来自 crypto.getRandomValues,并按字母表大小做掩码,超出范围的值被丢弃,从而让每个字符的出现概率相等。默认的 21 个字符取自 64 个符号的字母表(A-Z、a-z、0-9、下划线、连字符),承载 126 位随机性——超过 UUID v4 的 122 位——而只用 21 个字符而非 36 个。缩短 id 或收窄字母表会按比例削减这个数值:21 个十六进制字符只有 84 位。
When to use it
- 出现在 URL 中的对外 id,那里 36 个字符的 UUID 过于笨重。
- 人们可能会到处粘贴的分享链接、邀请码和文档 id。
- 必须在 URL 和命令行中都安全的文件名与对象键。
- 为拒绝其他字符的下游系统生成十六进制或纯数字 id。
- 在存储或 URL 长度确实要紧的系统中缩短 id 长度。
Watch out for
- 缩短不是免费的。从默认字母表的 21 个字符降到 10 个,会把 126 位降到 60 位,在规模上碰撞就不再只是理论问题。请按你的生成量来定长度,而不是按看起来整齐来定。
- 默认字母表包含连字符和下划线。两者对 URL 都是安全的,但以连字符开头的 id 会被许多命令行工具当作参数标志读取——对将作为参数传递的值,请使用纯字母数字集。
- 不可猜测不等于已授权。URL 中的 NanoID 是一种能力凭证:除非另行检查权限,否则收到链接的每个人都拥有该链接所授予的一切访问权。
- 纯数字字母表生成的 id 是字符串,不是数字。把它按整数解析会丢掉前导零,并在约 16 位以上损失精度。
Not the right tool for: 插入顺序要紧的数据库主键。NanoID 是纯随机、不含时间成分的,因此它会像 UUID v4 那样造成索引碎片——那种场景请用 ULID 或 UUID v7。
Frequently Asked Questions
NanoID 和 UUID 相比如何?
NanoID 默认的 21 个字符约有 126 位熵,与 UUID v4(122 位)相当,但只用 21 个字符,而 UUID(带连字符)需要 36 个。它对 URL 安全、不含连字符,也没有 UUID 格式化的额外开销。适合用作 URL、文件名和数据库中的 ID。
如果我把 ID 缩短会怎样?
ID 越短,碰撞风险越高。可以使用 NanoID 的碰撞计算器:按每秒 10 个 ID 计算,21 字符的 ID 需要约 149 年碰撞概率才达到 1%。同样速率下,13 字符的 ID 只需约 12 年。请按你的生成量来选择长度。
可以使用自定义字母表吗?
可以——把默认字母表(A-Za-z0-9_-)换成任意字符。纯数字(0-9)可得到数字外观的 ID,十六进制(0-9a-f)可得到 hex 形式的 ID,也可以用你自己的字符集。工具会显示你所选配置对应的碰撞概率。
How to Use NanoID Generator
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.