Идентификаторы

Генератор ULIDи декодер времени

Создайте пакет вручную или проверьте готовые значения по строкам. Декодирование может обновляться автоматически.

Генератор ULID

Ввод

Пустое поле означает текущее время, считанное один раз на пакет. Иначе укажите целое число от 0 до 281474976710655. Секунды и даты ISO автоматически не распознаются.

Обработка выполняется в этом браузере. Введённые данные не отправляются на сервер.

Результат

Настройки

Включено: первый 80-битный хвост случаен, каждый следующий увеличен на один. Выключено: хвосты независимы. Порядок между отдельными нажатиями не гарантируется.

От 1 до 1 000 ID; разбор до 1 000 физических строк и 100 000 кодовых единиц UTF-16. Экспорт включает все результаты.

Выберите настройки и запустите обработку.

Неожиданный порядок идентификаторов в журнале может объясняться временем или случайным суффиксом. Генератор ULID помогает отличить значения из разных миллисекунд от тех, у которых совпадает время, но различается хвост.

Заданный момент фиксирует префикс тестовых данных, но не случайную часть. При сортировке готового списка отчёт сохраняет исходный номер строки: новое положение можно проверить, не переставляя введённый текст.

Что показывает генератор ULID

Время вместе с исходной единицей

Генератор ULID отделяет десять символов времени от шестнадцати случайных. Целое число миллисекунд показано рядом с датой UTC, поэтому ошибка с секундами не скрывается за удобным представлением даты.

Идентификатор разделён на префикс, связанный с часами, и непрозрачный случайный хвост.

Связь с исходной строкой после сортировки

Поле sourceLine сохраняется у каждого значения, включая повторы. Меняется только порядок отчёта: положение записи можно сопоставить с исходным текстом, который остаётся нетронутым.

Линии связывают перемешанные идентификаторы с их положением после сортировки.

Проверьте единицы времени и границы порядка

01

Сравнивайте с фиксированным временем

Пример в режиме создания заполняет только миллисекунды, не создавая ID. Только пустое поле означает сейчас; число 1700000000 также трактуется буквально как миллисекунды.

  • Часы считываются один раз на весь пакет.
02

Выберите монотонный режим

При включении хвост увеличивается внутри пакета. Без него независимые случайные части одной миллисекунды могут сортироваться иначе, чем были созданы.

  • Следующее нажатие начинает новый случайный отсчёт.
03

Сверьте порядок с источником

Пример для разбора специально перемешан. Выберите возрастание ASCII и сравните sourceLine. Автоматический разбор ждёт 350 мс; при отключении доступны кнопка и Ctrl/Cmd+Enter.

  • Правки сразу блокируют экспорт. Пример и очистка требуют предпросмотра и допускают одну отмену.

Пакеты с доступными для проверки полями

Создание значений с общим префиксом

Получите от 1 до 1 000 канонических ID в верхнем регистре. Фиксированное время задаёт лишь префикс. Первый хвост берётся из безопасных случайных байтов, остальные увеличиваются или выбираются независимо.

Декодер ULID с полным составом

Метка времени показана в миллисекундах Unix и формате UTC ISO. Отчёт также содержит оба текстовых участка и случайный хвост в шестнадцатеричном виде. В нём не восстанавливается пользователь или устройство.

Атомарная проверка списка

Ошибка длины, символа или диапазона указывает исходные строку и столбец. Один неверный элемент отменяет весь разбор; ошибочные строки не исчезают из частичного результата, выданного за полный.

Полный экспорт при кратком просмотре

Сначала видны 50 строк, затем можно добавлять по 100. TXT содержит созданные ID, а JSON — метаданные пакета или все разобранные поля, включая ещё не раскрытые записи.

Пределы формата и гарантий

Нормализуется только регистр
Требуются 26 ASCII-символов Crockford Base32 на строку. I/L не заменяются на 1, O не заменяется на 0. Пробелы, пустые строки, кавычки и дефисы вызывают ошибку; дубликаты сохраняются.
Беззнаковые миллисекунды в 48 битах
Диапазон — 0–281474976710655, первый символ — от 0 до 7. Далёкая будущая дата может быть корректной по формату. Время задаётся автором ID и не доказывает реальный момент создания или вставки.
Монотонность действует только в пакете
Переполнение 80-битного хвоста отклоняет весь пакет. Время не увеличивается, случайность не выбирается заново для обхода ошибки. Нажатия, вкладки и устройства не имеют общего состояния.
Не UUID и не секретный токен
Общая ширина 128 бит не означает одинаковые текст и поля. Нет преобразования версий UUID и проверки наличия записи. Время читаемо, а монотонные соседи предсказуемы: значения не подходят для паролей или токенов доступа.
Явные ограничения ввода
Создание до 1 000 ID; разбор до 1 000 физических строк и 100 000 кодовых единиц UTF-16. Нет импорта файлов и URL, SQL-обёрток, удаления повторов или записи отсортированного текста обратно во ввод.

Вопросы: генератор ULID

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

ULID использует 26 символов Base32 и 48-битный префикс миллисекунд. У UUID поля зависят от версии, а обычная текстовая запись занимает 36 шестнадцатеричных символов с дефисами. Одинаковый объём хранения не делает текстовые форматы взаимозаменяемыми.

Что значит монотонный режим?

Генератор ULID выбирает первый хвост случайно и добавляет один к каждому следующему в этом пакете. Успешный пакет строго возрастает. Новый вызов независим: порядок между пакетами или распределёнными машинами не гарантируется.

Можно ли узнать время создания из ULID?

Да, первые десять символов позволяют восстановить миллисекунды Unix и показать UTC. Но время может быть задано произвольно, а часы могут ошибаться. Разбор возвращает закодированный момент, а не доказательство реального создания записи.

Почему алфавит пропускает I, L, O и U?

Это свойство алфавита Crockford Base32, уменьшающее путаницу при чтении. Здесь допустимые строчные буквы переводятся в прописные, но I, L, O и U отвергаются: похожие символы не исправляются на цифры автоматически.

Почему база данных отклоняет ULID в нижнем регистре?

Формат ULID не различает регистр, но конкретная схема, валидатор или приложение может требовать канонические прописные буквы. Эта страница принимает допустимые строчные значения и выдаёт верхний регистр. Ограничения вашей базы она не меняет.

Есть вопрос об идентификаторе?

Попробуйте генератор ULID

Генератор ULID создаст небольшой пакет для заданного времени. Затем разберите перемешанный пример и сверьте порядок с исходными номерами строк.