本文へスキップ
App Museum
English

UUID・ULID生成ツール

UUID v4 と、時刻順に並ぶ UUID v7・ULID をまとめて生成。ボタンひとつで最大100件を作成し、UUIDは大文字・ハイフンなし・波かっこ付きの形式に切り替えてコピーできます。貼り付けたUUID・ULIDのバージョンと作成時刻を調べ、ULIDとUUIDの書き方を相互に変換することもできます。

種類
出力形式

UUID・ULIDを調べる

UUIDかULIDを1つ入力すると、種類と、値に含まれる作成時刻を表示します。大文字、ハイフンなし、波かっこ付き、urn:uuid: 付きのUUIDも読み取ります。

値を入力すると、ここに結果が表示されます。

使い方

  1. 「生成数」に、生成したい個数を1〜100の範囲で入力します。最初は5が入っています
  2. 「種類」で「UUID v4(乱数)」「UUID v7(時刻順)」「ULID(時刻順・26文字)」のいずれかを選びます。最初はUUID v4が選ばれています
  3. UUIDでは、必要なら「出力形式」で「大文字」「ハイフンなし」「波かっこ付き」を選びます。3つは組み合わせて選べます。ULIDを選んでいる間は、「出力形式」は選べません
  4. 「生成」を押すと、選んだ種類の値が、その個数だけ1行に1件ずつ表示されます。一覧の上には件数と種類が「5件(v4)」「5件(ULID)」のように出ます
  5. 「すべてコピー」を押すと、表示中の全件が、表示されている形式のまま改行区切りでクリップボードに入ります

「生成」を押すたびに、一覧は新しい値に置き換わります。前に生成した値は残らないため、必要な値は先にコピーしてください。「出力形式」は生成のあとでも切り替えられます。切り替えても値は作り直されず、表示中の同じ値の書き方だけが変わります。

「種類」は「出力形式」と違い、切り替えただけでは表示中の一覧は変わりません。v4の値をv7やULIDに書き換えることはできないためです。次に「生成」を押したときに、選んだ種類で新しい値が作られます。

手元にあるUUIDやULIDの種類と作成時刻を知りたいときは、ページ下の「UUID・ULIDを調べる」に貼り付けます。読み取れる書き方と表示する項目は、この説明の「UUID・ULIDを調べる」の節にまとめています。

具体例

「UUID v4(乱数)」のまま、生成数に 3 を入力して「生成」を押すと、次のような3件が表示されます。

6c086a5b-1506-46a7-89d2-d5abfc4db5ab
99dae5f8-0143-446b-ac24-1a449f8ff56d
6d009e53-11e4-46f3-a0ce-4f70915f76eb

値は生成のたびに変わるため、同じ結果にはなりません。「すべてコピー」でコピーした内容は、この表示と同じく1行に1件の形式です。表計算ソフトやテキストエディタへ貼り付けると、そのまま1件ずつの行になります。

出力形式の切り替え

「出力形式」の3つのチェックは、どれも値そのものを変えず、書き方だけを変えます。1件目の値 6c086a5b-1506-46a7-89d2-d5abfc4db5ab は、次のように表示されます。

  • 何も選ばない: 6c086a5b-1506-46a7-89d2-d5abfc4db5ab
  • 「大文字」: 6C086A5B-1506-46A7-89D2-D5ABFC4DB5AB
  • 「ハイフンなし」: 6c086a5b150646a789d2d5abfc4db5ab
  • 「波かっこ付き」: {6c086a5b-1506-46a7-89d2-d5abfc4db5ab}
  • 3つすべて: {6C086A5B150646A789D2D5ABFC4DB5AB}

波かっこ付きは、Windowsのレジストリや.NETのGUIDの表記で見かける形式で、レジストリでは英字を大文字で書きます。ハイフンなしの32文字は、データベースの固定長の列やファイル名に入れるときに使われます。貼り付け先が求める形式に合わせて選んでください。

「出力形式」はUUIDのためのものです。このアプリはULIDを大文字の26文字で出力するため、「種類」でULIDを選んでいる間はチェックを変えられず、ULIDの一覧にも適用されません。UUIDのために選んだチェックは残っていて、「種類」をUUIDに戻すとまた使えます。

