piapia123
ja

UUID / ULID / NanoID の生成

生成

処理はすべてブラウザ内で完結します。データは送信されません

出力

一度に ID をまとめて生成し、1行に1件なので、表計算や設定スクリプトにそのまま貼り付けられます。4 つの種類にはそれぞれ役割があります。v4 は 122 ビットの完全なランダムで、「推測できない番号」に向きます。v7 は先頭 48 ビットがミリ秒のタイムスタンプなので、文字列として並べ替えると生成時刻の順になり、データベースの主キーにすると新しい行が常にインデックスの末尾に収まります —— v4 のように B ツリーのインデックスページを散らかすことはありません。ULID も時刻順ですが Crockford Base32 で符号化するため 26 文字で済みます。NanoID はさらに短く、21 文字で URL 安全な文字だけを使うので、短縮リンクに向きます。

機能

  • 4 つの種類:UUID v4、UUID v7、ULID、NanoID
  • 一度に 1〜1000 件を生成。1行に1件なので、列ごとコピーするのに便利です
  • UUID v4 のバージョンビットとバリアントビットは RFC 4122 に従って厳密に書き込むので、どんな検証実装でも通ります
  • UUID v7 と ULID は同じバッチでミリ秒のタイムスタンプを共有し、ランダムビットを1件ずつ進めるため、バッチ全体を文字列で並べ替えると生成順になります
  • ULID は Crockford Base32 を使用(見間違えやすい I・L・O・U を除いています)
  • 大文字への切り替え、ハイフンの削除が可能(ハイフンは見た目だけで、値には影響しません)

使い方

  1. 種類(v4 / v7 / ULID / NanoID)を選びます
  2. 個数を設定します。最大 1000 件です
  3. 必要に応じて大文字やハイフンをチェックします
  4. 入力欄は空のままで、「再生成」を押します
  5. 「コピー」で列ごと結果を取り出せます

よくある質問

UUID をパスワードや鍵として使えますか?
使わないでください。UUID は識別子であって、秘密の材料ではありません —— URL、ログ、データベースの主キー、API のパラメータに現れるのが前提の値で、秘密にしようがありません。しかも v7 や ULID は時刻を含むので、生成時刻まで読み取れてしまいます。「推測できない」値が必要なときはパスワード生成(長さ 16 文字以上、文字種はできるだけ多く)を使ってください。鍵が必要なら自作せず、専用の鍵管理に任せてください。
v4 と v7 はどちらを選ぶべきですか?
データベースの主キーには v7 です。時刻順であるということは、挿入される行が常にインデックスの末尾に来る、つまり書き込みが順序どおりに進むということです。v4 は完全にランダムなので、書き込みのたびにインデックスページが散らばり、データ量が増えると書き込み性能の差がはっきり出ます。逆に、ID からレコードの作成時刻を外部に知られたくない場合は v4 を選んでください。既存のシステムが UUID 形式しか受け付けず、v7 は長すぎると感じるなら、ULID や NanoID という選択肢もあります。
同じバッチの v7 は並び替え済みですか?
はい。1 回の生成で作られる v7 はすべて同じミリ秒のタイムスタンプを共有し、rand_a の 12 ビットをカウンタとして1件ずつ進めるので、コピーした列は文字列として並べ替えるとそのまま生成順になります。ただしこの保証はバッチごとです —— 「再生成」をもう一度押せば、それは新しい組になります。
生成した ID は送信されたり記録されたりしますか?
いいえ。乱数はブラウザ内蔵の crypto.getRandomValues から取得し、生成は端末のメモリ内だけで行われます。ページはリクエストを一切送らないので、オフラインでも使えます。

関連ツール