自 2010 年 · 每月支援超過 200 萬次工具執行
自 2010 年
加到 Chrome

我的工具箱

自動模式

尚未收藏任何工具。

升級為高級版
相關工具
URL Slug 產生器wpa密鑰生成器Django密鑰生成器WordPress安全密鑰生成器
主頁 > 隨機工具
 

隨機 NanoID 產生器

產生密碼學安全的 NanoID,作為較短的 UUID 替代方案。可自訂字元集與 8 到 64 位長度,並批次產生、估算碰撞機率。

免費使用無需註冊2026年2月更新
隨機 NanoID 產生器立即免費試用 ▼
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-
64 個唯一字元
每個 ID 前添加的可選前綴(例如 "usr_"、"doc_"、"tx-")

Embed 隨機 NanoID 產生器 Widget

隨機 NanoID 產生器

歡迎使用隨機 NanoID 產生器,這是一個強大的在線工具,用於產生安全、URL 友好的唯一字串標識符。NanoID 是 UUID (通用唯一識別碼) 的現代、輕量級替代方案,提供更短的 ID 且具有相當的抗碰撞性。無論您是在構建 API、資料庫、URL 縮短器還是分布式系統,此產生器都提供具有可定制字母表、可調節長度和實時碰撞機率分析的加密安全 ID。

什麼是 NanoID?

NanoID 是一個微型、安全、URL 友好的唯一字串 ID 產生器,最初由 Andrey Sitnik 為 JavaScript 創建。此後,它已被移植到所有主要的程式設計語言中。NanoID 的關鍵創新在於使用更大的字母表(預設 64 個字元)而不是 UUID 的 16 個十六進制數字,這意味著每字元熵更多,ID 更短。

預設的 NanoID 看起來像:V1StGXR8_Z5jdHi6B-myT

NanoID 與 UUID 對比

特性 NanoID UUID v4
預設長度 21 個字元 36 個字元(包含連字號)
字母表大小 64 個字元 (A-Za-z0-9_-) 16 個字元 (0-9a-f)
~126 位(21 字元) ~122 位(32 十六進制數字)
URL 安全 ✓ 無需編碼 ✗ 連字號在某些語境下需要編碼
可定制 ✓ 字母表和長度 ✗ 固定格式 (8-4-4-4-12)
尺寸效率 ✓ 每字元 6 位 ✗ 每字元 4 位
格式 緊湊字串 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx

此工具如何產生安全的 NanoID

加密隨機性

此產生器使用 Python 的 secrets 模組,該模組提供由操作系統熵源(Linux/macOS 上的 /dev/urandom,Windows 上的 CryptGenRandom)支援的加密安全隨機數產生。NanoID 中的每個字元都是從所選字母表中獨立且不可預測地選擇的。

字母表預設

我們提供 9 種精心挑選的字母表預設,以適應不同的用例:

  • NanoID 預設 (64 字元): 標準 NanoID 字母表 A-Za-z0-9_-。URL 安全、緊湊且廣泛兼容。每字元 6 位熵。
  • 字母數字 (62 字元): 僅包含字母和數字,無特殊字元。適用於文件名、資料庫字段以及符號可能導致問題的語境。
  • 十六進制 (16 字元): 傳統的十六進制格式。當 ID 需要與基於十六進制的系統(如 CSS 顏色或雜湊摘要)集成時非常有用。
  • 僅數字 (10 字元): 僅數字 ID。適用於訂單號、參考代碼或僅接受數字的系統。
  • 小寫 / 大寫 (26 字元): 適用於不區分大小寫的系統或追求視覺一致性的單大小寫字母表。
  • 無混淆字元 (57 字元): 移除了在許多字體中容易混淆的字元 (1/l/I,0/O/o)。非常適合人工讀取的代碼,如邀請鏈接、確認號以及任何需要人工輸入的 ID。
  • URL 安全 (66 字元): 根據 RFC 3986 未保留字元擴展的字母表,包含 -._~
  • 自定義字母表: 定義您自己的字元集。字元將自動去重。

碰撞機率解釋

碰撞機率衡量兩個獨立產生的 ID 相同的可能性。這在機率論中受生日問題支配:

  • 總可能 ID: 字母表大小 ^ id 長度。對於預設 NanoID: 64^21 = ~2^126
  • 對於 n 個產生的 ID: 碰撞機率 ~ n^2 / (2 * 總可能數)
  • 使用 1,000 個 ID: 機率極小 (~10^-33)
  • 要達到 1% 碰撞機會(使用預設設置): 您需要約 ~10^18 個 ID (一百京)

此頁面上的碰撞機率計算機根據您選擇的字母表和 ID 長度顯示實時分析,幫助您為您特定的規模做出明智的 ID 配置決策。

如何使用 NanoID 產生器

  1. 選擇字母表預設: 從 9 種預設中選擇或定義自定義字母表。字母表預覽會顯示將要使用的確切字元。
  2. 設置 ID 長度: 選擇 8 到 64 個字元。預設值為 21,使用標準字母表提供約 126 位熵。
  3. 配置可選設置: 為命名空間 ID 添加前綴(例如 "usr_"、"doc_")並選擇數量 (1-50)。
  4. 產生並複製: 點擊「產生 NanoID」來創建您的 ID。使用一鍵複製功能複製單個 ID 或一次性複製所有 ID。