UUID v4の形式

UUIDは128ビットの識別子で、16進数32桁を 8-4-4-4-12 の桁数でハイフン区切りにした36文字で書き表します。何も選ばないときにこのアプリが出力するのは、この36文字で英字が小文字の形式です。

v4では128ビットのうち6ビットが形式を示すために固定され、残りの122ビットが乱数です。固定される部分は、文字列の上でも確認できます。

  • 3つ目のブロックの先頭は、バージョンを表す 4 になります
  • 4つ目のブロックの先頭は、8、9、a、b のいずれかになります

上の例の1件目では、3つ目のブロックが 46a7、4つ目のブロックが 89d2 です。手元の文字列がv4かどうかは、この2か所を見ると判断できます。

v4の生成にはブラウザの crypto.randomUUID() を使っています。暗号用の乱数生成器を使う機能で、Math.random() を元にした実装とは違い、値を推測されにくい乱数から作られます。

UUID v7の形式

v7は、RFC 9562で定められた、作成時刻を先頭に持つUUIDです。書き方はv4と同じ 8-4-4-4-12 の36文字で、中身の割り当てが違います。

  • 先頭の48ビット(1つ目のブロックと2つ目のブロックの12桁)は、作成時刻です。1970年1月1日0時0分0秒(UTC)からの経過ミリ秒を16進数で書いたものです
  • 3つ目のブロックの先頭は、バージョンを表す 7 になります。残りの3桁は、同じミリ秒の中での順番を保つための12ビットのカウンターです
  • 4つ目のブロックの先頭は、v4と同じく 8、9、a、b のいずれかです。ここから後ろの62ビットは乱数です

「UUID v7(時刻順)」を選び、生成数を 3 にして「生成」を押すと、次のような3件が表示されます。

01a12e28-fb3b-734b-9120-41d67cc58033
01a12e28-fb3b-734c-9cd1-0420fc12d119
01a12e28-fb3b-734d-ab88-f22771f99918

3件とも先頭の12桁が 01a12e28fb3b で、10進数にすると 1791775800123 です。これは2026年10月12日3時30分0.123秒(UTC)、日本時間では同じ日の12時30分0.123秒を表します。値を「UUID・ULIDを調べる」に入力すると、この時刻をUTCと端末のタイムゾーンの日時で表示します。

1回の「生成」で作る値は、すべて同じ時刻を持ちます。そのままでは順番が決まらないため、3つ目のブロックのカウンターを1件ごとに1ずつ増やしています。上の例では 734b、734c、734d と進んでいます。カウンターの最初の値は乱数で決めるため、7000 から始まるとは限りません。これにより、表示された順と、文字列として小さい順に並べた順が一致します。

このページを開いている間は、あとから「生成」した値は、前に生成した値より後ろに並びます。ふつうは時刻が進んでいるためです。時刻が進んでいないとき、つまり同じミリ秒のうちに次の生成が起きたときや、端末の時計が前より戻っていたときは、前回の時刻とカウンターの続きから作ります。

時刻には端末の時計を、カウンターの最初の値と62ビットの乱数にはブラウザの crypto.getRandomValues() を使っています。

ULIDの形式

ULIDは、UUID v7と同じく作成時刻を先頭に持つ128ビットの識別子です。RFCではなく、GitHubで公開されている仕様(ulid/spec)で定められています。UUIDとは書き方が違い、ハイフンのない26文字で書き表します。

  • 使う文字は、数字の 0〜9 と、I、L、O、U を除いた英大文字22字の、合わせて32種類です(Crockford の Base32)。1文字が5ビットを表します。数字の1や0と見間違えやすい文字を除いてあります
  • 先頭の10文字は作成時刻です。1970年1月1日0時0分0秒(UTC)からの経過ミリ秒を48ビットで表したものです。48ビットに収めるため、先頭の1文字は 0〜7 のいずれかになります
  • 残りの16文字は80ビットの乱数です

「ULID(時刻順・26文字)」を選び、生成数を 3 にして「生成」を押すと、次のような3件が表示されます。

01M4Q2HYSVJZWYFSGM3P6RNAAJ
01M4Q2HYSVJZWYFSGM3P6RNAAK
01M4Q2HYSVJZWYFSGM3P6RNAAM

