Генератор 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. Расчёт справочный, итог зависит от материала и навыка мастера.