ULID / NanoID / Snowflake 生成ツール
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
使い方
フォーマット(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() で行われます。サーバーには一切データが送信されません。