无需登录 数据私有 本地保存

Nano ID 批量生成 - 短ID快速生成

10
0
0
0
快捷预设:

准备生成 Nano ID

配置参数后点击「生成」按钮

常见问题与知识点

Nano ID 是一个小巧、安全、URL 友好的唯一字符串 ID 生成器。它使用加密安全的随机数生成器(Web Crypto API),生成的 ID 紧凑高效,非常适合用于数据库主键、文件名、短链接、令牌等场景。相比 UUID,Nano ID 更短且可自定义字符集和长度。其默认配置(21 字符、64 个字符集)提供约 126 位熵,安全性与 UUID(122 位)相当,但长度仅为 UUID 的一半。

UUID(v4)长度为 36 字符(含连字符),提供 122 位熵,使用十六进制字符集(0-9a-f)。
Nano ID 默认长度为 21 字符,提供约 126 位熵,使用 64 个字符(A-Za-z0-9_-),更紧凑且 URL 友好。Nano ID 的优势在于可自定义长度和字符集,体积更小(JS 库仅约 130 字节),生成速度更快。

是的,Nano ID 使用 Web Crypto API(crypto.getRandomValues)生成随机数,这是浏览器原生的加密安全随机数生成器,无法被预测。默认配置下 126 位熵意味着碰撞概率极低——即使每秒生成 10 亿个 ID,也需要约 1.5 亿年才有 1% 的概率发生一次碰撞。Nano ID 已被广泛应用于生产环境,包括大型项目和框架。

使用 64 个字符、长度 21 时,总熵为 21 × log₂(64) = 21 × 6 = 126 位。这与 UUID v4 的 122 位熵相当,提供了同等级别的安全性。21 个字符在保持紧凑的同时,确保了足够的唯一性。这个长度也被证明是性能和安全性之间的最佳平衡点。

碰撞概率可使用生日悖论公式估算:p ≈ n² / (2 × S^L),其中 n 为 ID 数量,S 为字符集大小,L 为长度。
一般建议:
• 低风险场景(临时标识):熵 ≥ 64 位
• 中等风险(用户会话):熵 ≥ 80 位
• 高风险(安全令牌、主键):熵 ≥ 128 位
默认 Nano ID(126 位)可满足绝大多数场景。

虽然 Nano ID 的碰撞概率极低,但在批量生成大量短 ID(如长度 ≤ 6)时,启用去重可以确保生成的每个 ID 都是唯一的。去重使用 Set 数据结构跟踪已生成的 ID,如果发现重复会自动重新生成。对于长度 ≥ 8 且使用默认字符集的场景,碰撞概率可忽略不计,去重对性能影响极小。

可以,但需注意:Nano ID 是随机生成的字符串,作为数据库主键时索引性能略低于自增整数或有序 UUID(UUID v7)。如果使用 PostgreSQL、MySQL(InnoDB)等,随机主键可能导致页分裂和索引碎片。建议对性能敏感的场景使用有序标识符,或为 Nano ID 列建立聚集索引外的二级索引。