xgaming.tools

Discord Bot Snowflake Decoder

Decode any Discord snowflake ID (user, message, channel, guild, role) to its exact creation timestamp, internal worker ID, internal process ID, and increment counter. Paste any ID, get the full bit breakdown.

Enable Developer Mode in Discord (User Settings → Advanced) and right-click anything to "Copy ID".

Created at
Saturday, April 30, 2016 at 11:18:25 AM UTC
9 years ago
ISO: 2016-04-30T11:18:25.796ZUnix ms: 1462015105796Unix s: 1462015105

Bit decomposition

Snowflake ID
175928847299117063
Discord timestamp
41944705796 ms since Discord epoch
Internal worker ID
1
Internal process ID
0
Increment
7
Binary (64 bit)
0000001001110001000001100101101011000001000000100000000000000111

How a Discord snowflake is packed

Every Discord ID is a 64-bit integer. The layout (MSB → LSB):

bits  42  41                          22 21    17 16    12 11               0
      ┌───────────────────────────────┬─────────┬─────────┬──────────────────┐
      │ (timestamp - Discord epoch)   │ worker  │ process │ increment        │
      │ 42 bits (ms since 2015-01-01) │ 5 bits  │ 5 bits  │ 12 bits          │
      └───────────────────────────────┴─────────┴─────────┴──────────────────┘

Discord epoch is 2015-01-01 00:00:00 UTC (1420070400000 ms). Shift right by 22 bits and add the epoch to recover the creation timestamp — useful for checking when a user joined Discord, when a message was posted, or debugging old cached IDs.

Every Discord ID contains its own timestamp

Every Discord snowflake is a 64-bit integer that packs four values: a millisecond timestamp (42 bits, shifted from Discord's custom 2015-01-01 epoch), an internal worker ID (5 bits), an internal process ID (5 bits), and an auto-incrementing counter (12 bits). Decode any ID and you instantly know when that user joined, when that message was posted, when that channel was created — no API call, no database lookup.

Paste any snowflake: user ID (right-click profile → Copy ID with Developer Mode on), message ID, channel ID, guild ID, role ID, application ID, all of them use the same structure. The decoder returns the creation timestamp in your local timezone, the ISO 8601 UTC string, Unix milliseconds, Unix seconds, plus the full 64-bit binary representation and the internal worker/process/increment values.

Common uses: verifying a user's actual join date (the Discord UI 'member since' can be manipulated with rejoins), auditing old bot messages by timestamp, debugging rate-limit ordering (same-millisecond events use the increment counter to sequence), proving when a server was created for verification badges, and forensic investigation of scam accounts (where the creation timestamp often reveals throwaway accounts made minutes before the scam).

The math: take the ID, shift right by 22 bits, add 1420070400000 — that's Discord's epoch in Unix ms. The lower 22 bits hold worker/process/increment which Discord only exposes indirectly. A newer ID is always numerically greater than an older ID, which is why Discord's API uses snowflakes for cursor-based pagination (the `before` and `after` parameters).

Discord Bot Snowflake Decoder — FAQ

What is a Discord snowflake?

Every ID in Discord (user, message, channel, guild, role, application) is a 64-bit snowflake integer. It packs a millisecond timestamp + internal worker ID + process ID + increment counter. The timestamp part lets you decode when the thing was created without calling the API.

What's Discord's epoch?

2015-01-01 00:00:00 UTC (Unix ms 1420070400000). Snowflakes store ms since this custom epoch (not Unix epoch) in the top 42 bits. Shift right by 22 bits and add 1420070400000 to get Unix ms.

Can I tell when a user joined Discord from their ID?

Yes — a user's ID is created when their account was first created (not when they joined a specific server). Decode the snowflake to get the exact second they signed up. Useful for spotting throwaway accounts (created minutes before a scam/raid attempt).

How do I get an ID from Discord?

Enable Developer Mode in User Settings → Advanced. Then right-click any user, message, channel, or server and click 'Copy ID'. That's the snowflake to paste into this decoder.

Why are my snowflakes all bigger than 2^52?

They're 64-bit integers — JavaScript's Number type only handles integers up to 2^53 safely. This tool uses BigInt to parse and bit-shift snowflakes accurately. If you're working with snowflakes in your own code, always use BigInt (`BigInt(id)` in JS) or string comparison, never Number.

You might also need

Built-In Tool

Config Tool Built Into XGamingServer

Get managed Discord Bot hosting with this tool in your panel — configure, deploy, and play in minutes. No file uploads needed.

Built-In Config ToolInstant Server SetupDDoS ProtectionExpert 24/7 Support
Get 40% OFFNo setup fees · Cancel anytime