Snowflake ID 生成器与解码器

在你的浏览器中,用 Twitter 或 Discord 纪元生成并解码 64 位的 Snowflake ID。你输入的任何内容都不会离开你的设备。

这款 Snowflake ID 生成器完全在你的浏览器中运行。你输入或解码的 ID、时间戳和字段值绝不会离开你的设备,也不会有任何内容上传到 ArrayKit。

打开 ULID 生成器

关于 Snowflake ID 生成器

这款 Snowflake ID 生成器像 Twitter 和 Discord 那样构建 64 位的 Snowflake ID:把一个毫秒时间戳、一个工作机 id、一个进程 id 和一个每毫秒序列打包进一个 BigInt。选择 Discord 或 Twitter 纪元预设,或以 Unix 毫秒输入你自己的纪元,然后设置时间戳和各字段值来铸造一个 ID。切换到解码,可粘贴任意 Snowflake,并在你选择的纪元下查看精确的毫秒时间戳、它的 ISO 时间,以及工作机、进程和序列位。它非常适合用来逆推一条 Discord 消息是何时发布的、在测试固件中复现一个 ID,或对一套分布式 id 方案做合理性检查。所有的位移都在你的设备上进行;你输入的 ID 和时间戳绝不会被上传。

功能特性

如何使用 Snowflake ID 生成器

  1. 选择 Discord、Twitter 或一个自定义纪元
  2. 在生成中,设置时间戳以及工作机、进程和序列的值
  3. 复制得到的 64 位 Snowflake ID
  4. 切换到解码并粘贴一个 Snowflake,读回它的时间戳和各字段

示例

输入

175928847299117063  (Discord epoch)

输出

timestamp: 2016-04-30T11:18:25.796Z
worker: 1  process: 0  sequence: 7

解码一个 Discord Snowflake,可恢复它的创建时间及其字段位。

常见错误与故障排除

常见问题

什么是 Snowflake ID?
Snowflake 是 Twitter 和 Discord 使用的一种 64 位 id,它把一个毫秒时间戳、一个工作机(机器)id、一个进程 id 和一个每毫秒序列打包进一个可排序的数字中,因此 id 无需中心计数器就能保持唯一且大致按时间排序。
我如何从一条 Discord 消息的 ID 找出它是何时发送的?
在选中 Discord 纪元的情况下,把消息或用户 id 粘贴进解码。本工具会移出 42 个时间戳位,加上 Discord 纪元(1420070400000 毫秒),并以 ISO 和 Unix 毫秒显示精确的创建时间。
Twitter 和 Discord 纪元有什么区别?
两种布局的位宽相同,但它们从不同的起点开始计数毫秒:Twitter 使用 1288834974657(2010 年 11 月),Discord 使用 1420070400000(2015 年 1 月)。用错的那个来解码会让每个时间戳都偏移那段差值。
为什么工作机和进程上限为 31,序列上限为 4095?
该布局给工作机和进程各 5 位(2^5 − 1 = 31),给序列 12 位(2^12 − 1 = 4095)。超过这些上限的值会溢出到下一个字段,因此生成器会拒绝它们。
我可以为自己的服务使用自定义纪元吗?
可以。选择自定义预设,并以 Unix 毫秒输入你的纪元。之后生成和解码都会使用该值,这让你可以处理任何保持 42/5/5/12 位布局的 Snowflake 风格方案。
我生成或解码的 ID 会被发送到任何地方吗?
不会。每一次位移都用 BigInt 在你的浏览器中运行。你输入或粘贴的时间戳、id 和字段值绝不会离开你的设备,也不会上传到 ArrayKit。

相关工具

全部 ArrayKit 工具