What is a Discord Snowflake ID? Complete Anatomy Explained
The Cryptic 18-Digit ID Number
If you have spent any time in Discord server moderation, you have probably encountered Discord IDs those long 17-20 digit numbers that identify users, servers, channels, messages, and roles. To most people they look like random, boring strings of numbers. But they are not random at all. Every Discord ID, or Snowflake, encodes precise information about the exact millisecond it was created.
Understanding how Discord Snowflake IDs work gives you a practical superpower as a server moderator, bot developer, or curious user. You can verify when an account was created, check the age of a server, find the timestamp of a specific message, or confirm that a user is not running a recently-created alt account to evade a ban.
The Anatomy of a Discord Snowflake
A Discord Snowflake is a 64-bit integer. Those 64 bits are divided into four distinct fields, each carrying specific information:
| Bits | Name | Purpose |
|---|---|---|
| 63 to 22 (42 bits) | Timestamp | Milliseconds elapsed since Discord Epoch (January 1, 2015). |
| 21 to 17 (5 bits) | Worker ID | Identifies the internal server machine generating the ID. |
| 16 to 12 (5 bits) | Process ID | Identifies the specific process on the worker machine. |
| 11 to 0 (12 bits) | Increment | A counter that increments for unique IDs created in the same millisecond. Resets to 0. |
How to Extract the Date from a Discord Snowflake
The math to extract the creation date from a Snowflake is straightforward once you understand the structure. Here are the steps:
- Take the Snowflake integer (e.g.,
175928847299117063). - Right-shift it by 22 bits:
Snowflake >> 22. This discards the worker ID, process ID, and increment fields, leaving only the timestamp component. - Add the Discord Epoch in milliseconds:
1420070400000(which is January 1, 2015 in Unix milliseconds). - The result is a standard Unix timestamp in milliseconds. Convert to seconds by dividing by 1000, and then format it as a human-readable date.
Here is how you can do it in JavaScript:
function snowflakeToDate(snowflake) {
const discordEpoch = 1420070400000;
// Convert using BigInt to prevent precision loss
const timestamp = Number(BigInt(snowflake) >> 22n) + discordEpoch;
return new Date(timestamp);
}
Our Snowflake Converter runs this calculation instantly, displaying the result in both UTC and your local timezone.
How to Find a Discord ID
Discord IDs are hidden by default. To see them, you need to enable Developer Mode, which is available to all users regardless of whether they are actually developers. Go to User Settings → Advanced → Developer Mode and toggle it on. Once enabled, right-clicking (or long-pressing on mobile) any user, server, channel, or message reveals a "Copy ID" option.