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.

Uses crypto.getRandomValues for cryptographically secure random generation.

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

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.