NanoIDとは?

NanoIDは、JavaScriptのための小型でURL安全なユニークID生成ツールです。統計的にユニークなコンパクトなランダム文字列を生成します。UUID v4に似ていますが、デフォルトではより短く(21文字対36文字)、エンコーディングなしでURL対応に設計されています。各文字は慎重にバランスの取れたアルファベットから選択されるため、すべての可能なIDが等しく発生する可能性があり、分布の偏りを排除します。

NanoIDは暗号学的に強力なランダム数生成器(ブラウザではcrypto.getRandomValues、Node.jsではcrypto.randomFill)を使用しており、生成されたIDはセッショントークンやワンタイムリンクなどのセキュリティに敏感なコンテキストに適しています。デフォルトの21文字の長さは、約2.1 × 10³⁰の可能な組み合わせを提供します。これはUUID v4と同等ですが、コンパクトな形式により帯域幅とストレージスペースを節約できます。

ツール説明

このオンラインNanoIDジェネレータを使用すると、インストール不要でブラウザ内で1つ以上のNanoIDを即座に作成できます。IDの長さ、生成するIDの数、使用するアルファベット(セキュアなデフォルトから16進数、英数字、数字のみ、または完全にカスタムの文字セットまで)を制御できます。

デフォルトアルファベット、サイズ21:

V1StGXR8_Z5jdHi6B-myT
useandom-26T198340PX7
bfghjklqvwyzrictV1StG

16進数アルファベット、サイズ16:

3f9a1c2b4e7d0f85
a0c4e8f23b6d917c

数字のみ、サイズ8:

04817263
93571048

カスタムアルファベット(abc123)、サイズ12:

b2ca31b1ca2b
3a1c2b3c1ab2

機能

  • 調整可能な長さ: IDサイズを1~64文字に設定(デフォルト21)
  • 一括生成: 一度に最大1,000個のIDを生成
  • アルファベットプリセット: デフォルト、数字、小文字、大文字、英数字、16進数、大文字16進数、見間違いやすい文字なし、または完全にカスタムの文字セットから選択
  • 見間違いやすい文字なしプリセット: 視覚的に曖昧な文字(例:0OIl)を削除し、人間が読みやすいIDを生成
  • ファイルとしてダウンロード: 生成されたすべてのIDを1クリックでnanoids.txtに保存

ユースケース

  • アプリケーション開発: NanoIDをデータベースのプライマリキーとして、またはAPIのレコード識別子として使用します。完全なUUIDよりも短いURL安全な文字列が優先される場合に適しています。
  • トークン生成: パスワードリセットリンク、招待コード、またはリファーラルスラッグ用の短いランダムトークンを生成します。可読性とURL安全性が重要な場合に使用します。
  • テストとモックデータ: テストフィクスチャまたはプロトタイプデータを入力するための、現実的に見えるユニークな識別子のバッチを素早く生成します。

オプション説明

オプション 説明
サイズ 生成される各IDの文字数(1~64)。デフォルトの21は約126ビットのエントロピーを提供し、UUID v4と同等です。
数量 1回のバッチで生成するIDの数(1~1,000)。
アルファベット 文字を引き出すプール。より大きく、より多様なアルファベットは文字ごとのエントロピーを増加させます。
カスタムアルファベット カスタムが選択されたときに表示されます。任意の文字を入力します。重複は自動的に削除され、分布の歪みを防ぎます。

仕組み

NanoIDは、ランダムバイトを生成し、アルファベットサイズに合わせてマスクし、結果が有効な範囲外の場合は再試行することで、各文字を選択します。これは棄却サンプリングと呼ばれる手法です。これにより、アルファベットサイズが2の累乗であるかどうかに関わらず、すべてのアルファベット文字全体で完全にフラットな分布が保証されます。デフォルトアルファベット(useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict)はURL安全(+/=なし)で64文字あり、各文字は正確に6ビットのエントロピーを持ちます。