UUID ジェネレーター
フォーマットオプション
生成数
無料オンラインUUID/GUID/ULID/NanoIDジェネレーター。5種類のユニークIDフォーマット、最大100個の一括生成、フォーマットカスタマイズ、UUID検証・識別に対応。ブラウザを開くだけですぐに使え、データベース主キーやテストデータ作成に最適です。
関連おすすめ
UUID とは何ですか?
UUID(Universally Unique Identifier、汎用一意識別子)は、オープンソフトウェア財団(OSF)により標準化され RFC 4122 で定義された128ビットの識別子規格です。分散システム内のすべての要素が、中央制御装置によるIDの指定を必要とせずに一意の識別情報を持てるようにすることを目的としています。
標準的なUUIDは `550e8400-e29b-41d4-a716-446655440000` のような形式で、32個の16進数字からなり、ハイフンで5つのセクション(8-4-4-4-12)に区切られています。理論上、UUID v4の衝突確率は約1/10^36です。これは毎秒10億個のUUIDを生成し続けて、衝突が発生する確率が50%に達するまでに約800年かかる計算であり、実用上は一意であるとみなせます。
UUIDはデータベース主キー、分散トレースID、リクエストID、ログトレースID、ファイルの一意な名前付け、テストデータID、セッション識別子などのシーンで広く使用されており、ほぼすべての主要なプログラミング言語にUUID生成ライブラリが組み込まれています。
ユースケース
- データベース設計時に UUID v4 をテーブルレコードの主キーとして生成し、オートインクリメントIDによるデータ量の漏洩を防止
- 分散システムやマイクロサービスアーキテクチャで ULID をソート可能なグローバルユニークなリクエストトレースIDとして使用
- API開発・結合テスト時にUUIDを一括生成してテストデータやモックの注文番号・ユーザーIDとして使用
- フロントエンドの短縮URLや共有リンクで NanoID をUUIDの代わりに使用し、より短く美しくURLエンコード不要に
- UUID v5 を使用して固定の名前空間から決定論的IDを生成し、同じ入力からは常に同じ出力が得られることを保証
- デバッグログやサードパーティのドキュメントで不明な形式のIDに遭遇した際、検証機能でIDの種類とバージョンを識別
使い方
- 上部のカードから生成したいIDの種類を選択: UUID v4(推奨)、v1、v5、ULID、NanoID
- UUID v5を選択した場合は名前空間用の文字列を入力。その他のIDはそのままフォーマットオプションを設定可能
- 必要に応じて大文字小文字とハイフンのスイッチを切り替え、クイックボタンまたはスライダーで一括生成数(1〜100)を設定
- 生成ボタンをクリックして結果リストを表示。個別コピー、全件一括コピー、またはTXT/JSONファイルとしてエクスポートが可能
- 既存のIDを検証したい場合は「検証」タブに切り替え、ID文字列を貼り付けると種類とバージョン情報が表示される
特徴
- 5種類のIDを1ページで網羅: UUID v1(タイムスタンプ)、v4(ランダム)、v5(名前空間)、ULID(ソート可能)、NanoID(URLセーフ)を同時サポート。1つのツールでさまざまな技術スタックのニーズに対応
- UUID検証・識別: 検証タブに切り替えて任意のIDを貼り付けるだけで、UUIDのどのバージョンか、あるいはULID/NanoID形式かを識別。デバッグ時の問題調査が迅速に
- 最大100個の一括生成: 1〜100個の任意の数を一括生成可能。テストデータ作成で1個ずつ手動コピーする必要なし
- 柔軟なフォーマット切り替え: UUIDの大文字小文字とハイフンのオン/オフに対応し、データベース、URL、設定ファイルなどさまざまなシーンのフォーマット要件に適合
- エクスポートと履歴記録: 全件ワンクリックコピー、TXT/JSONファイル出力に対応。生成履歴はローカルに保存されいつでも復元可能で、一括操作がより効率的に
- クライアントサイドで安全な乱数生成: ブラウザのcrypto APIを使用して暗号学的に安全な乱数を生成。IDはサーバーに送信されず、オフラインでも利用可能
コード例
JavaScript で UUID v4 を生成
javascriptモダンブラウザと Node.js 14.17+ には Web Crypto API が組み込まれており、サードパーティライブラリなしで直接 UUID v4 を生成できます。
// モダンブラウザ / Node.js 19+
const id = crypto.randomUUID();
console.log(id); // "550e8400-e29b-41d4-a716-446655440000"
// Node.js 14.17 - 18.x
const crypto = require('crypto');
const id = crypto.randomUUID();Python で UUID を一括生成
pythonPython 標準ライブラリの uuid モジュールを使用して複数の UUID v4 を一括生成。テストデータ準備に最適です。
import uuid
# 単一のUUIDを生成
uid = uuid.uuid4()
print(uid)
# 10個を一括生成
for _ in range(10):
print(uuid.uuid4())
# ハイフンなしの大文字UUIDを生成
print(uuid.uuid4().hex.upper())シェルコマンドラインで UUID を生成
bashLinux/macOS ターミナルですばやくUUIDを生成。シェルスクリプトでの使用に適しています。
# Linux uuidgen # macOS uuidgen | tr 'A-Z' 'a-z' # システムランダムファイルから直接読み取り(最も原始的な方法) cat /proc/sys/kernel/random/uuid
ユニークIDはどの方式を選ぶべきか?
UUIDだけが選択肢ではありません。データベースの自動増分IDやSnowflakeも主要な主キー方式です。「データ規模・グローバル一意性が必要か・時間順序が必要か」を先に確認してから具体的な方式を選べば、多くの回り道を避けられます。
UUID v1 / v4 / v5 / ULID / NanoID:どれを選ぶべきか?
5つのIDはデータ規模、ソート可能性、文字数のそれぞれにトレードオフがあります。「どこで使うか + ソートが必要か + URLで直接使うか」を基準に判断すれば、数字自体で選ぶより確実です。
| 方式 | 推奨シーン | ソート性 | 長さ | 推奨度 |
|---|---|---|---|---|
UUID v1 | 時間順ソートが必要で、MACアドレスと生成時刻の漏洩を許容できる内部システム | 時間順にソート可能 | 36文字 | ⚠ 通常は非推奨(プライバシー漏洩) |
UUID v4 | データベース主キー、汎用識別子、ほとんどの業務シナリオ | ソート不可(ランダム) | 36文字 | ✓ 汎用第一選択 |
UUID v5 | 決定論的な出力(同じ入力 → 同じUUID)が必要なシーン | ソート不可 | 36文字 | ✓ 名前空間固定時に推奨 |
ULID | 分散システム主キー、ログトレース、時間順ソートが必要なインデックス | 時間順にソート可能(先頭48bitがミリ秒タイムスタンプ) | 26文字 | ✓ 分散システム第一選択 |
NanoID | URL短縮、Cookie識別子、フロントエンドJS参照 | ソート不可(ランダム) | 21文字(デフォルト) | ✓ 短いIDシーンの第一選択 |
UUID vs データベース自動増分ID vs Snowflake ID:主キー方式の選び方
この3つはバックエンド主キーとして最も一般的で、システムの拡張能力・並行性・パフォーマンス特性を決定します。「データ規模 / グローバル一意性の要否 / 可読性の要否」で判断すれば、後々のアーキテクチャ調整を避けられます。
| 次元 | UUID | データベース自動増分ID | Snowflake |
|---|---|---|---|
グローバル一意性 | ✓ あり(理論上) | ✗ なし(シャーディングすると重複) | ✓ あり(データセンター+マシンIDで保証) |
データ量漏洩 | ✓ 漏洩しない | ✗ 直接漏洩(1, 2, 3と増加し実データ量を露呈) | ⚠ タイムスタンプ部から生成時刻が漏洩(総量は直接漏洩しない) |
ソート性 | ✗ ソート不可(ULIDは例外) | ✓ 単調増加(B-Treeに最適) | ✓ 傾向増加(同一ミリ秒内は順序保証) |
シャーディング | ✓ ネイティブ対応 | ✗ 発番器導入や改修が必要 | ✓ worker IDで区別可能 |
ストレージコスト | ⚠ 高(BINARY(16) 16バイト) | ✓ 低(BIGINT 8バイト) | ✓ 低(BIGINT 8バイト) |
適合シーン | マルチサービス/分散主キー、対外識別子、データ量に敏感な業務 | モノリシックアプリ、管理画面、グローバル一意性が不要なシステム | 高並行IM、注文番号、メッセージID(自前実装が必要) |
Best Practices
本番データベースの主キーは UUID v4 または ULID を優先し、v1 は避ける
UUID v1 の後ろ48bitはMACアドレス、前48bitは100ns精度のタイムスタンプです——**この2つのフィールドからマシンの指紋と生成時刻を復元できます**。v1はRFC 4122で「only when backward compatibility is needed」(後方互換が必要な場合のみ)と明示されています。本番環境では v4(ランダム)または ULID(ソート可能)を優先すべきで、v1 はデバッグや生成マシンの追跡が必要なときのみ限定的に使用します。**絶対に** v1 を外部に公開するユーザーID、デバイスID、注文番号として使用しないでください。
UUID v1、v4、v5 はどのように選べばよいですか?UUID長 128 bit ≠ エントロピー:v4 の実エントロピーは 122 bit
UUID v4 は合計128bitですが、**先頭4bitはバージョン番号(0100固定)、末尾2bitはバリアント番号(10固定)**で、実際にランダムなのは122bitだけです。これはRFC 4122で規定されたフォーマット制約であり、**「128bit全てがランダム」だと主張するUUID v4ライブラリは誤った実装**です。さらに v4 の後ろ64bitのうち7バイト目の上位2bitもバリアントフィールドで、実エントロピーはさらに低くなります。システム設計時は122bit(128bitではなく)で安全性を計算し、衝突リスクの過小評価を避けましょう。
RFC 4122 - UUID 仕様UUID保存はBINARY(16)列を使い、VARCHAR(36)は避ける
UUID v4文字列 `550e8400-e29b-41d4-a716-446655440000` はコンパクトに見えますが、実際のVARCHAR(36)では36バイト+長さ2バイト=38バイトで、**BINARY(16)より2.4倍のストレージ容量を消費**します。MySQL/PostgreSQL/MSSQLはいずれもUUID関数を内蔵しBINARY(16)への直接書き込みに対応しており、インデックスサイズも半分になります。テーブルが1億行を超えるとVARCHAR(36)の主キーインデックスでB-Treeの高さが1〜2段増え、**クエリ性能が30〜50%低下**します。フロントエンド表示時に文字列化し、業務層では常にBINARY(16)でやり取りしましょう。
UUID / ULID / NanoID 比較表URLではNanoIDまたはハイフンなしUUIDを使い、URLエンコードを避ける
UUID v4 の文字セットは `[0-9a-f-]` で、**ハイフン - はURLパス中で2段階のURLエンコードが必要**です(%2Dにエスケープ、さらに%252Dにエスケープ)。非常に見栄えが悪くなります。2つの解決策があります:**(1)URLではNanoIDを直接使用**(デフォルト21文字、URLセーフ);**(2)UUID v4 + ハイフンオフ**で32桁の純粋なhexを出力し、URLパスセグメントとしてエンコード不要にします。CookieでもNanoID(A-Za-z0-9_-)またはハイフンなしUUIDを優先し、`+` `/` `=` 文字(Base64文字セット)を避けましょう。
生成したUUIDからハイフンを除去したり大文字に変換したりできますか?一括生成後は必ず重複チェックを実施、生成器のバグで重複が発生する可能性
UUID v4 の衝突確率は約1/10^36で、理論上は重複チェック不要です——**しかし、実装では理論を信じるべきではありません**。LinuxカーネルRNGの障害、Node.js初期バージョンの `crypto.randomUUID` 実装バグ、クラウドVM起動時のエントロピー不足など、実際の事故で一括生成UUIDに重複が発生した事例があります。**本番環境で10万件以上のUUIDを一括生成した後は、必ず `SELECT id, COUNT(*) FROM t GROUP BY id HAVING COUNT(*) > 1` で重複チェックを実施し**、問題発見時は即座に生成器のバージョンをロールバックしてください。これはデータ移行・一括インポートで血の教訓から得られたベストプラクティスです。
一度に複数のUUIDを一括生成できますか?よくある質問
UUID と GUID の違いは何ですか?
UUID(Universally Unique Identifier)と GUID(Globally Unique Identifier)は本質的に同じもので、呼び名が異なるだけです。UUID は IETF 標準(RFC 4122)の正式名称で、GUID はマイクロソフトが Windows エコシステムで慣習的に使用している呼び名です。両者のフォーマットは完全に同一で、`550e8400-e29b-41d4-a716-446655440000` のような形式の128ビット識別子です。このツールで生成する標準 UUID は、GUID が必要なあらゆる場面でそのまま使用できます。
UUID v1、v4、v5 はどのように選べばよいですか?
UUID v1 はタイムスタンプとMACアドレスに基づいて生成され、時間順に並べることができ追跡可能ですが、MACアドレスが漏洩する可能性があります。UUID v4 は完全に乱数に基づいて生成され、最も一般的で安全な選択肢であり、ほとんどの主キー・識別子の用途に適しています。UUID v5 は名前空間ベースのハッシュ版(SHA-1)で、同じ名前空間+同じ名前からは常に同じUUIDが生成され、決定論的な出力が必要な場面に適しています。通常の開発では UUID v4 をデフォルトで選択すれば問題ありません。
ULID と NanoID は UUID v4 と比べてどのようなメリットがありますか?
ULID(26文字)は UUID(ハイフン含む36文字)より短く、辞書順にソート可能なため、データベースインデックスやログトレースに適しています。NanoID(デフォルト21文字)はさらに短く高速で、URLセーフな文字を使用しているためURLやCookieでエスケープが不要で、UUIDより約30%小さくなります。3つとも衝突確率は極めて低いですが、分散システムではULIDのソート可能性が有利で、NanoIDはフロントエンド・URLシナリオでより使いやすいです。
一度に複数の UUID を一括生成できますか?
はい、できます。このツールは1〜100個の一括生成に対応しており、数量ボタンまたはスライダーで数を設定してワンクリックで生成できます。テストデータ作成、一括インポート、スクリプト用のユニークID準備に最適です。生成後は全結果をワンクリックでコピーできるほか、TXTテキストまたはJSONファイルとしてエクスポートすることもできます。
一括生成の使い方文字列が正しい UUID かどうかを検証できますか?
はい、できます。「検証」タブに切り替えて任意の文字列を入力すると、ツールが自動的に識別・検証します。標準UUID(v1/v3/v4/v5)の場合は具体的なバージョン番号を表示し、ULID(26文字のCrockford Base32形式)とNanoID(21文字のURLセーフ文字)のフォーマットも識別できるため、開発・デバッグ時にIDフォーマットの問題をすばやく調査するのに非常に便利です。
オンラインで UUID を生成するとサーバーに漏洩しませんか? 安全ですか?
完全に安全です。このツールのすべてのID生成と検証は、お使いのブラウザ内でJavaScriptによりローカルで実行されます。crypto.getRandomValues() による暗号論的に安全な乱数を使用しており、生成したIDがサーバーに送信されることはなく、生成履歴がクラウドに記録されることもありません。オフラインでも正常に使用できるため、企業イントラネットや機密性の高いプロジェクトでも安心してご利用いただけます。
生成した UUID からハイフンを除去したり大文字に変換したりできますか?
はい、できます。UUID v1/v4/v5 については、「大文字」スイッチで出力の大文字小文字を切り替え、「ハイフン」スイッチで中央のハイフンを除去できます(URL、設定ファイル、ハイフンなし形式を必要とする一部のデータベースでの使用に便利です)。ULIDとNanoIDはデフォルトでハイフンがなく、大文字小文字の切り替えにも対応しています。
なぜコマンドラインではなくオンラインツールでUUIDを生成するのですか?
コマンドラインツール(Linuxのuuidgen、Pythonのuuidモジュールなど)は開発環境が必要ですが、オンラインツールはブラウザを開くだけですぐに使え、ソフトウェアのインストールは不要です。さらにこのツールにはUUIDバージョン識別、一括エクスポート、履歴記録などの付加機能も統合されており、デバイスをまたいだ作業(技術者でない同僚のためにIDを生成する場合など)や急に必要になったときにより便利です。
用語集
- UUID
- Universally Unique Identifier(汎用一意識別子)。128ビット長、RFC 4122標準。よく使われるバージョンはv1(タイムスタンプ+MAC)、v4(ランダム)、v5(SHA-1ハッシュ)。
- GUID
- Globally Unique Identifier(グローバル一意識別子)。マイクロソフトによるUUIDの呼び名で、フォーマットと用途は両者で完全に同一。
- ULID
- Universally Unique Lexicographically Sortable Identifier(辞書順ソート可能な汎用一意識別子)。26文字でCrockford Base32エンコーディングを使用、先頭48ビットがタイムスタンプで作成時間順にソート可能。
- NanoID
- 軽量なユニークID生成方式。デフォルトで21個のURLセーフ文字(A-Za-z0-9_-)を使用し、UUIDより短く高速で、フロントエンドやURLシーンに適している。
- UUID v1
- タイムスタンプとMACアドレスに基づくUUIDバージョン。時間順にソート可能だが、MACアドレスと生成時間が漏洩する可能性があり、セキュリティ面ではv4に劣る。
- UUID v4
- 完全に乱数に基づいて生成されるUUIDバージョン。最も広く使用されており、衝突確率は極めて低く、開発におけるデフォルトの選択肢。
- UUID v5
- SHA-1ハッシュに基づく名前空間UUIDバージョン。同じ名前空間+同じ名前の入力からは同じUUIDが出力され、決定論的なシナリオに適している。
- 衝突確率
- ランダムに生成された2つのIDが偶然に同一になる確率。UUID v4の衝突確率は約170億分の1兆分の1であり、実用上無視できる。
- Crockford Base32
- Douglas Crockfordにより設計されたBase32エンコーディング。I/L/O/Uを除外した大文字と数字を使用し、混同しやすい文字を回避。ULIDで使用されている。
UUID / ULID / NanoID 比較表
| 特性 | UUID v4 | ULID | NanoID |
|---|---|---|---|
| 長さ | 36文字(ハイフン含む)/ 32文字(ハイフンなし) | 26文字 | デフォルト21文字 |
| 文字セット | 16進数(0-9a-f) | Crockford Base32(32文字) | URLセーフ(64文字) |
| ソート性 | ソート不可(ランダム) | 時間順にソート可能 | ソート不可(ランダム) |
| URLセーフ | エスケープが必要(ハイフン+英数字) | おおむね安全(大文字+数字) | 完全にURLセーフ |
| 生成速度 | 高速 | 高速 | UUIDより約60%高速 |
| 衝突確率 | 1/10^36 | 1/10^36 | 1/10^34(21文字時) |
| 代表的な用途 | データベース主キー、汎用ID | 分散システム、ログトレース | 短縮URL、フロントエンドID、Cookie |
各言語での UUID 生成方法
| 言語 | コード |
|---|---|
| JavaScript | crypto.randomUUID() // モダンブラウザ/Node.js 19+ |
| Python | import uuid; uuid.uuid4() |
| Java | UUID.randomUUID() |
| Go | github.com/google/uuid; uuid.New() |
| Bash/Linux | uuidgen または cat /proc/sys/kernel/random/uuid |
Authoritative References
- IETFRFC 4122 - UUID 仕様
- GitHubULID 仕様 (GitHub)
- OfficialNanoID 公式サイト
- 色覚シミュレーター
- カラーコンバーター
- .htaccess→Nginx変換ツール
- SQL 変換ツール
- Cookieパーサー
- Cron式ジェネレーター
- Cron式バリデーター
- CSSフォーマッター
- CSS圧縮
- CSV→Excel変換
- 通貨変換
- 差分チェッカー
- ファビコンジェネレーター
- XMLフォーマッター
- 16進数変換ツール
- HTMLフォーマッター
- HTML圧縮
- HTML→Markdown変換
- MarkdownからHTML変換
- JavaScript フォーマッター
- JS圧縮
- JSXフォーマッター
- JSX 圧縮
- キーワードのクラスタリング
- Lorem Ipsum ジェネレーター
- Markdown テーブルジェネレーター
- Meta Tag ジェネレーター
- パスワード生成器
- パスワード強度チェッカー
- QRコード・バーコードジェネレーター
- 正規表現テスター
- Slugジェネレーター
- SQLビルダー
- SQL フォーマッター
- 文字数カウント
- 時間ツール
- TSフォーマッター
- TS圧縮
- TSXフォーマッター
- TSX圧縮
- Unix タイムスタンプ変換
- UUID ジェネレーター
- YAMLフォーマッター
- 大文字と小文字の変換