使い方
- 種類で識別子の種類を選び、個数で必要な数を選びます。
- Nanoid の場合は、その長さと、使う文字を設定します。
- 作成された IDから ID をコピーします。各行には、ID が持つ時刻、または Nanoid の場合はダッシュが表示されます。
- ULID か UUID v7を時刻を読み取る IDに貼り付けると、その中の時刻が読み取れます。
3種類の識別子
ULID(ulid/spec)は128ビットで、Unix 時刻のミリ秒の48ビットに続けて80ビットの乱数を持ち、Crockford の base32による26文字で書かれます。UUID バージョン7(RFC 9562の5.7節)も、48ビットのミリ秒の時刻で始まり、UUID の8-4-4-4-12の形式で書かれます。Nanoid は、選んだ長さと文字からなるランダムな文字列で、時刻を持ちません。
- ULID:26文字、例えば01ARZ3NDEKTSV4RRFFQ69G5FAV
- UUID バージョン7:36文字、例えば017f22e2-79b0-7cc3-98c4-dc0c0c07398f
- Nanoid:任意の長さと任意の文字で、時刻はありません
まとめて作ったときの順序
1回でまとめて作った ID は、同じミリ秒を共有します。その後、ULID は乱数の部分を前の ID から1つずつ増やし、UUID バージョン7は12ビットのカウンターを増やすため、ID は作った順に並びます(ulid/spec の Monotonicity、RFC 9562の6.2節)。同じミリ秒の中では、Nanoid は並びません。それぞれが新たに引かれるためです。
乱数は、ブラウザ自身の乱数バイトの源である crypto.getRandomValues から得られます。Nanoid は、特定の文字に有利になるバイトの値を飛ばすことで、各文字を偏りなく引きます。
例:ULID の時刻を読み取る
仕様の例の ULID である01ARZ3NDEKTSV4RRFFQ69G5FAV を貼り付けると、次の結果になります。時刻は2016年7月30日23:54:10 UTC で、1970年1月1日から1,469,922,850,259ミリ秒後です。
最初の10文字、01ARZ3NDEK が時刻を持ちます。残りの16文字は80ビットの乱数を持つため、ID は時刻によって、そのまま文字として並びます。
よくある質問
ULID は UUID と同じですか?
UUID と同じ128ビットですが、Crockford の base32による26文字で書かれ、UUID の形式ではありません。UUID バージョン7は、同じく時刻で始まる RFC 9562の形式で、このページは両方を作ります。
これらの ID を、パスワードやセッショントークンとして使えますか?
いいえ。これらは一意で並べられるように作られたもので、秘密にするためのものではありません。まとめて作った ID は時刻を共有して増えていくため、次の ID は推測できてしまいます。秘密にはパスワード生成ツールか、暗号用のトークンを使ってください。
Nanoid 形式の ID とは何ですか?
選んだ文字と長さから引かれるランダムな文字列です。URL に使える64文字からなる21文字の ID は、約126ビットのランダム性を持ち、このページの既定値です。
行にダッシュが表示され、時刻が出ないのはなぜですか?
Nanoid は始めから終わりまでランダムで、時刻を持たないため、読み取るものがありません。作成時刻を持つのは、ULID と、バージョン7の UUID だけです。
UUID の時刻が読み取れないのはなぜですか?
時刻を持つのはバージョン7の UUID だけです。このページは、貼り付けた UUID のバージョンを示し、RFC 9562に従うバージョン7の UUID を読み取ります。
作成した ID や貼り付けたテキストは、どこかに送られますか?
いいえ。ID はお使いのブラウザの中で crypto.getRandomValues から作られ、貼り付けたテキストはここでだけ読まれます。アップロードも保存もされません。
出典
- ULID 仕様(GitHub の ulid/spec)(英語)
- RFC 9562:UUID、バージョン7(英語)
- Crockford の base32符号化(英語)
- W3C Web Cryptography API:getRandomValues(英語)
数値と文章の最終確認日:2026年11月10日火曜日。