NanoID 的應用場景

資料庫主鍵

NanoID 是資料庫極佳的主鍵。它們比 UUID 短(21 對 36 個字元),節省存儲空間並減小索引大小。使用前綴如 "usr_" 或 "ord_" 使 ID 具有自我描述性。

API 資源標識符

NanoID 預設 URL 安全,使其成為 REST API 端點的理想選擇:/api/users/V1StGXR8_Z5jdHi6B-myT。無需 URL 編碼,且在日誌和 URL 中看起來很整潔。

URL 縮短器

具有預設字母表的 10 字元 NanoID 提供 64^10 = ~10^18 種可能組合——足以滿足任何 URL 縮短器的需求。無混淆字元字母表在這裡特別有用,因為使用者可能需要手動輸入短 URL。

會話令牌和 CSRF 令牌

由於此工具使用加密隨機性,產生的 ID 適用於安全令牌。對於敏感的安全應用,請使用更長的長度(32-64 個字元)。

分布式系統

NanoID 可以在多個伺服器上獨立產生而無需協調,不像自動遞增整數。即使在大規模情況下,碰撞機率也微乎其微。

文件名命名

使用字母數字預設可在所有操作系統上實現安全的文件名。沒有特殊字元意味著在 Windows、macOS 或 Linux 上沒有轉義問題。

選擇合適的長度

長度 熵 (64 字元字母表) 最適用於 1% 碰撞閾值
8 48 位 短 URL, 小數據集 ~1600 萬個 ID
12 72 位 通用目的, 中型數據集 ~680 億個 ID
16 96 位 大型系統, 高吞吐量 ~280 萬億個 ID
21 126 位 預設, 大多數應用 ~10^18 個 ID
32 192 位 安全令牌, 超級安全 ~10^28 個 ID
64 384 位 最大安全性 ~10^57 個 ID

代碼示例

JavaScript (使用 nanoid 軟體包)

import { nanoid } from 'nanoid';

// 預設:21 字元, URL 安全字母表
const id = nanoid(); // "V1StGXR8_Z5jdHi6B-myT"

// 自定義長度
const shortId = nanoid(10); // "IRFa-VaY2b"

// 自定義字母表
import { customAlphabet } from 'nanoid';
const hexId = customAlphabet('0123456789abcdef', 12);

Python (使用 nanoid 軟體包)

from nanoid import generate

# 預設 NanoID
id = generate() # "V1StGXR8_Z5jdHi6B-myT"

# 自定義長度和字母表
id = generate('0123456789abcdef', 12)

常見問題

什麼是 NanoID,它與 UUID 有什麼區別?

NanoID 是一個微型、安全、URL 友好的唯一字串 ID 產生器。它預設長度為 21 個字元(而 UUID 為 36 個字元),使用更大的字母表 (A-Za-z0-9_-) 以獲得更多的每字元熵,無需編碼即可實現 URL 安全,且沒有固定的格式或連字號。NanoID 能夠以更少的字元實現與 UUID v4 相似的抗碰撞性,因為它使用了 64 個符號而不是 16 個十六進制數字。

此工具產生的 NanoID 安全嗎?

此工具使用 Python 的 secrets 模組,該模組提供由操作系統熵源支援的加密安全隨機數產生。每個字元都是獨立且不可預測地選擇的。使用標準字母表的預設 21 字元 NanoID 具有約 126 位熵,與 UUID v4 的約 122 位熵相當。

我的項目應該使用多長的 NanoID?

預設長度 21 個字元在使用標準字母表時提供約 126 位熵,足以滿足大多數應用。對於 URL 縮短器或面向使用者的 ID, 8-12 個字元可能就足夠了,具體取決於您的總 ID 數量。對於產生數百萬個 ID 的分布式系統,21 個以上的字元可確保碰撞機率微乎其微。使用碰撞機率計算機為您特定的用例找到合適的長度。

我可以將 NanoID 用作資料庫主鍵嗎?

可以,NanoID 非常適合作為資料庫主鍵。它們緊湊(21 個字元對比 UUID 的 36 個字元)、URL 安全,並且具有出色的抗碰撞性。然而,與自動遞增的整數不同,它們不是順序的——因此如果您的資料庫使用 B 樹索引,隨機 ID 可能會導致更多的頁面拆分。考慮使用前綴(如 'usr_' 或 'ord_')使 ID 具有自我描述性。

什麼是「無混淆字元」字母表預設?

無混淆字元 (No-Lookalike) 預設移除了在許多字體中看起來相似的字元:1/l/I(數字 1、小写字母 L、大寫字母 I)和 0/O/o(數字 0、大寫字母 O、小寫字母 O)。這使得 ID 更易於閱讀、記錄和口頭交流。它非常適合面向使用者的 ID,如邀請碼、確認號或任何需要人工輸入的 ID。

額外資源

引用此內容、頁面或工具為:

"隨機 NanoID 產生器" 於 https://MiniWebtool.com/zh-tw/隨機nanoid產生器/,來自 MiniWebtool,https://MiniWebtool.com/

由 miniwebtool 團隊提供。更新日期:2026年2月7日

隨機工具:

熱門與最新工具:

隨機PIN產生器隨機字串生成器隨機使用者代理產生器查看全部 →
主頁 > 隨機工具 > 隨機 NanoID 產生器