Генератор и декодер Snowflake ID
Генерируйте и декодируйте 64-битные Snowflake ID с эпохами Twitter или Discord прямо в браузере. Ничто из введённого не покидает ваше устройство.
Генератор Snowflake ID работает целиком в вашем браузере. ID, метки времени и значения полей, которые вы вводите или декодируете, никогда не покидают ваше устройство, и ничего не загружается в ArrayKit.
Открыть генератор ULID
Об инструменте Генератор Snowflake ID
Генератор Snowflake ID строит 64-битные Snowflake ID так, как это делают Twitter и Discord: метка времени в миллисекундах, worker id, process id и посекундная последовательность (sequence), упакованные в один BigInt. Выберите пресет эпохи Discord или Twitter либо введите свою эпоху в миллисекундах Unix, затем задайте метку времени и значения полей, чтобы создать ID. Переключитесь на «Декодировать», чтобы вставить любой Snowflake и увидеть точную метку времени в миллисекундах, её время ISO и биты worker, process и sequence под выбранной эпохой. Удобно для обратного вычисления, когда было опубликовано сообщение Discord, воспроизведения ID в тестовой фикстуре или проверки корректности распределённой схемы id. Весь битовый сдвиг происходит на вашем устройстве; ID и метки времени, которые вы вводите, никогда не загружаются.
Возможности
- Сгенерируйте 64-битный Snowflake из метки времени, worker, process и sequence
- Пресеты эпох Discord (1420070400000) и Twitter (1288834974657) в один клик
- Поле своей эпохи для любой другой схемы Snowflake в миллисекундах Unix
- Режим декодирования превращает любой Snowflake в его метку времени, время ISO и биты полей
- Кнопка «Сейчас» заполняет метку времени из ваших часов для ID текущего времени
- Математика BigInt сохраняет все 64 бита точными — без потери точности на больших ID
- Понятные ошибки диапазона, когда worker, process или sequence переполняют свои биты
- Работает целиком в вашем браузере, никакие ID не отправляются на сервер
Как использовать Генератор Snowflake ID
- Выберите Discord, Twitter или свою эпоху
- В «Генерировать» задайте метку времени и значения worker, process и sequence
- Скопируйте полученный 64-битный Snowflake ID
- Переключитесь на «Декодировать» и вставьте Snowflake, чтобы прочитать его метку времени и поля
Пример
Ввод
175928847299117063 (Discord epoch)
Результат
timestamp: 2016-04-30T11:18:25.796Z
worker: 1 process: 0 sequence: 7
Декодирование Snowflake Discord восстанавливает, когда он был создан, и его биты полей.
Частые ошибки и устранение неполадок
- Декодированная метка времени отличается на десятилетия (например, 1970 или 2100 год). — Вы декодируете с неверной эпохой. Переключите пресет под источник — эпохи Discord и Twitter отличаются на годы — либо задайте точную свою эпоху.
- «Генерировать» сообщает 'Sequence must be between 0 and 4095.' — Поле sequence всего 12 бит. Держите worker и process в пределах 0–31, а sequence в пределах 0–4095, чтобы каждое значение помещалось в свой слот.
- 'Timestamp is before the chosen epoch.' — Snowflake хранит миллисекунды с момента своей эпохи, поэтому метка времени должна быть на уровне эпохи или после неё. Выберите более позднее время или меньшую эпоху.
- Вставленный ID выглядит округлённым или теряет последние цифры. — Snowflake выходят за безопасный целочисленный диапазон JavaScript, поэтому обращайтесь с ними как со строками. Этот инструмент использует BigInt, но избегайте вставки ID, который какой-то другой инструмент уже разобрал как число с плавающей точкой.
Часто задаваемые вопросы
- Что такое Snowflake ID?
- Snowflake — это 64-битный id, используемый Twitter и Discord, который упаковывает метку времени в миллисекундах, worker (machine) id, process id и посекундную последовательность в единое сортируемое число, так что id уникальны и примерно упорядочены по времени без центрального счётчика.
- Как узнать, когда было отправлено сообщение Discord, по его ID?
- Вставьте id сообщения или пользователя в «Декодировать» с выбранной эпохой Discord. Инструмент выдвигает 42 бита метки времени, добавляет эпоху Discord (1420070400000 мс) и показывает точное время создания как ISO и миллисекунды Unix.
- В чём разница между эпохами Twitter и Discord?
- Обе раскладки имеют одинаковую ширину битов, но отсчитывают миллисекунды от разных начальных точек: Twitter использует 1288834974657 (ноябрь 2010), а Discord — 1420070400000 (январь 2015). Декодирование с неверной сдвигает каждую метку времени на этот разрыв.
- Почему worker и process ограничены 31, а sequence — 4095?
- Раскладка отводит по 5 бит worker и process (2^5 − 1 = 31) и 12 бит sequence (2^12 − 1 = 4095). Значения выше этих пределов переполнились бы в следующее поле, поэтому генератор их отклоняет.
- Можно ли использовать свою эпоху для собственного сервиса?
- Да. Выберите пресет «Своя» и введите вашу эпоху в миллисекундах Unix. «Генерировать» и «Декодировать» затем используют это значение, что позволяет работать с любой схемой в стиле Snowflake, сохраняющей раскладку битов 42/5/5/12.
- Отправляются ли куда-либо ID, которые я генерирую или декодирую?
- Нет. Каждый битовый сдвиг выполняется в вашем браузере с помощью BigInt. Метки времени, id и значения полей, которые вы вводите или вставляете, никогда не покидают ваше устройство и не загружаются в ArrayKit.
Связанные инструменты
Все инструменты ArrayKit