3件とも先頭の10文字が 01M4Q2HYSV で、上のUUID v7の例と同じ 1791775800123 ミリ秒、2026年10月12日3時30分0.123秒(UTC)を表します。

1回の「生成」で作る値は、すべて同じ時刻を持ちます。順番を保つため、1件目の乱数だけをブラウザの crypto.getRandomValues() で決め、2件目からは乱数の部分を1ずつ増やしています。仕様が「単調増加」として定めている作り方です。上の例では末尾が J、K、M と進んでいます。L は使わない文字なので、K の次は M です。これにより、表示された順と、文字列として小さい順に並べた順が一致します。

UUID v7と同じく、このページを開いている間は、あとから「生成」した値は前に生成した値より後ろに並びます。同じミリ秒のうちに次の生成が起きたときや、端末の時計が前より戻っていたときは、前回の時刻と乱数の続きから作ります。乱数の部分が上限に達したときは、仕様ではエラーにしますが、このアプリは時刻を1ミリ秒進めて乱数を取り直します。80ビットの乱数が上限のすぐ手前から始まった場合にしか起きないため、実際に起きることはまずありません。

仕様では、ULIDは大文字と小文字を区別しません。このアプリは、仕様が標準とする大文字で出力します。

v4・v7・ULIDの選び方

  • v4: 値から作成時刻が分かりません。広く使われていて、どのシステムでも受け取れます。迷ったらv4で構いません

  • v7: 作成した順に並びます。ただし、別々の端末やページで同じミリ秒に作った値どうしの順番は決まりません。データベースの主キーに使うと、新しい行がインデックスの末尾に追加されるため、v4より挿入が速くなりやすいとされます。ログやイベントのIDのように、作成順に並べたい場面にも向きます

  • ULID: v7と同じく作成した順に並び、別々の端末やページで同じミリ秒に作った値どうしの順番が決まらない点も同じです。26文字でハイフンがなく、UUIDの36文字より短いため、URLやファイル名に入れやすい形式です。ただし、UUIDではありません。UUID型の列や、UUIDの形式を検査するAPIには、26文字のままでは入りません。受け取る側がUUIDを求めているときは、v7を選んでください

v7とULIDは、値を見るだけで作成時刻が分かります。利用者に見えるURLやIDに使うと、登録や作成の日時を伝えることになります。それを避けたいときはv4を選んでください。

UUID・ULIDを調べる

ページ下の「UUID・ULIDを調べる」に、UUIDかULIDを1つ入力すると、その値の種類と、値に含まれる作成時刻を表示します。このアプリで生成した値だけでなく、ログやデータベースからコピーした値も調べられます。結果は入力に合わせてその場で変わり、ボタンを押す必要はありません。

読み取る書き方は次のとおりです。前後の空白は無視します。

  • UUID: ハイフン付きの36文字、ハイフンなしの32桁、波かっこ付きの {…}、urn:uuid: 付き。英字は大文字でも小文字でも構いません
  • ULID: 26文字。小文字でも読み取り、標準の大文字に直して表示します

表示する項目は次のとおりです。

  • 種類: UUIDのバージョン(v1〜v8)とその中身、またはULIDです。128ビットがすべて0のNil UUIDと、すべて1のMax UUIDは、その名前で表示します
  • バリアント: UUIDのビットの割り当て方です。4つ目のブロックの先頭が 8〜b ならRFC 9562の方式で、バージョンが意味を持つのはこのときだけです。0〜7、c・d、e・f は、古い形式や将来のために予約された方式で、バージョンは表示しません
  • 作成時刻: v1、v6、v7とULIDに含まれる時刻を、UTCのISO 8601形式、この端末のタイムゾーンでの日時、Unix時間(ミリ秒)の3つで表示します
  • 標準の書き方: UUIDはハイフン付きの小文字36文字、ULIDは大文字26文字に直したものです
  • ULIDの書き方・UUIDの書き方: 同じ128ビットを、もう一方の書き方で書いたものです

