NanoID生成器

在线生成NanoID,支持自定义字母表和长度,实时显示碰撞概率,所有计算在浏览器本地完成

当前字母表大小:64 个字符
464
字母表大小
64
ID 长度
21
生成 100万个后碰撞概率
~1%(约 10亿个)
关于 NanoID
  • NanoID 是一个小巧、安全、URL 友好的唯一字符串 ID 生成器,默认使用 64 个字符的字母表,21 位长度
  • 与 UUID v4 相比,NanoID 更短(21 vs 36 字符),且可自定义字母表,适合 URL、文件名等场景
  • 使用密码学安全的随机数生成器(CSPRNG),安全性与 UUID v4 相当
操作说明
  • 选择字母表预设或自定义字母表,调整长度和数量,点击「生成」
  • 碰撞概率统计实时更新,帮助选择合适的长度
  • 支持复制全部或下载为 TXT 文件
注意事项
  • 字母表中的重复字符会降低随机性,建议使用不重复的字符集
  • 字母表越小或长度越短,碰撞概率越高,请根据实际需求选择
  • 所有生成操作均在浏览器本地完成,不会上传任何数据
NanoID 知识详解
NanoID vs UUID 对比
特性NanoID(默认)UUID v4
长度21 字符36 字符(含连字符)
字母表64 个字符(URL安全)16 个字符(十六进制)
安全性✅ CSPRNG✅ CSPRNG
URL 友好✅ 无需编码⚠️ 含连字符
可自定义✅ 字母表和长度❌ 固定格式
包大小~130 字节(核心)内置/无需库
碰撞概率计算

碰撞概率公式(生日悖论近似):

P ≈ 1 - e^(-n² / (2 × alphabet_size^length))

其中 n 为已生成的 ID 数量。默认配置(64字母表,21位)生成 10亿个 ID 后碰撞概率约为 1%。

代码示例

JavaScript / Node.js

import { nanoid } from 'nanoid';
const id = nanoid(); // 'V1StGXR8_Z5jdHi6B-myT'
const shortId = nanoid(10); // 'IRFa-VaY2b'

自定义字母表

import { customAlphabet } from 'nanoid';
const nanoid = customAlphabet('1234567890abcdef', 10);
const id = nanoid(); // 'a3f2b1c9d4'