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文字がタイムスタンプ) | 先頭にミリ秒単位のタイムスタンプを持つため、生成順に文字列としてソートできる。 |
Nano IDとは
Nano IDは、URLセーフな文字だけで構成される短いランダムIDを生成する仕組みです。既定では64文字種(A-Za-z0-9_-)から21文字を組み合わせて作られ、UUIDよりも短くしながら実用上十分なランダム性を確保できます。このツールでは文字種(既定・英数字・小文字・大文字・数字・16進数)と長さ、生成件数を自由に指定して、まとめてIDを作成できます。
生成処理はすべてブラウザ内で完結し、Web Crypto APIの暗号論的乱数を使うためtoolbase.ccのサーバーには一切送信されません。入力フォームに秘密情報を扱う必要がなく、生成したIDをそのままコピーしてURLのスラッグやテストデータ、ファイル名などに利用できます。
Nano IDの使い方
- 文字種を選ぶ 既定(URLセーフ64文字)・英数字・小文字のみ・大文字のみ・数字のみ・16進数から用途に合う文字種を選びます。
- 長さを設定する 生成するIDの文字数を指定します。短くするほど衝突確率は上がるため、用途に応じたバランスを意識します。
- 生成件数を指定する 一度に作成したいIDの数を入力します。テストデータの一括作成など複数件必要な場合はここでまとめて指定できます。
- 生成ボタンを押す 「生成する」を押すと、指定した条件に沿ったIDがブラウザ内で即座に作成され一覧表示されます。
- コピーする 個々のIDは「コピー」ボタンで、まとめて使いたい場合は「すべてコピー」で一括コピーできます。
使いこなすためのヒント
- Nano IDはWeb Crypto APIベースの暗号論的乱数で生成され、ブラウザ内で処理されるためtoolbase.ccのサーバーには一切送信されません。
- 既定の64文字アルファベット(
A-Za-z0-9_-)は記号やスペースを含まないため、そのままURLのパスやファイル名として安全に使えます。 - 文字種を「数字のみ」や「16進数」に絞ると、既存システムのID形式(例: 注文番号は数字のみ)に合わせたIDを生成できます。
- 長さを短くするほど衝突確率は上がります。発行数が多いシステムでは既定値の21文字前後を、少量のテストデータには8〜10文字程度でも十分な場合があります。
- 生成件数を増やしてから「すべてコピー」を使うと、テスト用データやシードデータの一括作成に便利です。
Nano IDの活用シーン
URLのスラッグ生成
短縮URLや共有リンクのパス部分に使う一意なIDとして、記号を含まないURLセーフな文字列をそのまま使えます。
テスト・ダミーデータの投入
開発中のデータベースに投入するサンプルレコードの主キーや識別子として、必要な件数を一括生成できます。
セッションIDやリクエストIDの発行
ログの追跡やAPIリクエストの識別に使う一時的なIDとして、短く扱いやすい文字列を用意できます。
衝突を避けたいファイル名の採番
アップロードファイルの保存名にランダムなIDを付与し、同名ファイルによる上書きを防ぎたい場合に活用できます。
簡易的なAPIキーや参照コードの発行
本番用の認証情報ではなく、社内ツールや検証環境で使う短い参照コードの採番に手軽に使えます。
用語集
- Nano ID
- URLセーフな文字種のみで構成される短いランダムID生成方式です。既定では21文字・64文字種で高いランダム性を確保します。
- UUID
- RFCで標準化された128ビットの識別子です。ハイフン区切りの36文字の16進数表記が標準形式として広く使われています。
- ULID
- 先頭にミリ秒単位のタイムスタンプを持つ26文字のIDです。生成順に文字列としてソートできる点がNano IDやUUIDと異なります。
- Web Crypto API
- ブラウザが標準で備える暗号処理用のAPIです。予測困難な乱数を生成でき、IDの安全性の根拠になっています。
- 暗号論的乱数
- 次の値を統計的に予測できないよう設計された乱数です。IDの推測やなりすましのリスクを下げます。
- 衝突確率
- 異なる入力から偶然同じIDが生成されてしまう確率です。文字数・文字種が多いほど衝突確率は低くなります。
- 誕生日問題
- 集団の人数が増えるほど同じ誕生日の人が現れやすくなる現象で、IDの衝突確率を見積もる際の近似計算に使われます。
よくある質問
余談ですが ― なぜ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¹⁹個と計算でき、実用上の心配はほぼありません。