Генератор NanoID: короткие URL-safe идентификаторы

Короткие URL-safe ID с настраиваемой длиной и алфавитом.

Как считается стойкость

Энтропия NanoID — это длина, умноженная на логарифм размера алфавита. По умолчанию 21 символ и 64 знака в наборе: 21 × log₂64 = 126 бит. Это примерно столько же, сколько у UUID v4, но строка на 15 символов короче. Уменьшите длину до 10 — получите 60 бит: для публичных идентификаторов ещё приемлемо, для приглашений в закрытую систему — уже нет.

Символы выбираются равномерно: значения из генератора отбраковываются, если могут дать смещение к началу алфавита. Поэтому «цифры выпадают чаще» здесь не бывает.

Какой алфавит выбрать

URL-safe — универсальный вариант: символы A–Z, a–z, 0–9, дефис и подчёркивание не требуют percent-encoding в адресах. Буквы и цифры без дефисов удобнее, если идентификатор вводят руками. Только цифры подойдут для коротких кодов подтверждения, но помните: алфавит из 10 символов режет энтропию примерно в шесть раз на каждый символ. Свой набор выручает, когда внешняя система требует конкретный формат.

Чего NanoID не умеет

В нём нет времени, поэтому сортировка по идентификатору не даёт хронологии. И это не замена паролю: идентификатор не должен давать доступ сам по себе, права проверяет сервер. Для сортируемых ключей есть UUID v7 и ULID, для паролей — отдельный генератор.

Все значения создаются локально через crypto.getRandomValues. Дубликаты практически исключены, но, как и у любого случайного идентификатора, вероятность не равна нулю.

Частые вопросы

Сколько энтропии у NanoID?

Длина × log2(размер алфавита). По умолчанию 21 символ и 64 символа в наборе — 126 бит, примерно как у UUID v4, но на 15 символов короче.

NanoID сортируется по времени?

Нет, времени в нём нет. Для сортируемых идентификаторов используйте UUID v7 или ULID.

Можно ли использовать NanoID как пароль?

Нет: идентификатор не заменяет credential. Для паролей есть отдельный генератор с оценкой энтропии.

Проверено: 26 октября 2026. Расчёт справочный, итог зависит от материала и навыка мастера.