Nano ID生成|長さ・文字セット・衝突目安を確認

安全なNano IDをブラウザで一括生成。長さ・件数・文字セット・接頭辞を指定でき、エントロピーと1%衝突目安、実装コードも確認できます。

生成設定

2〜256種類の重複しない文字を指定できます。変更すると「カスタム」に切り替わります。

文字セット 64種類 全長21文字
エントロピー 126 bits 約8.5 × 10³⁷通り
衝突確率 約1% 約1.3 × 10¹⁸件 同じ条件で発行した場合の概算

生成結果

標準設定で10件生成します。

  1. 「Nano IDを生成」を押すと、ここに結果が表示されます。
JavaScriptでの実装例を見る

実際のアプリでは公式パッケージを利用してください。現在の設定に合わせた例です。

このツールの使い方・詳細

🛠 使い方

文字セットのプリセット、ランダム部分の長さ、生成数、任意の接頭辞を設定して「Nano IDを生成」を押してください。生成可能な組み合わせ数、エントロピー、衝突確率が約1%になる発行数の目安を確認し、1件ずつまたは一覧でコピーできます。

💡 活用シーン・ユースケース

  • 短縮URLや公開リンクに使う、短く推測されにくい識別子を作る
  • UUIDより短いランダムIDを、用途に合う文字セットでまとめて用意する
  • 紛らわしい文字を除いた招待コードや管理番号の候補を生成する

Nano IDを安全に生成する

Nano ID(NanoID)は、URLで扱いやすい文字から短いランダムIDを作る仕組みです。このツールはWeb Crypto APIの暗号学的乱数を使い、文字の出現確率が偏らないように不要な乱数値を捨てる方式で生成します。設定と結果はブラウザ内だけで処理し、サーバーへ送信・保存しません。

標準の21文字とUUIDとの違い

標準設定は64種類のURL安全な文字と21文字の長さで、エントロピーは126ビットです。UUID v4はハイフン込み36文字で122ランダムビットを持ちます。Nano IDは用途に合わせて短くできますが、文字数を減らすほど衝突しやすくなるため、発行件数と必要な安全性に応じて設定してください。

文字セットと接頭辞の選び方

URLやAPIの識別子には「URL安全」、大文字を避けたい場合は「小文字+数字」、色やハッシュに近い表記には「16進数」、人が読み上げるコードには「見分けやすい英数字」が便利です。接頭辞を付けると user_order_ のように種類を判別しやすくなります。接頭辞はランダム性を増やさないため、安全性の計算はランダム部分だけを対象にしています。

衝突目安の読み方

表示する「衝突確率 約1%」は、同じ文字セットと長さでIDを発行し続けた場合に、少なくとも1組が重複する確率が約1%になる発行数の概算です。実運用ではデータベース側にも一意制約を設定し、衝突時に再生成できる設計にしてください。

これは公式Nano IDパッケージですか?

生成方式は公式実装の考え方に沿っていますが、このページ自体は公式パッケージではありません。アプリケーションへ組み込む場合は、画面内のコード例を参考に公式の nanoid パッケージを利用してください。

Reactのkeyに毎回生成して使えますか?

レンダーのたびに新しいIDをReactの key として生成すると値が安定しません。データが持つ永続的なIDを使い、フォーム部品を関連付けるだけならReactの useId も検討してください。