Snowflake ID decoder
Snowflake IDs hide the moment they were created. Paste one or more IDs, pick the epoch of the service, and read the UTC time and the machine fields. Large IDs are decoded exactly, with no rounding.
Runs in your browser: nothing you enter is sent anywhere.
How to use it
- Paste one ID per line.
- Choose Twitter / X, Discord, or a custom epoch.
- Read the result:
time in UTC, unix_ms, worker, process and sequence.
How it works
With id as a 64-bit integer:
- time in ms since 1970 = (
id >> 22) + epoch
- worker = (
id >> 17) & 31
- process = (
id >> 12) & 31
- sequence =
id & 4095
Example
The Discord ID 175928847299117063 shifted right by 22 gives 41944705796 ms. Adding the Discord epoch 1420070400000 gives 1462015105796, which is 2016-04-30T11:18:25.796Z. Its worker is 1, process 0 and sequence 7.
Tips
- If a date looks wrong, you probably chose the wrong service.
- For Twitter, the ID in a tweet URL is the same number.
Frequently asked questions
How is a snowflake ID built?
It is a 64-bit number. The top bits are the milliseconds since an epoch, shifted left by 22 bits. Below that come 5 bits for a worker, 5 bits for a process and 12 bits for a sequence counter. Twitter calls the first two datacenter and machine; Discord calls them worker and process.
Which epochs are built in?
Twitter and X use 1288834974657, which is 2010-11-04T01:42:54.657Z. Discord uses 1420070400000, which is 2015-01-01T00:00:00Z. Other services that use the same layout, such as many custom systems, have their own epoch: choose Custom and type it in milliseconds since 1970.
Why does it use BigInt?
Snowflake IDs have up to 19 digits, more than the 15 or 16 digits a normal JavaScript number holds exactly. BigInt keeps every bit, so the time and the sequence are correct.
Can I decode IDs from other platforms?
Only if they use this bit layout. Instagram, Mastodon and others use different field sizes and will give wrong values here.
Are IDs sent to a server?
No. Decoding happens in your browser.