上の「UUID v7の形式」の例の1件目 01a12e28-fb3b-734b-9120-41d67cc58033 を、日本時間の端末で入力すると、次のように表示されます。

  • 種類: UUID v7(Unix時間(ミリ秒)と乱数)
  • バリアント: RFC 9562(RFC 4122と同じ)
  • 作成時刻(UTC): 2026-10-12T03:30:00.123Z
  • 作成時刻(この端末の時刻): 2026/10/12 12:30:00.123 (Asia/Tokyo)
  • Unix時間(ミリ秒): 1791775800123
  • 標準の書き方: 01a12e28-fb3b-734b-9120-41d67cc58033
  • ULIDの書き方: 01M4Q2HYSVED5S2821TSYCB01K

種類ごとの作成時刻

  • v1とv6: 1582年10月15日0時(UTC)からの、100ナノ秒単位の経過時間です。v6は、v1と同じ時刻を上位の桁から順に並べ替えたものです。UTCの行には100ナノ秒の桁まで小数7桁で表示し、この端末の時刻とUnix時間ではミリ秒未満を切り捨てます
  • v7とULID: 1970年1月1日0時(UTC)からの経過ミリ秒です
  • v2: 時刻の下位32ビットが別の識別子に置き換えられているため、時刻を読み取りません
  • v3とv5は名前から計算したハッシュ値、v4は乱数で、時刻は含まれていません
  • v8: 中身の形式を作る側が決めるため、時刻が入っているかは値からは分かりません。時刻は読み取りません

RFC 9562の例にあるv1の値 C232AB00-9414-11EC-B3C8-9F6BDECED846 を入力すると、作成時刻(UTC)は 2022-02-22T19:22:22.0000000Z と表示されます。同じRFCのv6の例 1EC9414C-232A-6B00-B3C8-9F6BDECED846 も同じ時刻です。

v1とv6の後半の12桁は「ノード」で、古い実装では値を作った端末のMACアドレスが入っていました。このアプリはノードを表示しません。

ULIDとUUIDの書き換え

ULIDとUUIDは、どちらも128ビットの値です。そのため、ULIDは16進数32桁のUUIDの書き方で、UUIDは26文字のULIDの書き方で書き表せます。ULIDを、PostgreSQLのuuid型のようなUUIDを保存する列に入れるときに使います。

ただし、ULIDをUUIDの書き方にしたものが、RFC 9562のUUIDとして正しい形になるとは限りません。バージョンとバリアントの位置にも乱数が入るためです。乱数がたまたま合えばv7などの形になりますが、多くの値はそうなりません。上の「ULIDの形式」の例の1件目 01M4Q2HYSVJZWYFSGM3P6RNAAJ は 01a12e28-fb3b-97f9-e7e6-141d8d8aa952 になり、3つ目のブロックの先頭が 9、4つ目のブロックの先頭が e です。この値を入力し直すと、「RFC 9562とは別のバリアント」のUUIDとして表示されます。UUIDの形式を検査するAPIには、受け付けられないことがあります。

反対に、UUIDをULIDの書き方にしたとき、先頭10文字が作成時刻を表すのはv7だけです。上のv7の例は 01M4Q2HYSVED5S2821TSYCB01K になり、先頭10文字の 01M4Q2HYSV は、ULIDの例と同じ時刻を表します。v4などでは、先頭10文字は時刻ではありません。

読み取れない値

読み取れない値を入力すると、理由を表示します。

  • 長さが合わない: UUIDは32桁か36文字、ULIDは26文字です。入力された文字数を示します
  • 使えない文字: 何文字目のどの文字かを示します。ULIDは見間違いを防ぐため I、L、O、U を使いません。これらを数字の 1 や 0 に読み替えることはせず、誤りとして示します
  • ハイフンの位置が違う: 36文字のUUIDは、8-4-4-4-12の桁数ごとにハイフンが入ります
  • ULIDの先頭が8以上: 26文字は130ビット分にあたるため、128ビットに収まるのは先頭の文字が 0〜7 のときだけです

波かっこと urn:uuid: はUUIDの書き方です。その中に26文字のULIDを入れても、ULIDとしては読み取りません。

調べた値はどこにも保存されず、サーバーへ送られることもありません。

どんな場面で使うか

  • データベースのテストデータや初期データに入れる主キー
  • APIの動作確認で送るリクエストIDや冪等性キー
  • 設定ファイルやマニフェストに書く固定の識別子
  • 重複しない一時的なファイル名やディレクトリ名

