NanoID 生成ツール

オンラインで NanoID を生成します。デフォルトではURLセーフな21文字(約126ビットのランダム性)で、長さや使用する文字(アルファベット)をカスタマイズ可能です。

フォーマット
生成された ID
準備完了。ブラウザ上で NanoID を生成します。

IDの構造

レイアウト
デフォルトでは、A-Z、a-z、0-9、アンダースコア(_)、ハイフン(-)からなる、URLセーフな21文字で構成されます。
エントロピー
デフォルトの64種類の文字セット、および21文字の長さにおいて、約126ビットのエントロピーを持ちます。
時間
タイムスタンプは含まれません。カスタム文字セットに特定の意味を持たせない限り、NanoIDは完全にランダムな値となります。
衝突リスク
衝突リスクは、設定した長さや文字の種類によって変化します。デフォルト設定であれば、実用上 UUID v4 と同等の安全性が確保されます。
生成例
p7jCVv6mx8nSvPgSfpK6X

ID は強力なブラウザの乱数生成器を使用してローカルで生成されます。BroBroGo に送信されることはありません。

よくある質問

なぜ NanoID を使用するのですか?

NanoIDはUUIDよりも短く、デフォルトでURLセーフであり、デフォルトの長さと文字セットを維持すれば非常に高いランダム性を発揮します。

使用する文字セットをカスタマイズできますか?

はい、可能です。NanoID生成ツールでは、文字セットや長さのカスタマイズオプションを提供しています。ただし、文字セットを狭めたり長さを短くしたりすると、衝突リスクが高まります。

Nano ID生成ツール:カスタマイズ可能な軽量IDをブラウザ内で生成

このページは、Nano ID形式を用いた一意な識別子を生成するツールです。Nano IDは、デフォルトで21文字の長さを持ち、URL-safeな文字セット(A-Z、a-z、0-9、ハイフン、アンダースコア)を使用します。UUIDの36文字やULIDの26文字と比べて短く、同じくらいの衝突耐性を提供できる点が最大の特徴です。長さは2~36文字の範囲でスライダー調整可能で、アルファベットは編集可能なテキストフィールドで指定します。変更は即座に反映され、生成されたIDはブラウザ内のcrypto.getRandomValuesによる強力な乱数で安全に作られます。サーバーにデータが送られることは一切なく、プライバシーを重視する開発者にとって信頼できる選択肢です。

パラメータの調整と即時反映

ID生成に影響する3つのパラメータがあります。まず「Count」は1~100の範囲で、同時に生成するIDの数を指定します。デフォルトは1です。「Length」はスライダーで2~36、デフォルトは21です。この値が小さいほどIDは短くなりますが、衝突確率は上がります。「Alphabet」はデフォルトでURL-safe文字(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-)が設定されており、任意に編集できます。例えば数字だけに絞ったり、紛らわしい文字(l1O0など)を除外することが可能です。

これらの値を変更すると、直ちにIDリストが再生成されます。カウントや長さを変えた場合も同様です。生成された各IDをクリックすると、そのIDだけがクリップボードにコピーされます。全IDをまとめてコピーする「Copy all」ボタンも用意されています。

エッジケース:アルファベットが1文字の場合

アルファベットは最低2種類の異なる文字を含む必要があります。もし編集によりアルファベットが1文字だけになると、生成結果はクリアされ、ID数は0になります。同時に「Copy all」ボタンは無効化され、ステータスには「Alphabet needs at least 2 different characters.」と表示されます。これは、1文字のアルファベットでは実質的に一意なIDを生成できないためです。Nano IDの衝突耐性は、文字の組み合わせに依存します。アルファベットサイズがn、長さがLのとき、可能なIDの総数はn^L通りで、デフォルトでは64^21という巨大な空間になります。アルファベットが1文字だと1^L = 1となり、常に同じ文字列しか生成できないため、この制限は合理的です。

ブラウザ側の乱数生成とその信頼性

生成処理はすべてブラウザ内で行われ、crypto.getRandomValuesというブラウザ標準APIを使用します。これは暗号論的に安全な擬似乱数生成器(CSPRNG)を提供し、予測不可能な値を生成します。UUID v4でも同様のAPIが使われることが多く、Nano IDも同じ品質の乱数を利用できます。サーバーへのリクエストは一切発生しないため、ネットワーク遅延やデータ漏洩のリスクがありません。オフラインでも動作するため、VPNや内部システムでの使用にも適しています。

実用的なシナリオと設定の選択

Nano IDは、短縮URLのトークン、APIキー、データベースの主キー、QRコードに埋め込む識別子など、短くて一意な文字列が必要な場面で使われます。UUIDと比べると、同じ衝突確率を維持しながらも、格納スペースと転送コストを約40%削減できます。例えば、21文字のNano ID(64通りのアルファベット)と36文字のUUID(16進数16通り)を比較すると、UUIDの方が桁数は多いですが、文字の種類が少ないため、実質的な情報量はNano IDの方が大きい場合があります。具体的には、21文字×6ビット(log2(64))= 126ビットに対し、UUIDは128ビットでほぼ同等です。

長さの選択は、必要な一意性と格納容量のトレードオフです。例えば、10文字のNano ID(64^10 = 約1.15×10^18通り)は、1秒間に100万個生成しても衝突までに約36万年かかる計算になります。アルファベットを大文字と数字だけにする(36文字)場合は、同じ長さでも可能な組み合わせが減るため、必要に応じて長さを調整します。

よくある質問(FAQ)

Q: Nano IDはUUIDとどう違いますか?
A: デフォルトの長さが21文字で、UUIDの36文字より約40%短いです。また、アルファベットと長さを自由に変更でき、URL-safeな文字だけを使うため、そのままURLやファイル名に使用できます。UUIDは固定の16進数形式(8-4-4-4-12文字)で、ハイフンを含みます。

Q: アルファベットに使える文字に制限はありますか?
A: 最低2種類の異なる文字が必要です。それ以外は任意のUnicode文字でも構いませんが、URL-safeを期待する場合は一般的な英数字と記号(_-)を推奨します。スペースや制御文字は避けてください。

Q: 生成されたIDは本当に重複しないのですか?
A: 絶対に重複しないわけではありませんが、デフォルト設定(21文字、64文字アルファベット)では、1秒間に100万個生成しても衝突確率が50%に達するまでに約2000億年かかる計算になります。実用的には無視できるレベルです。

Q: 「Copy all」ボタンが無効になるのはなぜですか?
A: アルファベットが1文字だけの場合、IDを生成できないためです。アルファベットを2文字以上に戻すと、すぐに有効になります。

Q: 生成結果はサーバーに保存されますか?
A: いいえ、すべてブラウザ内で処理され、サーバーに送信されることはありません。そのため、インターネット接続がなくても動作します。

Q: 長さを極端に短くすると何が問題ですか?
A: 衝突確率が急激に上昇します。例えば、4文字のNano ID(64^4 = 約1670万通り)では、1000個生成しただけで誕生日パラドックスにより約3%の確率で衝突が発生します。使用するIDの総数と必要な安全余裕に応じて長さを選んでください。