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

Декодер Snowflake ID

Сначала выберите схему системы, выдавшей номер.

Декодер Snowflake ID

Десятичный Snowflake ID

Отчёт

Все расчёты выполняются в браузере; введённые значения не отправляются.

Параметры

Один десятичный ID, до 256 символов. Без URL и списков.

Twitter snowflake-2010: 41/5/5/12. Старший узел — датацентр, младший — worker; резервный знаковый бит равен 0. Открыть источник

Введите ID или загрузите пример.

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

Зачем нужен Декодер Snowflake ID

Видеть различия платформ

Декодер Snowflake ID различает архивный оригинал Twitter и формат Discord. Время занимает 41 или 42 бита; две части узла также имеют разные значения. Эпоха и ссылка на первоисточник доступны рядом с настройками, чтобы проверить предпосылки расчёта.

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

Повторять тест с точностью до бита

Фиксированные время, узел и последовательность дают один и тот же тестовый ID. Сравните двоичные группы с масками приложения. В собственной схеме можно сдвинуть границу поля и увидеть, какие биты переходят в соседнее значение, не меняя рабочие записи.

Две непрерывные битовые схемы с разными границами времени, узла и последовательности.

Три исходных условия

01

Выберите исходную схему

Twitter Original соответствует архивному коду snowflake-2010. Discord использует документированный беззнаковый формат. Для своего сервиса понадобятся его эпоха и ширины полей: само число не содержит этих настроек.

02

Проверьте единицы и состав узла

Эпоха и время генерации задаются в миллисекундах Unix. Общий узел равен старшей части × 32 + младшей части. У Twitter это датацентр и worker, у Discord — worker и process. Метка в секундах здесь не подходит.

03

Сохраняйте только свежий результат

Автоматический разбор запускается через 350 мс после последней правки. Отключите его для кнопки или Ctrl/Cmd + Enter. Изменение параметров блокирует экспорт до успешного пересчёта. Тестовая генерация всегда выполняется явно.

Поля внутри целого числа

Не терять последние цифры

Десятичная строка сразу читается как BigInt. Для Discord число 175928847299117063 даёт 2016-04-30T11:18:25.796Z, узел 32 и последовательность 7. Соседние ID остаются различимыми, даже если обычное число с плавающей точкой округлило бы их одинаково.

Сопоставлять время и биты

Временная метка выводится в UTC, миллисекундах Unix и как смещение от эпохи. Двоичные группы сохраняют ведущие нули. У Twitter отдельно показан резервный нулевой знаковый бит; Discord использует все 64 бита.

Задать собственное распределение

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

Создавать повторяемые тестовые данные

Генератор Snowflake ID собирает поля и сразу разбирает получившееся число. Пустое время означает часы в момент запуска; явное значение позволяет повторить тест. Можно скопировать ID или скачать JSON-отчёт со схемой и всеми полями.

Что можно заключить по результату

Платформа не определяется автоматически
Число не сообщает название своей эпохи. Неверный шаблон иногда даёт разумную дату без ошибки. Архивный формат Twitter также нельзя считать спецификацией всех современных внутренних вариантов X.
Миллисекунды и не более 64 бит
Поддерживаются только непрерывные поля в порядке время → узел → последовательность. Времени нужен хотя бы один бит. Секунды, микросекунды, разнесённые позиции и другой порядок полей требуют иной модели.
Одно десятичное целое за запуск
Разрешены пробелы по краям и ведущие нули. Отрицательные ID, дроби, экспоненциальная запись, шестнадцатеричные числа, URL и списки отклоняются. Каждое числовое поле ограничено 256 символами; целые в экспорте остаются строками.
Тестовая генерация не обеспечивает уникальность
Одинаковые параметры дают одинаковые ID. Здесь нет распределения workers, постоянного счётчика и координации при переводе часов назад. Ноль и будущие даты допустимы в пределах схемы, но не доказывают существование объекта.
Нет поиска аккаунтов и сообщений
Внутренние номера не раскрывают имя, текст или физическое местоположение сервера. Запросов к API для проверки объектов нет. Время вне диапазона Date вызывает явную ошибку вместо обрезания значения.

Декодер Snowflake ID: вопросы

Как получить дату создания по ID Discord?

Выберите Discord и вставьте исходную строку. Декодер Snowflake ID убирает младшие 22 бита и прибавляет 1420070400000 миллисекунд. UTC в отчёте показывает записанное в числе время, не подтверждая существование сообщения отдельной проверкой.

Чем различаются эпохи Twitter и Discord?

Архивный Twitter отсчитывает от 1288834974657 мс, Discord — от 1420070400000 мс. Различается и временное поле: 41 против 42 бит. Замены одной эпохи недостаточно для полного описания другого формата.

Почему части узла ограничены 31, а последовательность — 4095?

Каждой части отведено 5 бит, то есть 0–31. Вместе они образуют 10-битный узел со значениями 0–1023. Последовательность занимает 12 бит, то есть 0–4095. Превышение отклоняется, чтобы значение не попало в соседнее поле.

Можно ли указать эпоху собственного сервиса?

Да. В своей схеме задайте знаковую эпоху Unix в миллисекундах и все три ширины. Время генерации должно быть не раньше эпохи, а разница должна помещаться в отведённое временное поле.

Почему вставленный ID округлился или потерял последние цифры?

Это могло произойти в таблице или парсере до вставки. BigInt предотвращает новое округление, но не восстанавливает потерянные разряды. Нужна первоначальная строка ID, ещё не преобразованная в число с плавающей точкой.

Нужны уточнения по схеме?

Проверить следующий ID

Декодер Snowflake ID сохраняет исходные допущения вместе с расчётом. Сверьте время и младшие поля, затем приложите отчёт к заметкам об отладке.