無料 ULID 生成ツール — ULID を生成 & デコード
ULID をオンラインで生成・デコード・変換。無料で 100% ブラウザ内処理。任意の ULID から埋め込みタイムスタンプを抽出し、ULID と UUID を相互変換、一括生成、モノトニックモードにも対応。サーバーへ送信されることは一切ありません。
各 ULID は新しい 80 ビットのランダム性を使います。
ULID も UUID もどちらも 128 ビットなので、変換はロスレスで可逆です。従来の UUID が必要ですか? UUID Generator をお試しください。
ULID とは?
ULID——Universally Unique Lexicographically Sortable Identifier(辞書順ソート可能な汎用一意識別子)——は、ランダムな UUIDv4 の実用上の弱点を解消しつつ、その最良の特性を保つために作られた 128 ビットの識別子です。その特性とは、中央の調整役なしにどこででも生成でき、一意であると確信できることです。違いは、ULID が時間順にソート可能な点です。Crockford の Base32 で 26 文字として表現され、2 つの部分に分かれます。先頭 10 文字が Unix エポックからのミリ秒を数える 48 ビットのタイムスタンプ、末尾 16 文字が 80 ビットの暗号学的に安全なランダム性です。時間を先頭に置き、順序を保つアルファベットで符号化すれば、識別子は単なる文字列として時系列にソートされます。
この 1 つの設計選択がデータベースに大きな影響を及ぼします。ランダムな UUIDv4 の主キーは挿入のたびに B-tree インデックスの予測不能な場所に着地し、インデックスを断片化させ、キャッシュを酷使し、テーブルが大きくなるにつれて書き込み性能を徐々に劣化させます。ULID は時間プレフィックス付きなので、毎回インデックスの末尾かその近くに着地します——挿入はシーケンシャルに保たれ、インデックスはコンパクトに保たれ、時間ウィンドウに対する範囲スキャンが安価になります。UUID の調整不要な生成と、自動インクリメント整数の挿入局所性を、推測可能な連番カウンターを露出させることなく両立できます。
符号化の詳細は意図的なものです。Crockford の Base32 は I、L、O、U の各文字を除外しており、これは数字の 1 と 0 との視覚的な混同を避けるためと、入力時に文字列を大文字小文字の区別なく扱えるようにするためです。結果として、ハイフンなしの 26 文字となり、URL、ファイル名、リクエストヘッダーにエスケープなしで入れても安全で——UUID のハイフン付き 36 文字より明らかに短くなります。48 ビットのタイムスタンプは長期間枯渇しません。ミリ秒カウンターがオーバーフローする前に、西暦 10889 年までの日付を表現できます。
ULID はあらゆる用途に最適というわけではありません。埋め込まれたタイムスタンプはレコードがいつ作られたかを明かします。これはデバッグや順序付けには利点ですが、それを露出させたくない場合はわずかな情報漏洩になります。また、スタックが UUID 型にコミットしているなら、標準的な UUID 形式の中で同じ時間プレフィックスの考え方を適用する UUIDv7 を好むかもしれません。しかし、どのノードでも発行でき、タイムスタンプを読み戻せる、短く URL セーフでソート可能な識別子が欲しいなら、ULID は優れた既定の選択です——そしてただの 128 ビットなので、このツールの Convert タブでいつでも UUID と相互変換できます。
// Browser / Node with the `ulid` package
import { ulid, decodeTime } from 'ulid';
const id = ulid(); // e.g. 01KVT0F720ZK9N4T2QX7VR8WMC
const ts = decodeTime(id); // 1782210600000 -> 2026-06-23T10:30:00.000Z
// Monotonic factory: strictly increasing within the same millisecond
import { monotonicFactory } from 'ulid';
const next = monotonicFactory();
next(1782210600000); // 01KVT0F720ZK9N4T2QX7VR8WMC
next(1782210600000); // 01KVT0F720ZK9N4T2QX7VR8WMD
next(1782210600000); // 01KVT0F720ZK9N4T2QX7VR8WME 主な機能
生成・デコード・変換を 1 ページで
3 つのタブが ULID のワークフロー全体をカバーします。新しい ULID を発行し、既存の ULID をデコードしてタイムスタンプを読み、ULID と UUID をロスレスに相互変換します。競合ツールの多くは最初の機能しか持ちませんが、ここでは完全な往復が 1 ページに収まっています。
タイムスタンプデコーダー
任意の ULID を貼り付けると、作成された正確なミリ秒を読めます——UTC、ローカル時刻、生の Unix ミリ秒で表示——加えて 80 ビットのランダム性セグメントも。識別子がいつ発行されたかをデータベース参照なしに監査できます。
ロスレスな ULID ↔ UUID 変換
ULID も UUID も 128 ビットなので、変換は正確で可逆です。Convert タブは貼り付けた形式を自動判定してもう一方を生成し、ソート可能な ULID と UUID 型のカラムや API の橋渡しを 1 ビットも失わずに行えます。
モノトニックモード
同じミリ秒内に作られた ID でも厳密な順序が必要ですか? モノトニックモードはランダム性をインクリメントして各 ULID が前より確実に大きくなるようにし、タイトな挿入ループを完全にソートされたまま保ちます。
一括生成
一度に最大 50 件の ULID を作成し、Copy All でセット全体をコピーできます。テストフィクスチャのシード、一括挿入、ルックアップテーブルの投入を、50 回クリックすることなく行えます。
カスタムタイムスタンプ
現在時刻ではなく特定の瞬間を埋め込みます——決定論的なテストデータや、ソート可能性を保ったまま移行作業中にレコードをバックデートするのに便利です。
暗号学的に安全なランダム性
80 ビットのランダム部分は、ブラウザの CSPRNG である crypto.getRandomValues から得られます——Math.random は決して使いません——ので、各 ULID は予測不可能で、同じミリ秒内の衝突は極めて起こりにくくなります。
100% プライベート、ブラウザのみ
すべての ULID の生成・デコード・変換はお使いのデバイス上で完結します。ネットワークリクエストもログもストレージもありません——DevTools →「ネットワーク」で自分で確認できます。識別子が第三者に届くことは決してありません。
ULID の例
ULID を 1 件生成する
Mode: Standard · Quantity: 1
01KVT0F720ZK9N4T2QX7VR8WMC
ULID は Crockford の Base32 で 26 文字です。先頭 10 文字が 48 ビットのミリ秒タイムスタンプを符号化し、末尾 16 文字が crypto.getRandomValues から取得した 80 ビットの暗号学的に安全なランダム性を符号化します。タイムスタンプが先頭にあり、Base32 がバイト順を保持するため、後から生成された ULID は単なる文字列としても常に先に生成されたものより後にソートされます——別途インデックスは不要です。Copy をクリックして値を取得するか、Generate を再度クリックすると新しい値が得られます。
ULID をデコードしてタイムスタンプを読む
01ARYZ6S41TSV4RRFFQ69G5FAV
Timestamp (UTC): 2016-07-30T22:36:16.385Z · Randomness: TSV4RRFFQ69G5FAV
デコードは先頭 10 文字を、作成時に埋め込まれた 48 ビットのミリ秒値へ逆変換します——ここでは 1469918176385 ms で、2016-07-30T22:36:16.385Z にあたります。これは ULID 仕様の正規の例です。Decode タブはタイムスタンプを UTC とローカル時刻で表示し、生の Unix ミリ秒、そして 80 ビットのランダム性セグメントも示すので、データベースを参照せずに識別子がいつ作られたかを正確に監査できます。
ULID を UUID に変換する
01KVT0F720ZK9N4T2QX7VR8WMC
019ef407-9c40-fcd3-5268-57e9f784728c
ULID も UUID もどちらもちょうど 128 ビットなので、変換はロスレスで完全に可逆です——同じビットを Crockford の Base32 からハイフン付き 16 進数へ再符号化するだけです。Convert タブは貼り付けたのが ULID か UUID かを自動判定し、もう一方の形式へ変換します。これにより、ULID を UUID カラムに保存したり、UUID しか扱えないシステムに ULID を渡したりしておき、ソート可能な文字列が再び必要になったら戻すことができます。
モノトニック ULID を一括生成する
Mode: Monotonic · Quantity: 3 (same millisecond)
01KVT0F720ZK9N4T2QX7VR8WMC 01KVT0F720ZK9N4T2QX7VR8WMD 01KVT0F720ZK9N4T2QX7VR8WME
同じミリ秒内で多数の ID が作られると、通常の ULID は 10 文字の時間プレフィックスを共有しますが、ランダムな末尾は順序を持ちません。モノトニックモードがこれを解決します。1 ミリ秒内では直前のランダム性を 1 だけインクリメントするので、各 ULID は厳密に前のものより大きくなり、バッチは完全にソートされたままになります。3 つの値が末尾の 1 文字(C, D, E)だけ異なることに注目してください——サブミリ秒単位でも順序を保つ必要がある高スループットの挿入に最適です。
特定の日時の ULID を生成する
Custom time: 2026-06-23 10:30:00 UTC
01KVT0F720… (time component 01KVT0F720)
カスタムタイムスタンプを設定すると、生成ツールは現在時刻ではなくその正確な瞬間を埋め込みつつ、ランダム性は引き続き安全な RNG から満たします。2026-06-23T10:30:00.000Z に対応する 10 文字の時間コンポーネントは 01KVT0F720 です。これは決定論的で時間順のテストフィクスチャを用意したり、移行作業でソート可能性を保ったままレコードをバックデートしたりするのに役立ちます。
ULID 生成ツールの使い方
- 1
生成モードを選ぶ
Standard モードは各 ULID に新しい 80 ビットのランダム性を与えます。Monotonic モードは同じミリ秒内に作られた ULID が厳密に増加することを保証します——サブミリ秒単位でも順序を保つ必要がある高スループットの挿入にはこれを選んでください。
- 2
生成数、大文字小文字、(必要なら)カスタム時刻を設定する
1〜50 件の ULID を一度に生成します。出力は既定で UPPERCASE——ULID の正規形——ですが、lowercase に切り替えることもできます。時刻を空のままにすると現在時刻が刻まれ、カスタムタイムスタンプを設定するとフィクスチャやバックデートしたレコード用に特定の瞬間を埋め込めます。
- 3
生成してコピーする
Generate ULID をクリックします。各値の Copy で 1 件をコピーするか、Copy All でバッチ全体を改行区切りのテキストとして取得し、コード、シードファイル、スプレッドシートにそのまま貼り付けられます。
- 4
ULID をデコードしてタイムスタンプを読む
Decode タブで任意の ULID を貼り付けると、48 ビットの作成タイムスタンプを UTC とローカル時刻で、生の Unix ミリ秒を、80 ビットのランダム性を抽出します——すべてブラウザ内で完結し、参照は不要です。
- 5
ULID と UUID を変換する
ULID ↔ UUID タブで ULID か UUID を貼り付けると、ツールが入力を自動判定してもう一方の形式へロスレスに変換します。ULID を UUID カラムに保存したり、UUID 専用システムに ULID を渡してソート可能な文字列が必要になったら戻したりできます。
Common Errors
同じミリ秒の ULID を順序付けされていると見なす
1 ミリ秒内に作られた通常の ULID は時間プレフィックスを共有しますが、ランダムな末尾は順序を持たないので、相対的な順序は未定義です。その速度で厳密な順序に依存するなら、代わりにモノトニックモードを使ってください。
Standard mode, 3 IDs in one ms → order within the ms is random
Monotonic mode, 3 IDs in one ms → …WMC < …WMD < …WME
変換した ULID が有効な UUIDv4 だと期待する
ULID を UUID 形式に変換すると同じ 128 ビットが再符号化されますが、UUID のバージョンとバリアントのフィールドは設定されません。結果は有効な 128 ビット UUID 文字列ですが、ライブラリがそれらのビットを検査するとバージョン 4 や 7 とは報告されません。
uuid.version(ulidToUuid(id)) → not 4 (bits are the ULID's)
Treat it as an opaque 128-bit value, or generate a real UUIDv7 instead
ULID に小文字の i、l、o を手入力する
Crockford の Base32 は I、L、O、U を除外します。デコーダーは I と L を 1 に、O を 0 にマッピングしますが、それらの文字を ULID に手で打ち込むのは誤りのもとです。ULID は打ち直さずにコピーしてください。
01ARYZ6S41TSV4RRFFQ69G5FAO → ambiguous O
01ARYZ6S41TSV4RRFFQ69G5FAV → canonical characters only
ULID の用途
- ソートされたままのデータベース主キー
- ULID を主キーとして使うと、UUID の調整不要な生成と、自動インクリメント整数の挿入局所性を両立できます。時間プレフィックス付きなので、新しい行は UUIDv4 のように散らばるのではなく B-tree インデックスの末尾近くに追加され、テーブルが大きくなっても挿入が高速でインデックスがコンパクトに保たれます。
- 中央シーケンスのない分散システム
- サービス、エッジワーカー、クライアントなど任意のノードで、共有カウンターも衝突調整もなしに識別子を生成しつつ、後からすべてを作成時間順にソートできます。ULID はマイクロサービスに、割り当てのためのデータベース往復なしで一意かつ順序付けされたキーを提供します。
- イベントログとメッセージ ID
- イベント、ログ行、キューメッセージにモノトニック ULID を刻めば、多数が同じミリ秒内に生成されても厳密な時系列順に保たれます。時間ウィンドウの範囲スキャンが単純な文字列比較になります。
- URL セーフな公開識別子
- ULID はハイフンなしの 26 文字で URL セーフなアルファベットを使うため、パス、ファイル名、ヘッダーにエスケープなしで入り、36 文字の UUID より短くなります。埋め込まれたタイムスタンプを後でデコードすれば、リソースがいつ作られたかが分かります。
- UUID 専用システムへの橋渡し
- UUID しか受け付けないデータベースカラムや API を扱っていますか? ソート可能な ULID を生成し、保存や転送のために UUID 形式へ変換しておき、コンパクトでソート可能な文字列が必要になったら戻してください——128 ビットの値は両方向で正確に保たれます。
- 決定論的なテストフィクスチャ
- カスタム時刻オプションを使って選んだタイムスタンプの ULID でテストをシードすれば、フィクスチャは再現可能で、すでに時間順になっています。アサーションでそれらをデコードして、コードが記録した作成時間を検証できます。
ULID の仕組み
- 128 ビットレイアウト:48 ビットの時間 + 80 ビットのランダム性
- ULID はちょうど 128 ビットです。上位 48 ビットがミリ秒単位の Unix タイムスタンプ、下位 80 ビットがランダムです。Crockford の Base32 で 1 文字あたり 5 ビットに符号化すると、時間に 10 文字、ランダム性に 16 文字——合計 26 文字になります。48 ビットは最上位の 5 ビットグループを満たさないため、先頭文字は常に 7 以下です。
- Crockford の Base32 符号化
- ULID は Crockford の Base32 アルファベット(0〜9 と A〜Z から I、L、O、U を除く)を使います。この 4 文字を除くことで数字の 1 と 0 との混同を避け、デコーダーが入力時に文字列を大文字小文字の区別なく扱い、I と L を 1 に、O を 0 にマッピングできるようにします。このアルファベットは順序付けられており、それが符号化された文字列を基になるビットと同じ順序でソートさせる理由です。
- 辞書順ソート可能性
- タイムスタンプが最上位コンポーネントであり、Base32 アルファベットが順序を保持するため、2 つの ULID を文字列として比較した結果は、それらの 128 ビット値を比較した結果と同じになり、それはまた作成時間を比較した結果と同じになります。これが、単純な ORDER BY や配列ソートが追加のインデックスなしで時系列順を生み出せる理由です。
- ミリ秒内のモノトニック性
- ULID 仕様のモノトニックオプションは、同じミリ秒内に発行された ID の順序を安定に保ちます。あるミリ秒の最初の ID のランダム性は通常通り生成され、そのミリ秒内の後続の各 ID は直前のランダム値に 1 を足したものになります。このツールは 80 ビットのランダム性をビッグエンディアン整数としてインクリメントすることでこれを実装しています。
- crypto.getRandomValues による安全なランダム性
- 80 ビットのランダム部分は、Math.random ではなく Web Crypto の CSPRNG である crypto.getRandomValues から満たされます。80 ビットのエントロピーがあれば、同じミリ秒内に何百万もの ULID を生成しても衝突確率は無視できるほど小さく保たれます。
- ULID ↔ UUID は純粋な再符号化
- ULID と UUID の変換はビットを一切変えません——同じ 128 ビットを Crockford の Base32 からハイフン付き 16 進数へ、あるいはその逆へ再符号化するだけです。その結果、往復は正確です。ULID を UUID に変換して戻すと、元とバイト単位で同一になります。なお、ULID のバイトは UUID のバージョンとバリアントのフィールドを設定しないので、結果として得られる UUID は有効な 128 ビット値ですが、バージョンタグ付きの UUIDv4 や v7 ではありません。
ULID のベストプラクティス
- 高スループットの挿入にはモノトニックモードを使う
- システムが 1 ミリ秒に複数の識別子を作成でき、順序に依存するなら、モノトニック ULID を生成してください。通常の ULID はミリ秒内では順序を持ちませんが、モノトニックなものは厳密に増加するので、どれだけ速く発行してもバッチはソートされたままです。
- ULID をコンパクトに保存する
- ULID は 128 ビットです——スペースとインデックスサイズが重要なら、26 文字のテキストフィールドではなく 16 バイトのバイナリか UUID 型のカラムとして保存してください。人間や URL が目にする端でのみ Base32 文字列に変換します。このツールの Convert タブが保存用の UUID 形式を提供します。
- タイムスタンプが可視であることを忘れない
- ULID は、それを読める誰に対しても作成時間を明かします。これはデバッグや順序付けには良いことですが、作成時間の露出が懸念される場合——例えば公開向けの識別子では——その漏洩を比較検討するか、順序が重要でないなら完全にランダムな UUIDv4 を使ってください。
- 常に CSPRNG で生成する
- 一意性の保証は 80 ビットのランダム部分が予測不可能であることに依存します。このツールがそうしているように crypto.getRandomValues のような暗号学的に安全なソースを使ってください——Math.random は決して使わないこと。その予測可能性は識別子の衝突や推測を許す可能性があります。
- ULID か UUIDv7 かを意図的に選ぶ
- どちらも時間順の 128 ビット ID を提供します。最も短い URL セーフな文字列には ULID を、バージョンとバリアントのビットを持つ標準的な UUID 形式に留まる必要があるなら UUIDv7 を選んでください。システムごとに 1 つに標準化し、境界をまたぐ必要があるときに Convert タブを使ってください。
ULID — よくある質問
ULID とは何ですか?
ULID と UUID——どちらを使うべきですか?
ULID はソート可能ですか?
ULID のタイムスタンプはどうやってデコードしますか?
モノトニック ULID とは何ですか?
この ULID 生成ツールは安全でプライベートですか?
ULID と UUIDv7 の違いは何ですか?
関連ツール
すべてのツールを見る →Bcrypt ハッシュ生成・検証ツール
セキュリティツール
bcrypt パスワードハッシュをオンラインで生成・検証。コスト調整、$2b$/$2a$/$2y$ プレフィックス対応。100% ブラウザ内で処理し、パスワードは一切送信されません。
JWT デコーダー — オンライン解析ツール
セキュリティツール
JWTトークンを無料のJWTデコーダーでオンラインデコード。ヘッダー、ペイロード、署名、有効期限、アルゴリズム、クレームを即座に検査できます。100%ブラウザ動作 — トークンはデバイスから外に出ません。登録不要、追跡なし。
JWT エンコーダー&ジェネレーター
セキュリティツール
無料のオンラインJWTジェネレーター&エンコーダー。ヘッダーとペイロードを組み立て、HS256、RS256、ES256で即座に署名できます。100%ブラウザ動作 — シークレットと鍵はデバイスから外に出ません。
無料 JWT シークレット生成ツール — HS256/384/512
セキュリティツール
HS256/384/512 向けの強力で RFC 準拠の JWT シークレットを生成。100% ブラウザ内で処理し、サーバーには一切送信されません。base64url・base64・hex で .env 用にコピー。
MD5ハッシュジェネレーター&ファイルチェックサムツール
セキュリティツール
無料オンラインMD5ハッシュ生成ツール。ブラウザ上でMD5・SHA-256・SHA-1・SHA-512のハッシュ値を即座に生成。テキストやファイルのチェックサム検証・比較、ワンクリックコピー対応。登録不要でデータはサーバーに送信されません。
ランダムパスワード生成 — カスタマイズ可能&安全
セキュリティツール
無料のオンラインランダムパスワード生成ツール。ブラウザ上で安全な強力パスワードを即座に自動生成できます。長さや文字種のカスタマイズ、最大50個の一括生成に対応。エントロピー分析付き強度メーター搭載。データはサーバーに送信されません。