UUIDは連番と違い、発行済みの番号をどこかで管理しなくても、別々の場所で作った値が重複しにくいことが利点です。一方で、v4は生成した順に並ばないため、値の大小から作成順を知ることはできません。作成順に並べたいときは、v7かULIDを選んでください。

重複の可能性

v4の122ビットの乱数には約5.3×10の36乗通りの値があります。2件が偶然一致する確率が50%に達するのは、およそ2.7×10の18乗件(約270京件)を生成したときです。一度に100件、合計で数万件を作る程度の使い方であれば、重複を考える必要はまずありません。

v7は乱数が62ビットとv4より少ないものの、時刻が1ミリ秒でも違えば値は一致しません。1回の「生成」の中では、カウンターが1件ごとに違うため、同じ値は出ません。別々の端末で作った値が一致するのは、同じミリ秒に、カウンターと62ビットの乱数の両方が偶然そろった場合だけです。

ULIDの乱数は80ビットで、約1.2×10の24乗通りの値があります。時刻が1ミリ秒でも違えば値は一致しません。1回の「生成」の中では、乱数の部分を1ずつ増やすため、同じ値は出ません。別々の端末が同じミリ秒に1件ずつ作る場合、2件が偶然一致する確率が50%に達するのは、その1ミリ秒におよそ1.3×10の12乗件(約1.3兆件)を作ったときです。

ただし、これは確率の話であり、仕組みとして一意性を保証するものではありません。データベースで使うときは、列に一意制約を付けておくと、万一の重複や貼り付けの誤りを検出できます。

注意点

  • 生成数に空欄、文字、0以下の値を入れて「生成」を押すと、1件を生成します。100を超える値は100件になります。小数は切り捨てで、2.7 は2件です。いずれの場合も、入力欄は実際に生成した件数に書き換わります
  • 「出力形式」で選べるのは、大文字、ハイフンなし、波かっこ付きの3つとその組み合わせです。urn:uuid: を前に付ける形式や、Base64などの短い表記には切り替えられません
  • 「出力形式」はULIDには使えません。ULIDを小文字にする機能はありません。UUIDと同じ16進数32桁の書き方は、「UUID・ULIDを調べる」にULIDを入力すると表示されます
  • 「種類」と「出力形式」の選択はページを再読み込みすると、UUID v4で何も選んでいない状態に戻ります
  • 「種類」を切り替えても、表示中の一覧はそのままです。一覧の上の「(v4)」「(v7)」「(ULID)」が、表示中の値の種類を示します
  • 1回の「生成」で作ったULIDは、乱数の部分が1ずつ違うだけです。1件を知っている人は、同じ回のほかの値を推測できます。推測されては困る値には使わないでください
  • v7とULIDの時刻は端末の時計から取ります。時計がずれていると、その時刻が値に入ります。ページを開いている間に時計が戻った場合は、戻る前の時刻を使い続けます。ページを再読み込みすると前回の時刻は忘れるため、時計を戻してから再読み込みして生成した値は、前に生成した値より前に並びます
  • 生成できるUUIDはv4とv7です。v1、v3、v5、v6、v8は生成できません。「UUID・ULIDを調べる」では、v1〜v8のどの値も種類を判定できます
  • UUIDとULIDの生成と調べる処理はブラウザの中だけで完結し、生成した値や調べた値がサーバーへ送られることはありません

FAQ

どのバージョンのUUIDですか?

乱数から作るUUID v4と、作成時刻を先頭に持つUUID v7です。UUIDのほかに、ULIDも生成できます。「種類」で選べます。最初はUUID v4が選ばれています。

ULIDとUUID v7は何が違いますか?

どちらも先頭の48ビットがミリ秒の作成時刻で、作成した順に並びます。違うのは書き方と、残りのビットの使い方です。UUID v7は16進数とハイフンの36文字で、バージョンなどを示す6ビットが固定されています。ULIDは数字と英大文字の26文字で、時刻のあとの80ビットがすべて乱数です。ULIDはUUIDの規格に含まれないため、UUIDを求めるシステムにはv7を使ってください。

