ジェネレーター 🔒 ブラウザ内で動作 — データは送信されません

UUIDジェネレーター

v4・v7・v1・v3・v5のUUIDを1件でも1,000件でも生成し、任意のUUIDを解析。

生成したUUID
UUIDを検査

UUID生成ツール - v4・v7・v5・v1のUUIDをオンラインで作成

UUIDは128ビットの識別子で、別々のシステムがそれぞれ勝手に発行しても衝突しないと考えて差し支えありません。この無料ツールはバージョン4(ランダム)、バージョン7(時刻順)、バージョン1(タイムスタンプとノード)、バージョン3と5(名前から導出)を生成できます。1件ずつでも、一度に最大1000件でも、1行ずつ・JSON配列・CSV・SQLの値として出力できます。右側の検査欄に任意の識別子を貼れば、バージョンとバリアントを表示し、v1やv7が持つタイムスタンプも復号します。

UUIDは、特にMicrosoft系の環境ではGUIDとも呼ばれます。どちらも同じ36文字の文字列を指し、32桁の16進数をハイフンで5つのグループに区切ったものです。例えばf47ac10b-58cc-4372-a567-0e02b2c3d479のような形になります。

図:バージョン7のUUID 01926f3a-7c2b-7d4e-9a1f-3b5c8d2e6f10 の構造。48ビットのミリ秒タイムスタンプ、バージョン番号7、バリアントビット、74ビットの乱数。01926f3a-7c2b-7d4e-9a1f-3b5c8d2e6f10バージョンバリアントUnix時間(ミリ秒) · 480x01926f3a7c2b = 17284429568432024-10-09 03:02:36.843 UTC12ランダムビット · 6248 + 4 + 12 + 2 + 62 = 128
バージョン7のUUIDは作成時刻(ミリ秒)から始まるため、新しいIDは時刻順に並び、データベースのインデックスとも相性が良くなります。3番目のグループの先頭がバージョン、4番目のグループの先頭がバリアントビットを含み、残りは乱数です。

連番IDではなくUUIDを使う理由

データベースの連番IDは1つの権威が割り当てる必要があり、クライアントはサーバーの応答を受け取るまで識別子を知ることができません。UUIDはこの依存関係をなくします。モバイルアプリはオフラインでレコードを作成でき、ワーカーは行が書き込まれる前に参照でき、2つのデータセンターは採番をやり直さずに統合できます。連番IDは情報も漏らします。/invoice/1042という URL は発行済み請求書のおおよその件数を競合に伝えてしまいますが、UUIDは何も語りません。

実際に出会うUUIDのバージョン

バージョン生成方法主な用途
v1タイムスタンプとノード識別子レガシー環境向け。ここではノードはランダムなバイト列で、MACアドレスは使いません
v3 / v5名前空間と名前のMD5またはSHA-1ハッシュ決定的なID。同じ名前空間と名前からは常に同じUUIDになります
v4122ビットのランダムとにかく一意な値が欲しいときの既定の選択
v748ビットのUnixタイムスタンプ+ランダムデータベースのキー向け。作成順に並ぶのでインデックスが荒れません

このページでUUIDを生成・検証する手順

  1. バージョンを選びます。一般用途はv4、データベースのキーはv7、名前から導出するならv5かv3、古い形式ならv1です。
  2. 生成する件数を指定します(1〜1000)。
  3. 出力形式を選びます。1行ずつ、JSON配列、CSV、INSERTにそのまま貼れるSQLの値から選べます。
  4. 必要に応じて大文字・ハイフンなし・波かっこ・urn:uuid: 接頭辞にチェックを入れ、コピー か ダウンロード を押します。
  5. 右側のUUIDを検査に識別子を貼ると、妥当性の確認と中身の解読ができます。

どのバージョンを選ぶか

特に理由がなければ v4 を選びます。完全にランダムでメタデータを持たず、ほとんどのライブラリの既定値です。書き込みの多いテーブルの主キーにするなら v7 です。ミリ秒のタイムスタンプが先頭に来るため、新しい行はインデックス内に散らばらず末尾に追加され、文字列のまま時系列に並びます。同じ入力から常に同じ識別子を得たい場合、たとえばURLやテナント名から安定したIDを導く場合は v5 を選びます。v3は同じ考え方の古いMD5版で、互換性が必要なときだけ使います。v1 は主に古いデータを読むためのもので、作成時刻と、伝統的には端末のMACアドレスを含みます。

