跳到主要内容

NanoID 在线生成器

生成 URL 安全的 NanoID,字母表可自定义、长度可调,并实时显示碰撞概率,全部在浏览器本地完成。

  • 本地处理
  • 分类 生成器
  • 适合 从空白开始,先拿到一版可修改的结果。
字母表

有效字符数: 64

长度
数量
生成速率(个/秒)
碰撞概率
熵 (位/每个 ID)
126.0
总键空间
8.51×10^37
约 1% 碰撞所需 ID 数
1.31×10^18
按此速率,约 1% 碰撞需要
41,465,643 年
生成结果
点击"生成"按钮即可生成 NanoID。

配置写入 URL,生成的 ID 本身不进 URL。

这个工具能做什么

为想要更短、URL 安全的唯一标识、又不想引入依赖的开发者打造的 NanoID 生成器。NanoID 是 UUID 的现代轻量替代:默认 21 位 URL 安全 ID 携带 126 位熵(抗碰撞能力几乎等同 UUID v4 的 122 位)却更短、没有连字符、 能直接塞进 URL。本工具用 `crypto.getRandomValues` 加上官方 `nanoid` 包同款的掩码 + 拒绝采样算法生成 ID,分布无偏,绝不退回到不安全的 `Math.random()`。你可以选预设字母表(URL 安全、纯数字、小写、十六 进制),也可以粘自己的自定义字符集,做去掉 O/0、l/1 的免混淆优惠码 特别好用。长度可在 2 到 256 之间调,一次批量生成最多 1000 个,复制 单个或全部,或把整批下载成 .txt。实时碰撞面板显示熵(以位计)、总键 空间、约 1% 碰撞前能生成多少个 ID,以及(按你设定的生成速率)这 大约需要多久。你的配置会写进可分享的 URL,而生成的 ID 留在本地、 每次点击重新随机。零依赖、零服务器往返、100% 浏览器本地。

工具细节

输入
文本 + 数值
页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
输出
即时结果 + 复制 + 下载
结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
隐私
浏览器本地处理
主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
保存 / 分享
可分享链接状态
关键设置会进入 URL,复制链接后别人能复现同一组参数。
性能预算
首屏 JS ≤ 14 KB
没有声明 WASM 依赖,适合快速打开和移动端使用。
适用场景
生成器 · 程序员
分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。

怎么用

  1. 1. 输入

    把内容粘贴或拖入工具面板。

  2. 2. 处理

    点击按钮,在浏览器内本地处理,文件不上传。

  3. 3. 复制 / 下载

    一键复制结果或下载到本地。

NanoID 生成器 适合怎么用

适合快速生成初稿、起步素材或结构化结果,再人工整理后发布。

适合生成任务

  • 从空白开始,先拿到一版可修改的结果。
  • 生成可重复使用的草稿、名称、模板或占位素材。
  • 先探索多个选项,再挑最适合当前任务的。

生成检查项

  • 生成内容发给客户、上页面或进文档前,必须人工看过。
  • 有品牌语气、格式或受众要求时,不要沿用默认值。
  • 只保留真正符合任务的部分。

下一步可以接着做

这些入口会把当前任务接到更完整的工具链里。

  1. 1 UUID 生成器 支持 v4 随机、v7 时序、NIL 全零、Short 短码四种格式,批量生成,纯浏览器运行。 打开
  2. 2 密码生成器 基于 crypto.getRandomValues 的专业级密码生成器,强密码 + Passphrase 双模式,纯浏览器运行。 打开
  3. 3 随机数生成 加密级安全随机整数,单个或批量,可去重,浏览器本地 打开

