Nano ID生成ツール
URLセーフな短い一意のIDをブラウザ上で一括生成します。文字種(既定・英数字・小文字・大文字・数字・16進数)と長さを自由に指定でき、UUIDより短いIDが必要な場面に最適です。
ID形式の比較
| 形式 | 長さ | 文字種の異なり数 | 生成順に並べ替え可能か | 説明 |
|---|---|---|---|---|
| Nano ID | 既定21文字(1〜64文字で指定可) | 64文字 | いいえ(完全ランダム) | URLセーフな文字のみで構成される短いランダムID。文字種・長さを自由に変更できる。 |
| UUID v4 | 36文字(ハイフン4個含む) | 16文字(16進数) | いいえ(完全ランダム) | RFC 9562で標準化された128ビットの識別子。ハイフン区切りの16進数表記が標準形式。 |
| ULID | 26文字 | 32文字(Base32) | はい(先頭10文字がタイムスタンプ) | 先頭にミリ秒単位のタイムスタンプを持つため、生成順に文字列としてソートできる。 |
Tips
- Nano IDはWeb Crypto APIベースの暗号論的乱数で生成され、ブラウザ内で処理されるためtoolbase.ccのサーバーには一切送信されません。
- 既定の64文字アルファベット(
A-Za-z0-9_-)は記号やスペースを含まないため、そのままURLのパスやファイル名として安全に使えます。 - 文字種を「数字のみ」や「16進数」に絞ると、既存システムのID形式(例: 注文番号は数字のみ)に合わせたIDを生成できます。
- 長さを短くするほど衝突確率は上がります。発行数が多いシステムでは既定値の21文字前後を、少量のテストデータには8〜10文字程度でも十分な場合があります。
- 生成件数を増やしてから「すべてコピー」を使うと、テスト用データやシードデータの一括作成に便利です。
よくある質問
短いIDをURLやファイル名にそのまま使いたい場合はNano IDが適しています。RFCで標準化された形式が必要、または他システムとの相互運用性を重視する場合はUUID(特にv4)が無難です。
既定の21文字・64文字種の場合、126ビット相当のランダム性を持つため実用上は無視できるレベルです。衝突確率が50%に達するまでに必要な生成数は約1.09×10¹⁹個と計算されます。
使えますが、UUID v4と同様に完全ランダムなためB-Treeインデックスへの挿入効率はAUTO_INCREMENTに劣ります。挿入順のソート性が必要な場合は、タイムスタンプを先頭に持つULIDなどの検討をおすすめします。
はい。同じ長さでも文字種の異なり数(アルファベットサイズ)が小さいほどランダム性(衝突確率への強さ)は下がります。数字のみ(10文字種)で64文字種アルファベットと同等の安全性を得るには、より長い文字数が必要です。
余談ですが ― なぜNano IDはUUIDより短くできるのか
Nano IDは2017年にPostCSSの開発者Andrey Sitnikが公開したJavaScript製のID生成ライブラリです。UUIDよりも短く、依存関係を持たない軽量な実装(コード量はわずか数百バイト)でありながら暗号論的に安全な乱数を使う設計が評価され、npmで週間数千万ダウンロードを記録する定番ライブラリになりました。
IDの短さは使う文字種の多さで決まります。UUIDは16進数(16文字種)だけで128ビットを表現するため36文字必要ですが、Nano IDは64文字種を使うことで同程度のランダム性(既定設定で126ビット)をわずか21文字で表現できます。1文字あたりの情報量(log₂64=6ビット)が16進数(log₂16=4ビット)より大きいことが短縮の理由です。
既定設定(21文字・64文字種)が持つ126ビットのランダム性は、UUID v4の122ビットとほぼ同等です。衝突確率が50%に達するまでに必要な生成数は、誕生日問題の近似式から約1.09×10¹⁹個と計算でき、実用上の心配はほぼありません。