ここで生成するバッチは単調増加です。v7を一度に1000件作っても生成順に並びます。バージョン欄に続く12ビットが乱数ではなくカウンターになっているためです。すべてゼロのnil UUIDもメニューにあります。値がないことを示す慣用的なプレースホルダだからです。

検査欄で分かること

ハイフンの有無、波かっこ、urn:uuid: 接頭辞のいずれでも、右のUUIDを検査パネルに貼り付けられます。形式を確認し、バージョンとバリアントを示し、正規形と生のHEXを表示します。v1やv7の値なら埋め込まれたタイムスタンプを読みやすいUTCの日時に復号します。レコードの作成時刻を知るいちばん速い方法になることも多いはずです。v1ではノードのバイト列も表示し、マルチキャストビットからランダム生成か実在のMACアドレスかを判定します。正しい形式の値には有効なUUIDと表示され、バージョンごとに専用の行が加わります。v7には並べ替え、v4にはエントロピー(122ビットのランダム値だけで、ほかの情報はない)、v3とv5には導出元(同じ名前空間と名前からは常に同じUUIDができる)です。バリアントがNCS(旧Apollo)や将来のために予約と表示された場合は、形は正しくても標準のUUIDとして生成された値ではないのが普通です。

UUIDが日常的に使われている場所

  • 分散データベースや、端末間で同期するシステムの主キー。
  • 1回の呼び出しを複数のマイクロサービスとログにまたがって追跡する相関IDやリクエストID。
  • 決済やAPI呼び出しを二重実行なしに再試行できるようにする冪等キー。
  • アップロードのファイル名。2人のユーザーがphoto.jpgを送っても互いに上書きしません。
  • モバイルアプリやデスクトップアプリのセッションID、デバイスID、インストールID。
  • キュー、Webhook、イベントソーシングにおけるメッセージIDとイベントID。

2つのUUIDが同じになることはあるか

理論上はあり得ますが、現実には起こりません。バージョン4のUUIDは122ビットの乱数を持ち、可能な値は約5.3×10の36乗にのぼります。衝突が現実味を帯びるには、毎秒数十億個のUUIDを1世紀にわたって生成し続ける必要があり、通常のアプリケーションからは遠くかけ離れています。本当のリスクは数学ではなく、弱い乱数源を使うことです。このツールはMath.randomではなく、ブラウザーの暗号学的に安全なcrypto.getRandomValuesを使用しています。

UUIDを採用する前の実務的な注意点

  • 保存領域:バイナリで16バイト、テキストで36文字です。可能ならVARCHARではなくネイティブのUUID型かBINARY(16)を使います。
  • インデックス:ランダムなv4の値はB木の中に散らばり、大きなテーブルを断片化させます。更新の多いテーブルではv7や別の連番キーを検討してください。
  • 大文字小文字:慣例では小文字ですが、大文字を返すシステムもあるため比較は大文字小文字を区別しない方式にします。
  • 波括弧:Windows系のツールはGUIDを{...}で囲むことがあります。保存前に取り除いてください。
  • URL:UUIDはそのままURLセーフなので、パーセントエンコードは不要です。

ブラウザー内で生成されます

すべての値はローカルで生成され、どこにも送信されません。社内システム向けに作った識別子は非公開のまま、あなただけのものとして残ります。

コードでUUIDを生成する:JavaScript・Python・Java・C#・SQL・シェル

Webページではなくプログラムの中で識別子が必要なら、主要なプラットフォームにはすべて生成関数があります。以下の呼び出しは、特記がない限りランダムなバージョン4のUUIDを生成します。

プラットフォームワンライナー
JavaScript / Node.jscrypto.randomUUID()
Pythonimport uuid; uuid.uuid4()
JavaUUID.randomUUID()
C# / .NETGuid.NewGuid()、または .NET 9 で v7 を作る Guid.CreateVersion7()
PostgreSQLgen_random_uuid()、または PostgreSQL 18 以降の uuidv7()
MySQLUUID() - 注意:時刻ベースの v1 を返します
Linux / macOS のシェルuuidgen
PowerShell[guid]::NewGuid()

マインクラフトのUUIDをお探しですか?あれはMojangがアカウントごとに割り当てるもので、プレイヤー名から調べるものであり生成するものではありません。このツールは自分のシステム用に新しいランダムな識別子を作ります。

関連ツール

識別子はほかの値とセットで扱われます。シークレットの作成はパスワード生成ツール、指紋の計算はハッシュ生成ツール、トークンのサブジェクト確認はJWTデコーダー、時刻の確認はUNIXタイムスタンプ変換ツールをご利用ください。

関連ガイド