跳至內容

UUID 產生器

產生 UUID v4(隨機)或 v7(時間戳,可排序)——一次最多 1,000 個。

版本
數量
0 個 UUID

    這個工具的用途

    UUID(RFC 9562)是 128-bit 的識別碼,可以在不需要伺服器協調的情況下 本地產生,且基本上不會重複。本工具產生 UUID v4 (隨機)用於一般情境,與 UUID v7 (時間戳前綴)用於需要排序的資料庫主鍵。所有產生都透過瀏覽器內建的 Web Crypto API 完成。

    使用步驟

    選擇版本、選擇數量(1、10、100,或自訂),按下 Generate。可一鍵複製全部,或下載為文字檔。

    v4 範例:

    f47ac10b-58cc-4372-a567-0e02b2c3d479

    v7 範例(前 48 bits 是 Unix-ms 時間戳——這顆是 2024-07-04 14:23 UTC 產生):

    0190b3ac-3e80-72f8-9a7e-1d4b6e5f8c21

    限制與邊界情況

    • v4 完全隨機。 每個 UUID 獨立——分布性極佳,但對 B-tree 索引非常不友善(每筆插入都落在隨機位置)。
    • v7 帶時間戳。 字典序排序剛好等於建立時間,DB 索引能維持緊湊。代價:前 48 bits 會洩漏建立時間(看到 UUID 的人都看得到)。
    • 完整規格請看 RFC 9562。v1/v3/v5/v6/v8 也存在但現代很少是正確選擇。
    • 兩個版本都是 128 bits,寫成 32 個 hex 字元,以連字號分隔在 8/12/16/20 位置。

    常見問題

    該用 v4 還是 v7?
    不會放進排序索引的(request ID、session token、檔名)用 v4。資料庫主鍵——尤其是 B-tree 系統(PostgreSQL、MySQL、SQLite)——用 v7,避免隨機 ID 造成的寫入放大。
    輸出是密碼學等級隨機嗎?
    是。v4 和 v7 都用 crypto.getRandomValues / crypto.randomUUID,瀏覽器底層使用 CSPRNG,不是 Math.random()。
    有任何東西會送到伺服器嗎?
    不會。所有產生都透過瀏覽器內的 Web Crypto API,本頁從不上傳任何資料。
    為什麼 v7 可以排序?
    前 48 bits 是建立當下的 Unix 毫秒時間戳。較晚產生的 UUID 以字串比較會排在較早產生的之後,不需特殊索引。
    一次可以產生多少?
    最多 1,000 個。需要更多可以多按幾次,或直接呼叫 UUID lib。
    v4 真的不會撞嗎?
    數學上可能,實務上不會。122 bits 熵代表你要產 ~2.7 × 10^18 個 v4 UUID 才有 50% 機率撞到一次。