ToolsBlogSign in
discord.dog
Discord Snowflake ID Explained: What It Is and How to Decode It — Discord snowflake IDs encode account creation timestamps. Learn what a snowflake ID is, how to decode it, and what it reveals.
ID Lookup

Discord Snowflake ID Explained: What It Is and How to Decode It

Discord snowflake IDs encode account creation timestamps. Learn what a snowflake ID is, how to decode it, and what it reveals.

·5 min read

What Is a Twitter/Discord Snowflake ID?

Snowflake IDs are a method for generating unique, sortable numeric identifiers at scale without requiring a central database to coordinate. Twitter invented and open-sourced the approach; Discord adopted it for all of its object IDs.

The key insight is this: if you encode a timestamp into the ID itself, you can generate millions of unique IDs per second across many machines without any coordination or collision. The IDs are also naturally sortable — higher IDs were created later, so you can sort by ID to sort by creation time.

Discord uses snowflakes for everything: users, servers, channels, messages, roles, emojis, webhooks, scheduled events. Every single object in Discord has a snowflake ID.

A Discord snowflake looks like this:

125476553571303424

It's just a large integer — 64 bits, typically 17–20 decimal digits. But packed inside that number is exact information about when it was created.

The Anatomy of a Snowflake ID

A Discord snowflake is a 64-bit integer with the following structure:

63                          22 21        12 11          0
|---- 42 bits (timestamp) ----|-- 5 bits --|-- 5 bits --|-- 12 bits --|
         Milliseconds          Worker ID   Process ID    Increment
         since Discord epoch
Segment Bits Description
Timestamp 42 Milliseconds since Discord epoch (January 1, 2015, 00:00:00 UTC)
Worker ID 5 Internal Discord worker ID (which machine generated this ID)
Process ID 5 Internal Discord process ID
Increment 12 Counter for IDs generated in the same millisecond (up to 4096)

The timestamp segment is the only part that's externally meaningful. The worker and process IDs are Discord infrastructure internals; the increment prevents collisions when multiple IDs are created simultaneously.

Discord's epoch: Discord chose January 1, 2015 as time zero. All timestamps in Discord snowflakes are measured from this date. The earliest possible Discord accounts have IDs with a timestamp very close to this epoch.

How to Decode a Discord Snowflake

The decoding formula:

timestamp_ms = (snowflake_id >> 22) + 1420070400000
creation_date = new Date(timestamp_ms)

That's it. Right-shift the ID by 22 bits to remove the worker, process, and increment segments. Add 1420070400000 (Discord's epoch as a Unix timestamp in milliseconds). Convert to a date.

Example

Take the user ID 125476553571303424:

const id = 125476553571303424n; // BigInt in JavaScript
const discordEpoch = 1420070400000n;
const timestamp = (id >> 22n) + discordEpoch;
// timestamp = 1454526460875 (milliseconds)
// Date: 2016-02-03T17:47:40.875Z

This account was created on February 3, 2016 — during Discord's early growth phase, about 8 months after launch.

Note on JavaScript: Large Discord IDs exceed JavaScript's safe integer range (Number.MAX_SAFE_INTEGER = 9007199254740991). Use BigInt (125476553571303424n) for accurate bitwise operations.

Try it yourself — no login needed

Paste any Discord user ID, username, or invite link at discord.dog. Full profiles, live presence, and server previews in seconds.

Open discord.dog

In Python

snowflake = 125476553571303424
discord_epoch = 1420070400000
timestamp_ms = (snowflake >> 22) + discord_epoch
from datetime import datetime, timezone
creation_date = datetime.fromtimestamp(timestamp_ms / 1000, tz=timezone.utc)
print(creation_date)  # 2016-02-03 17:47:40+00:00

What Information Is Stored

A Discord snowflake tells you:

  1. Exact creation timestamp — down to the millisecond. Not just the date — the exact moment in UTC.
  2. Relative ordering — two IDs can be compared to determine which was created first, without fetching any additional data.
  3. Nothing about the content — the ID doesn't tell you whether it belongs to a user, server, message, or channel. Context determines that.

What it doesn't tell you:

  • Who created the object
  • What the object contains
  • Whether the object still exists

A deleted account's ID still decodes to a valid creation timestamp. The snowflake persists in logs and message records even after the account is gone.

Using discord.dog to Decode Snowflakes

If you don't want to do the math manually, discord.dog decodes snowflakes automatically.

For user IDs: Go to discord.dog/{userId}. The profile page shows the creation date and account age derived from the snowflake. See the Discord account age checker guide for more.

For server IDs: Go to discord.dog/{serverId}. The server page shows the server's creation date.

For any snowflake type: The Discord ID lookup tool at discord.dog resolves snowflakes and displays the decoded timestamp alongside the full profile data.

The timestamp calculation happens client-side (or server-side during SSR) — it doesn't require any additional API call, since all the information is in the ID itself. This means discord.dog can show creation dates even for deleted accounts where Discord's API returns no data.

Try it now → Paste any Discord user or server ID at discord.dog to see the decoded creation date alongside the full profile.

Try it yourself — no login needed

Paste any Discord user ID, username, or invite link at discord.dog. Full profiles, live presence, and server previews in seconds.

Open discord.dog

Related guides

Discord Snowflake ID Explained: What It Is and How to Decode It — Discord.dog