ULIDから作成時刻を取り出せますか?

取り出せます。ページ下の「UUID・ULIDを調べる」にULIDを入力すると、作成時刻をUTCと端末のタイムゾーンの日時、Unix時間(ミリ秒)で表示します。先頭の10文字が、1970年1月1日(UTC)からの経過ミリ秒です。ULIDの32種類の文字は一般的な32進数の文字(0〜9 と A〜V)と割り当てが違うため、進数変換ツールにそのまま入れても正しい値になりません。

UUID v7から作成時刻を取り出せますか?

取り出せます。ページ下の「UUID・ULIDを調べる」にUUIDを入力すると、作成時刻を表示します。ハイフンを除いた先頭の12桁が、1970年1月1日(UTC)からの経過ミリ秒を16進数で書いたものです。v1とv6の時刻も読み取れます。表示されたUnix時間を別の形式の日時に直したいときは、UNIXタイムスタンプ変換ツールを使ってください。

手元のUUIDのバージョンを確かめられますか?

確かめられます。「UUID・ULIDを調べる」に入力すると、v1〜v8のどれか、Nil UUID・Max UUIDか、RFC 9562とは別のバリアントかを表示します。バージョンは、3つ目のブロックの先頭の数字です。ただし、4つ目のブロックの先頭が 8〜b 以外のときは、その数字はバージョンを表しません。

ULIDをUUID型の列に保存できますか?

ULIDは128ビットなので、16進数32桁のUUIDの書き方にすれば、PostgreSQLのuuid型のような列に保存できます。「UUID・ULIDを調べる」にULIDを入力すると、「UUIDの書き方」に表示されます。ただし、RFC 9562のUUIDとして正しい形になるとは限らないため、UUIDのバージョンやバリアントを検査する処理には受け付けられないことがあります。

生成したUUIDは重複しませんか?

v4は122ビットの乱数のため、現実的な件数で重複することはまずありません。v7も、同じミリ秒にカウンターと62ビットの乱数がそろわない限り一致しません。ただし、一意性を仕組みとして保証するものではありません。

何件まで生成できますか?

一度に最大100件です。それ以上必要な場合は、「生成」と「すべてコピー」を繰り返してください。

大文字やハイフンなしのUUIDは作れますか?

作れます。「出力形式」の「大文字」と「ハイフンなし」にチェックを入れてください。「波かっこ付き」も選べます。生成のあとに切り替えると、表示中の値がその形式に書き換わります。

生成したUUIDをパスワードやトークンとして使えますか?

UUIDは識別子として設計されたものです。推測されにくい乱数から作られますが、ログインに使うパスワードが必要な場合は、文字の種類と長さを指定できるパスワード生成ツールを使ってください。

以前に生成したUUIDをあとから確認できますか?

できません。生成した値はどこにも保存されず、もう一度「生成」を押すか、ページを再読み込みすると消えます。

種別
ユーティリティ
カテゴリ
開発者向け
タグ
uuid
guid
uuidv4
uuidv7
ulid
generator
decoder
timestamp
developer
id
  • JWTデコーダー

    JWT(JSON Web Token)のヘッダーとペイロードをデコードして表示し、有効期限(exp)を現在の時刻と比べます。共有シークレットや公開鍵を入れれば、HS256・RS256・ES256 などの署名が一致するかも、ブラウザの中で確かめられます。

    ユーティリティ開発者向けjwtjsontokendecoderexpirationsignaturedeveloper
  • metaタグ・OGP生成ツール(title・description・Xカード)

    タイトル・説明文・URL・画像から、head に貼る title・description・canonical・OGP・X(旧Twitter)カードのタグを作成。Google検索とSNSの表示の目安、文字数、相対パスの画像URLや画像の大きさの問題も確かめられます。

    ユーティリティ開発者向けmetaogpopen-graphtwitter-cardseohtmlgeneratordeveloper
  • cron式チェッカー

    cron式(crontabの書式)を日本語の説明に直し、次回以降の実行日時を一覧で確認できます。毎日・毎週などの条件を選んで式を作ることもできます。書き方の誤りは、どのフィールドが原因かを示します。

    ユーティリティ開発者向けcroncrontabgeneratorscheduletimedeveloper