Перейти к содержимому

Бесплатный генератор Nano ID - Безопасные уникальные ID для URL онлайн

Мгновенно генерируйте безопасные Nano ID! Бесплатный онлайн-инструмент создает компактные, URL-безопасные уникальные идентификаторы на 42% короче UUID. Идеально подходит для баз данных, API, токенов и систем.

Длина сгенерированного Nano ID (1-100 символов)

Выберите набор символов для вашего Nano ID

Сгенерированный Nano ID

Введите значение для отображения результата

Визуализация

Калькулятор загрузки...
📚

Документация

Генератор Nano ID создаёт короткую случайную строку символов, называемую Nano ID. Nano ID используются как уникальные идентификаторы для таких объектов, как записи базы данных, URL-адреса и токены API; вероятность совпадения двух сгенерированных идентификаторов крайне мала.

Что такое Nano ID?

Nano ID — это случайно сгенерированная строка, используемая для обозначения объекта, чтобы его можно было отличить от любого другого. Разработчик программного обеспечения Андрей Ситник создал этот формат в 2017 году как более компактную альтернативу UUID (универсальному уникальному идентификатору) — идентификатору из 36 символов, широко используемому в вычислительной технике. Nano ID по умолчанию состоит из 21 символа, а UUID — из 36 символов, то есть примерно на 42 % короче.

Как сгенерировать Nano ID с помощью этого инструмента

Генератор на этой странице создаёт Nano ID на основе двух параметров.

  1. Длина: целое число от 1 до 100. Значение по умолчанию — 21.
  2. Набор символов: группа символов, из которых создаётся идентификатор. По умолчанию используются буквы и цифры.

Введите длину, выберите набор символов и нажмите «Сгенерировать», чтобы создать идентификатор. Нажмите «Копировать», чтобы скопировать его, или «Сбросить», чтобы вернуть длину 21 и набор букв и цифр. Новый идентификатор также автоматически появляется при изменении длины или набора символов. Под кнопками инструмент отображает каждый символ идентификатора в виде цветного блока: синий — для заглавной буквы, зелёный — для строчной, оранжевый — для цифры, серый — для знака пунктуации.

Если длина не является целым числом от 1 до 100, инструмент показывает сообщение «Длина должна быть целым числом от 1 до 100» и не создаёт идентификатор.

Доступные наборы символов

Инструмент предлагает семь фиксированных наборов символов. Пользовательский алфавит, введённый вручную, не поддерживается. Набор «Символы» добавляет к буквенно-цифровому набору следующие 26 знаков пунктуации: ! @ # $ % ^ & * ( ) _ + - = [ ] { } | ; : , . < > ?.

Набор символовИспользуемые символыРазмер алфавита
Буквы и цифры (по умолчанию)A–Z, a–z, 0–962
Безопасный для URLA–Z, a–z, 0-9, -, _64
Цифры0–910
БуквыA–Z, a–z52
Строчные буквыa–z26
Прописные буквыA–Z26
С символамиA–Z, a–z, 0–9 и 26 знаков пунктуации88

По умолчанию выбран набор букв и цифр. В него не входят дефис и символ подчёркивания, используемые в наборе для URL, хотя одни буквы и цифры уже безопасно размещать непосредственно в URL.

Формула Nano ID

Nano ID создаётся последовательным случайным выбором фиксированного числа символов из алфавита с помощью криптографически защищённого генератора случайных чисел. Такой генератор устроен так, чтобы его результат нельзя было заранее предсказать.

1id = random(alphabet, size)
2

В настройках по умолчанию alphabet содержит 62 символа, а size равно 21.

Пример расчёта

При использовании алфавита по умолчанию, состоящего из букв и цифр, и длины 21 одним из возможных сгенерированных идентификаторов является:

1K7pQ2mZxT9vY4nR8jH3wL
2

Каждый символ независимо выбирается из 62 букв и цифр, поэтому при двух запусках генератора почти никогда не получается одна и та же строка.

Как рассчитать вероятность коллизии

Поскольку Nano ID выбирается случайно, совпадение двух сгенерированных идентификаторов возможно, хотя и крайне маловероятно. Это называется коллизией. Вероятность хотя бы одной коллизии после генерации k идентификаторов рассчитывается так же, как в «задаче о днях рождения»:

1P(collision) ≈ 1 - e^(-k² / (2n))
2

Здесь n — число возможных идентификаторов: размер алфавита, возведённый в степень длины идентификатора, то есть n = alphabet_size^length.

Пример расчёта

Для настроек по умолчанию, при алфавите из 62 символов и длине 21 символа:

1n = 62^21 ≈ 4.4 × 10^37 possible IDs
2

Решение формулы для вероятности коллизии 1 % даёт:

1k ≈ 9.4 × 10^17 IDs
2

Это означает, что необходимо сгенерировать примерно 940 квадриллионов идентификаторов, прежде чем вероятность совпадения двух из них достигнет хотя бы 1 %. При генерации одного миллиона идентификаторов в секунду достижение этого количества заняло бы около 29 700 лет.

Переход к безопасному для URL алфавиту из 64 символов немного увеличивает это количество — примерно до 1,3 × 10^18 идентификаторов при том же риске 1 %, поскольку больший алфавит даёт больше возможных идентификаторов для выбора.

Сравнение Nano ID с другими идентификаторами

ВидДлинаПримечания
Nano ID21 символ, длина настраиваетсяСлучайный, компактный, не сортируется по времени
UUID36 символовСтандартный формат, широко поддерживается, содержит дефисы
ULID26 символовСортируется по времени создания
KSUID27 символовСортируется по времени создания, содержит временную метку
Целое число с автоматическим увеличениемЗависит от реализацииПростой и последовательный, но предсказуемый; его трудно координировать между отдельными базами данных

Часто задаваемые вопросы

Каковы длина и набор символов Nano ID по умолчанию?

По умолчанию используются 21 символ из набора букв и цифр: A–Z, a–z, 0-9, всего 62 символа.

Поддерживает ли этот инструмент пользовательский алфавит?

Нет. Он предлагает семь фиксированных наборов символов: буквы и цифры, безопасный для URL, цифры, буквы, строчные буквы, прописные буквы и «С символами».

Чем Nano ID отличается от UUID?

Nano ID короче. По умолчанию он состоит из 21 символа, а UUID — из 36 символов; Nano ID примерно на 42 % короче. Оба идентификатора генерируются случайным образом и не являются последовательными.

Можно ли сортировать Nano ID по времени создания?

Нет. Идентификаторы Nano ID полностью случайны и не содержат сведений о времени генерации. Такие форматы, как ULID или KSUID, напротив, предназначены для сортировки по времени.

Безопасно ли использовать Nano ID в качестве первичного ключа базы данных?

Да. Его следует хранить в столбце текстового типа, а не числового, и создать для него уникальный индекс для быстрого поиска.

Сколько существует возможных Nano ID?

Это зависит от выбранных длины и набора символов. При алфавите из 62 символов по умолчанию и длине 21 символа существует 62^21, то есть примерно 4,4 × 10^37, возможных идентификаторов.

Источники

  1. Sitnik, Andrey. "Nano ID." GitHub, https://github.com/ai/nanoid.
  2. "Universally unique identifier." Википедия, Wikimedia Foundation, https://en.wikipedia.org/wiki/Universally_unique_identifier.
  3. "ULID Spec." GitHub, https://github.com/ulid/spec.