入出力データはサーバーに送信されず、どこにも保存されません。すべての処理はブラウザ上で完結します。

ULID / NanoID / Snowflake 生成ツール

フォーマット

使い方


フォーマット(ULID / NanoID / Snowflake)と生成数を選択してください。設定を変更すると自動的に再生成されます。ID をクリックするか、コピーボタンを押すとクリップボードにコピーされます。

どのフォーマットを選ぶべきか


各フォーマットは可読性・ソート可能性・長さが異なります。用途に合わせて選んでください:

  • ULID(26文字、Crockford Base32):生成時刻でソート可能。大文字小文字を区別しないアルファベットで I・L・O・U を除外。UUID 並みのユニーク性と時系列ソートを両立したいときに適する。
  • NanoID(21文字、URLセーフ):ランダムのみ、URLセーフな文字(A-Z a-z 0-9 _ -)で構成。UUID より短いが衝突確率はほぼ同等。短いトークン・共有リンク・外部公開する ID に向く。
  • Snowflake(64bit 整数):Twitter 由来の数値 ID で、ミリ秒タイムスタンプを内包。BIGINT カラムに収まり、時系列順にソート可能。数値の主キーがほしいときに有用。

3 つとも crypto.getRandomValues() を用いてブラウザ上で生成されます。Snowflake の worker ID は呼び出しごとにランダム化されるため、クライアント生成として使う分には十分ですが、厳密なサーバー協調を伴う Twitter のオリジナル実装とは異なります。

フォーマットの仕様


各フォーマットは公開仕様に準拠して生成されます:

  • ULID:48bit のミリ秒タイムスタンプ + 80bit のランダム値を Crockford Base32 でエンコード。ulid/spec プロジェクトの仕様準拠。
  • NanoID:URL セーフな 64 文字アルファベットから 21 文字を選ぶ。256 / 64 = 4 で割り切れるためモジュロ偏りなし。
  • Snowflake:Twitter エポック(2010-11-04T01:42:54.657Z)からの 41bit ミリ秒 + 10bit worker ID + 12bit シーケンスから構成。worker ID とシーケンスは生成ごとに乱数化。

安全性について


生成はすべてブラウザ標準の crypto.getRandomValues() で行われます。サーバーには一切データが送信されません。