AZ Tools

ULID デコーダー (タイムスタンプ & ランダム)

開発

ULID は 26 文字の辞書順ソート可能な識別子です:先頭 10 文字が 48 ビットのミリ秒タイムスタンプ、末尾 16 文字が 80 ビットのランダム値で、すべて Crockford Base32 です。時刻が上位ビットにあるため ULID は生成順にソートされ、これが人々がランダムな UUID の代わりに ULID を使う理由です。このデコーダーは ULID を分解します:タイムスタンプを読み取り ISO UTC、相対表示「x 前」、生のエポックミリ秒で表示し、ランダム部分を Crockford Base32 と hex の両方で表示します。復号は大文字小文字を区別せず、古典的な Crockford の紛らわしい文字を寛容に扱います — I と L は 1、O は 0 として読みます — また長さ・アルファベット・タイムスタンプが 48 ビットを超えないこと(先頭文字は 0–7)を検証します。すべてローカルで動作し、アップロードされません。

標準形01ARZ3NDEKTSV4RRFFQ69G5FAV
タイムスタンプ (UTC)2016-07-30T23:54:10.259Z
相対9y 11mo 前
エポック ms1469922850259
ランダム (Base32)TSV4RRFFQ69G5FAV
ランダム (hex)0xd6764c61efb99302bd5b

先頭 10 文字 = 48 ビット ms タイムスタンプ、末尾 16 文字 = 80 ビットランダム。Crockford Base32:I/L→1、O→0、大文字小文字を区別しない。

使い方

  1. ULID を貼り付け(26 文字、例:01ARZ3NDEKTSV4RRFFQ69G5FAV)。
  2. 生成タイムスタンプ(UTC・相対・エポック ms)を読みます。
  3. タイムスタンプやランダム値を Crockford または hex で必要に応じてコピー。

よくある質問

ULID はどう時刻を符号化しますか?
先頭 10 文字の Crockford Base32 が Unix エポック(1970-01-01)以降のミリ秒の 48 ビットカウントを保持します。48 ビットは西暦 10889 年までをカバーするため、先頭文字は 0–7 のみ可能で、それより大きいとオーバーフローとして無効になります。残り 16 文字は 80 ビットのランダム値です。
なぜ復号は大文字小文字を区別しないのですか?
ULID は人に優しく設計された Crockford Base32 を使います:大文字小文字を区別せず、視覚的に紛らわしい I・L を 1、O を 0 として扱います。本ツールは復号前にこれを正規化するので、小文字で入力したり 0 の代わりに O を使っても正しく復号されます。
ULID は UUID とどう違いますか?
どちらも 128 ビット ID ですが、ULID はタイムスタンプを上位ビットに持つ 26 文字のソート可能な Base32 で符号化され、ULID のリストはすでに生成順です。ランダムな UUID(v4)は時刻を持たず意味のあるソートができません。UUID v7 が同じ要求への標準的な答えで、それは UUID インスペクタを使ってください。
タイムスタンプは正確ですか?
はい — ミリ秒タイムスタンプは ULID に直接保存されるため、生成器の時計が正確であれば生成時刻はミリ秒単位で正確です。相対時間はお使いのデバイスの現在時計に対して計算されます。

関連ツール