ULID生成・解析

ULID をブラウザ内でまとめて生成します。単調増加(monotonic)にも対応し、ULID に埋め込まれた日時の解析、Crockford Base32 の検証、UUID 形式との相互変換もできます。

件(最大 1000 件)

ページを開いた時点で5件生成しています。

ULID を解析する

ULID を入れると、埋め込まれた日時を読み取ります。

  • 日時(日本時間) —
  • 日時(UTC / ISO 8601) —
  • Unix 時刻(ミリ秒) —
  • 乱数部(16進) —
  • UUID 形式 —

UUID から ULID へ

UUID を入れると ULID の表記に変換します。

  • ULID —

補足

  • ULID は先頭10文字が生成時刻(ミリ秒)、残り16文字が乱数の、26文字の ID です。文字列のまま並べ替えると作った順になります。
  • 「単調増加」にすると、同じミリ秒の中で作った ULID も乱数部を1ずつ増やして、必ず前より大きくします。 外すと毎回乱数を引き直すため、同じミリ秒の中では順番が保証されません。
  • 乱数は Web Crypto API(crypto.getRandomValues())から取得します。
  • 使う文字は Crockford の Base32(0-9 と A-Z から I L O U を除いた32文字)です。大文字・小文字は区別しません。 128ビットに収めるため、先頭の文字は 0〜7 に限られます。
  • UUID との変換は128ビットの並びをそのまま書き換えるだけです。ULID から作った UUID 形式の値は、 UUID のバージョン・バリアントの決まりに従っていません。
  • 生成した値や入力した値は、どこにも保存されません。

よくある質問

ULID と UUID はどう違いますか?

どちらも 128 ビットの ID ですが、ULID は先頭 48 ビットが生成時刻(ミリ秒)で、Crockford Base32 の 26 文字で書きます。文字列のまま並べ替えると作った順になるのが特徴です。UUID v4 は乱数だけで順序を持ちません。時刻順の UUID が必要なら UUID v7 も選択肢です。

「単調増加(monotonic)」にすると何が変わりますか?

同じミリ秒の中で作った ULID も、必ず前より大きくなります。仕様どおり、前回と同じミリ秒なら乱数部を 1 増やして作ります。外すと毎回乱数を引き直すため、同じミリ秒の中での順番は保証されません。

ULID から作られた日時を読み取れますか?

読み取れます。ULID を入れると先頭 10 文字の時刻を、日本時間・UTC(ISO 8601)・Unix 時刻(ミリ秒)で表示します。I・L・O・U のような ULID で使わない文字が含まれていれば、位置と打ち間違いの候補を示します。

ULID と UUID を相互に変換できますか?

できます。128 ビットの並びをそのまま書き換える変換です。ただし ULID から作った UUID 形式の値は、UUID のバージョン・バリアントの決まりに従っていません。UUID v7 を ULID に変換すると、先頭の時刻がそのまま ULID の時刻として読めます。

乱数は安全ですか? 生成した値は保存されますか?

乱数は Web Crypto API(crypto.getRandomValues())から取得しており、Math.random() は使っていません。生成した値はどこにも保存されず、ページを再読み込みすると消えます。一度に 1,000 件まで生成できます。

↑↓ 移動 / Enter 開く / Esc 閉じる