ULID 生成 — 時系列ソート可能な ID をまとめて発行
ULID (Universally Unique Lexicographically Sortable Identifier) を 1〜1000 件まとめて生成します。48 bit のミリ秒タイムスタンプ + 80 bit のランダム値を Crockford Base32 で 26 文字に符号化するので、UUID v4 と違って生成時刻で自然にソートでき、ログ ID やイベント ID、データベースの主キーに使えます。同じミリ秒内で生成しても乱数衝突しない monotonic オプション、prefix (例 user_) 付与、改行 / カンマ区切り出力、ダウンロードに対応。crypto.getRandomValues ベースで、入力もタイムスタンプも一切外部送信されず、すべてブラウザ内で完結します。
使い方
生成数を選び、必要に応じて Prefix (例: `user_`) や区切り、Monotonic オプションを設定して「生成」を押すと、ULID が一覧表示されます。1 件ずつコピーするか、「全件コピー」「ダウンロード」でまとめて取り出せます。ULID は文字列としてそのままソートすると生成時刻順に並ぶので、ログやイベント ID、データベース主キーに使えます。
よくある質問
- ULID と UUID v4 はどう違いますか?
- ULID は先頭 48 bit がミリ秒タイムスタンプなので、辞書順ソートで自動的に生成時刻順に並びます。UUID v4 は完全ランダムなので順序性がなく、データベースの B-tree インデックスを断片化させやすいという欠点があります。RFC 9562 で標準化された UUID v7 は ULID と同じく時刻ベースですが、ULID は 26 文字で UUID より少し短く、ハイフンが入らないので URL や CLI で扱いやすいです。
- Monotonic オプションは何のためにありますか?
- 同じミリ秒内で複数の ULID を生成する場合、Monotonic OFF だと乱数部分が独立に生成されるので順序が崩れる可能性があります。Monotonic ON にすると、同じミリ秒内では前回の乱数部分に +1 して順序を保証します。1 ミリ秒で 2^80 件まで生成できますが、繰上りで上限に達するとタイムスタンプを +1 ms してリセットします。
- Prefix を付けると ULID 仕様に反しませんか?
- Stripe ID (`pi_...`)、Slack ID (`U...`)、AWS リソース ID (`i-...`) のように、用途別 prefix を付けるのは現代的なシステムでは一般的です。ただしソート時に prefix も含めて比較されるので、別ドメインの ID が混ざるとソート性が崩れる点に注意してください。
- 出力が 26 文字なのはなぜですか?
- ULID 仕様では 128 bit を Crockford Base32 (0-9 と A-Z から I/L/O/U を除いた 32 文字) で符号化します。128 / 5 = 25.6 → 26 文字。Crockford Base32 は混同しやすい文字を除外しているので、人が読み書きしやすいのが特徴です。
- 小文字でも有効な ULID ですか?
- ULID 仕様としては大文字が正規ですが、case-insensitive で比較する実装が多く、小文字でも実用上は動きます。本ツールはデフォルトで仕様準拠の大文字、必要な場合のみ小文字に切り替えてください。
- 入力データはサーバーに送信されますか?
- いいえ。crypto.getRandomValues と Date.now() のみを使い、すべてブラウザ内で完結します。生成されたタイムスタンプも一切外部に送られません。
類似のツール
UUID 生成 — v4 / v7 をまとめて発行
UUID v4 (完全ランダム) と UUID v7 (タイムスタンプ付き) を 1〜100 件まとめて生成できます。crypto.getRandomValues ベースでブラウザ内処理。
UUID 解析 — バージョン / 変種 / タイムスタンプを読み取り
UUID 文字列を貼り付けるだけで、バージョン (v1〜v8 / Nil / Max)、変種 (RFC 9562 / Microsoft / 古い NCS)、ハイフン付き / 無し / 波括弧 / URN 表記、整数 (BigInt) とバイト列を一覧表示します。UUID v1 / v6 はミリ秒精度の生成時刻と MAC アドレス、UUID v7 は UNIX 時刻 (ms) を逆算。波括弧やスペース、urn:uuid: プレフィックス、大文字混在も自動で正規化。入力データはサーバーに送信されず、すべてブラウザ内で完結します。
パスワード生成 — 強度 / 文字種 / 桁数指定
強いランダムパスワードを 1〜25 件まとめて生成できます。長さ・文字種・紛らわしい文字の除外を選択可。crypto.getRandomValues ベースでブラウザ内処理。
バーコード生成 — JAN / EAN / UPC / CODE128 / CODE39
数字や文字列を 1 次元バーコード (JAN-13 / EAN-13・JAN-8 / EAN-8・UPC-A・CODE128・CODE39・ITF・Codabar/NW-7・MSI) に変換し、PNG / SVG として保存できます。バーの太さ・高さ・色・余白や、下部の数字表示の有無を細かく調整可能。チェックディジットの検証も自動で行います。生成はすべてブラウザ内で完結し、入力した値が外部に送信されることはありません。