使い方
- ID の種類を選びます。通常は UUID v4、データベースのキーには v7 か ULID がおすすめです。
- 必要な個数と形式(大文字、ハイフン、波括弧、Nano ID の長さ)を設定します。
- 一覧をコピーするか、テキストファイルとしてダウンロードします。「生成」を押すと新しい ID が作られます。
- 既存の ID を調べるには、「ID を調べる」に貼り付けます。
オプションの説明
- UUID v4
- 122 ビットがランダムです。あらゆるデータベースと言語でサポートされ、最もよく使われる形式です。
- UUID v7
- RFC 9562(2024 年)で定義されています。先頭 48 ビットがミリ秒単位の Unix タイムスタンプなので、新しい ID ほど後ろに並びます。そのため B-tree インデックスがコンパクトに保たれ、PostgreSQL や MySQL での挿入が速くなります。
- ULID
- Crockford Base32 の 26 文字で、48 ビットのタイムスタンプと 80 ビットの乱数からなります。並べ替えができ、URL セーフで、大文字と小文字を区別しません。
- Nano ID
- 64 文字の URL セーフな文字セットから作る短いランダム ID です。21 文字で UUID v4 とほぼ同じ衝突耐性があります。
形式の比較
| 種類 | 例 | 長さ | 並べ替え |
|---|---|---|---|
| UUID v4 | 9b2e4c1a-7f3d-4e8b-a1c2-5d6e7f8091a2 |
36 | 不可 |
| UUID v7 | 0199855e-7a40-7c3b-9e1f-2a3b4c5d6e7f |
36 | 可 |
| ULID | 01K5JQ8H2G7R4T6W9X3Y5Z7A1B |
26 | 可 |
| Nano ID | V1StGXR8_Z5jdHi6B-myT |
21 | 不可 |
コードで UUID を生成する
- JavaScript:
crypto.randomUUID()(v4) - Python:
uuid.uuid4()、Python 3.14 以降はuuid.uuid7()も - PostgreSQL:
gen_random_uuid()(v4)、PostgreSQL 18 以降はuuidv7() - Java:
UUID.randomUUID()(v4)
よくある質問
生成した UUID が重複することはありますか?
実用上はありません。122 ビットの乱数があるため、重複が 1 つでも起きる確率が 50% に達するまでに、v4 UUID を約 2.7 × 10¹⁸ 個生成する必要があります。
主キーには UUID v4 と v7 のどちらを使うべきですか?
新しいテーブルなら、通常は v7 が適しています。ランダムな v4 のキーはインデックスのあちこちに挿入されるため、ページ分割が起きやすく、キャッシュも効きにくくなります。v7 のキーは自動採番のように時刻順に並び、しかも複数のサーバー間で一意です。
UUID v7 からレコードの作成日時がわかりますか?
はい、ミリ秒単位でわかります。作成日時を知られたくない場合は、公開する ID に v4 を使ってください。
これらの ID はトークンに使えるほど安全ですか?
ランダム部分は crypto.getRandomValues で生成されるため、予測できません。ただし、セッションやパスワードリセット用のトークンには、タイムスタンプ部分を推測できる v7 UUID ではなく、128 ビット以上の乱数(たとえば 22 文字の Nano ID)を使うことをおすすめします。
GUID と UUID は同じものですか?
はい。GUID は同じ 128 ビット形式の Microsoft での呼び名です。大文字で波括弧に囲んで書かれることが多く、上の設定でその形式を選べます。
プライバシー
このツールはすべてブラウザ内で動作します。ファイルやテキストはお使いの端末上で処理され、当サイトのサーバーにアップロードされることはありません。