DevToolPal
RU

Генератор Nano ID

Генерирует Nano ID — короткие уникальные идентификаторы, безопасные для URL, с криптостойкой случайностью, любой длины, со встроенными или своими алфавитами и оценкой вероятности коллизий.

Работает локально, без загрузки на сервер

Параметры

126 бит на ID · примерно 1,3 × 10¹⁸ ID дают 1% вероятности коллизии

Nano ID

Символов: 0 · 0 B

Что делает инструмент

Инструмент генерирует Nano ID — короткие, случайные, безопасные для URL идентификаторы для ключей базы данных, имён файлов, коротких ссылок, кодов приглашения или тестовых данных. Он использует тот же метод, что и библиотека Nano ID, поэтому ID выглядят и ведут себя так же, как созданные вызовом nanoid() в вашем коде.

Можно изменить длину, выбрать встроенный алфавит или ввести свой и сгенерировать до 1000 ID за раз. Под настройками показаны энтропия одного ID и примерное число ID, после которого вероятность дубликата достигает 1%.

Как пользоваться

  1. Выберите Длину. 21 — значение Nano ID по умолчанию.
  2. Выберите Алфавит: для URL, буквы и цифры, строчные, шестнадцатеричный, цифры, без похожих символов или свой.
  3. Выберите Количество. ID генерируются сразу после изменения настройки.
  4. Нажмите Сгенерировать, чтобы получить новый набор, и скопируйте или скачайте список — по одному ID в строке.

Пример

Те же ID в JavaScript с пакетом nanoid:

import { nanoid, customAlphabet } from 'nanoid'

nanoid() // "V1StGXR8_Z5jdHi6B-myT"
const orderId = customAlphabet('0123456789ABCDEFGHJKLMNPQRSTUVWXYZ', 12)
orderId() // "4KQ7ZB9XH2MD"

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

Алфавит для URL вмещает больше всего случайности в каждый символ и не требует экранирования в URL, именах файлов и JSON. Алфавит из букв и цифр убирает _ и -, что удобно, когда ID выделяют двойным щелчком. Шестнадцатеричный и цифровой алфавиты полезны, если система принимает только такие символы, но для той же стойкости нужны более длинные ID. Набор без похожих символов исключает, например, 0 и O или 1, l и I, чтобы ID было легче читать и набирать вручную.

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

› Что такое Nano ID?

Nano ID — формат и популярная библиотека JavaScript для случайных уникальных идентификаторов. По умолчанию ID состоит из 21 символа из 64-символьного алфавита, безопасного для URL (A–Z, a–z, 0–9, _ и -). Это 126 бит случайности — почти как 122 бита UUID v4, но в гораздо более короткой строке.

› Какой длины должны быть ID?

Зависит от того, сколько ID вы создадите. Оценка под настройками показывает, примерно сколько ID дают 1% вероятности, что два из них совпадут. Длина 21 по умолчанию безопасна практически для любой системы; для коротких ссылок или кодов приглашения часто хватает 10–12 символов вместе с проверкой уникальности в базе данных.

› Достаточно ли они случайны для задач безопасности?

Символы берутся из криптографического генератора случайных чисел браузера, а значения, не попадающие в алфавит, отбрасываются, а не сворачиваются по модулю, поэтому все символы равновероятны. Длинные ID подходят как неугадываемые токены. На сервер ничего не отправляется.

› Можно ли использовать свои символы?

Да. Выберите «Свой» и введите алфавит, например только заглавные буквы для кодов, которые диктуют вслух. Нужно от 2 до 256 разных символов; повторы отклоняются, потому что сделали бы одни символы вероятнее других.