真实使用场景

  • 给 URL 生成短公开 ID,避免暴露自增整数

    把 `/orders/1042` 暴露出去,等于告诉竞品你大约有一千个订单, 而且别人能顺手遍历 `/orders/1043` `/orders/1044`。做法:自增 主键留在内部,加一列 `public_id`,默认值用 NanoID。字母表选 URL 安全、长度设 12(约 72 位熵,做单表公开句柄绰绰有余)。 在这里批量生成,粘进 seed 迁移脚本,URL 就变成 `/orders/V1StGXR8_Z5j`,既猜不出来又短到能塞进一条推文。 碰撞读数会告诉你 12 位能撑过几十亿行才到 1% 那条线。

  • 做比 UUID v4 更省索引的数据库主键

    UUID v4 有 36 个字符且随机分布,会让 B-tree 索引碎片化。一个 21 位 URL 安全 NanoID 带 126 位熵(唯一性保证基本等同 UUID 的 122 位)每行却少占 15 字节。选 URL 安全预设、长度保持 21、 生成样本,把键空间和"约 1% 碰撞所需 ID 数"对照你预估的写入量 再决定是否定型。需要追加有序仍该用 UUID v7,但做不透明键 NanoID 更轻。

  • 用免混淆字母表生成可人工录入的优惠码 / 邀请码

    打在小票上的优惠码会被疲惫的人重新敲一遍,`O` 和 `0`、`l` 和 `1` 就成了大坑。切到自定义字母表,粘 `ABCDEFGHJKLMNPQRSTUVWXYZ23456789`(去掉 O/0/I/1),长度设 8, 一次生成 500 个。有效字符数读数显示 32 个,碰撞面板告诉你 8 位 约有 40 位键空间,做几十万个码足够,而且数学就摆在眼前, 长度不会估多也不会估少。

  • 给测试夹具和 mock 数据用定长 ID 做种子

    做 API 响应快照测试时,随机 UUID 会让快照每次运行都变动。 一次性生成一批固定 NanoID,粘进 fixtures 文件,快照就稳定了。 下游解析器偏整数就用纯数字预设,要匹配 `[0-9a-f]+` 正则就用 十六进制。把整批下载成 .txt,喂进你的 seed 脚本。

  • 生成适配定宽字段的设备 / 会话 token

    IoT 固件和嵌入式日志常有定宽标识字段,比如正好 16 个字符。 NanoID 能让你把长度卡死,不像 UUID 强制 32 位 hex 加 4 个连 字符。长度设 16、URL 安全字母表,复制一批,每个 token 都正好 塞进字段,带 96 位熵。速率字段还能让你模拟"每秒一万台设备开 通",看碰撞何时在统计上变得有可能。

常见踩坑

  • 用 `Math.random()` 自己手搓 NanoID。它不是密码学安全的,而且有偏,攻击者能预测序列,某些字符还会更常出现。本工具只用 `crypto.getRandomValues`。要照抄算法,连掩码 + 拒绝采样那一步也要抄,不能只抄字节来源。

  • 用 `随机字节 % 字母表长度` 把字节映射成字符。只要字母表大小不是 2 的幂,取模就会把分布偏向前 `256 % 长度` 个字符。正确做法(本工具采用的)是用位掩码再丢弃越界值,这样每个字符等概率出现。

  • 为了让 ID 好看而缩短长度,却不看碰撞面板。64 字符字母表从 21 位砍到 6 位,键空间会从 10^37 掉到约 10^10,几十万个 ID 就进入碰撞区了。砍长度前先拿'约 1% 碰撞所需 ID 数'对照你真实的量。

隐私说明

每个 NanoID 都用浏览器的 `crypto.getRandomValues` 在本地生成。 ID、字母表、数量都不会发到服务器,不记录,不分析。分享时要 知道一点:你的配置(长度、字母表、数量、速率)会写进 URL query string,这样分享链接能还原完整配置,但生成的 ID 本身 被刻意排除在 URL 之外,每次点"生成"都重新随机。所以"分享 链接"只暴露你生成的是哪一类 ID,绝不暴露真实 ID。如果你拿 生成的 ID 当 token,就当真正的密钥来对待。

常见问题

类似工具组合

做你这行的人, 还会一起用这些。

Made by Toolora · 100% client-side · Updated 2026-06-13