Discord Toolbox

Discord Snowflake Calculator

A snowflake encodes milliseconds since Discord's epoch of 1 January 2015, along with worker, process, and increment bits. This calculator converts snowflakes to exact timestamps and works in reverse, generating the snowflake for a given date so you can filter API queries by time.

Date to Snowflake Generator

Convert any target calendar date & time into a Discord snowflake ID (useful for bot API search boundaries like before / after parameters).


Batch Discord ID Decoder

Discord ID Created Date (UTC) Account Age Worker Process Increment

How to use the Snowflake Calculator

  1. Paste one or more snowflake IDs to decode them in a batch.
  2. Or enter a date to generate the snowflake for that moment.
  3. Copy the result into your API query, bot code, or audit notes.

The Discord Snowflake Structure

Discord uses Twitter's Snowflake format for 64-bit unique identifiers. Starting from the custom epoch 1420070400000 (January 1, 2015 00:00:00 UTC):

How Discord snowflake IDs encode time

Every ID Discord issues is a 64-bit snowflake, and the upper 42 bits hold a millisecond timestamp counted from Discord's own epoch of 1 January 2015. The remaining bits identify the internal worker and process that generated the ID and an increment counter that prevents collisions within the same millisecond. That layout means an ID contains its own creation time and no API call is needed to read it.

Because the timestamp sits in the high bits, snowflakes sort chronologically as numbers. A larger ID was always created later than a smaller one, which is what makes ID-based pagination work in the Discord API. It also means you can filter by time without a date field: generating the snowflake for a given moment gives you a boundary value to compare against.

That reverse direction is the underused half. If you want every message in a channel after a specific date, you convert the date into a snowflake and pass it as the after parameter. The worker and increment bits can be zeroed for this, since only the timestamp portion matters for a comparison boundary.

Common problems and fixes

Frequently asked questions

What is a Discord Snowflake ID?

A Snowflake ID is a 64-bit unique number assigned to every user, guild, channel, message, and role in Discord.

What is the Discord Epoch timestamp?

Discord epoch begins at 1420070400000 ms (January 1, 2015 00:00:00 UTC). Snowflakes measure time elapsed since this moment.

How do you calculate the creation date from an ID?

Right-shift the snowflake by 22 bits and add 1420070400000 ms to obtain the Unix millisecond timestamp.

Can two Discord entities have the exact same snowflake ID?

No. The combination of worker ID, process ID, and internal increment ensures every snowflake is globally unique across Discord.

What is the Discord epoch?

1 January 2015 at midnight UTC, expressed as 1420070400000 in milliseconds. Snowflake timestamps are offsets from this point.

Can I tell exactly when an account was created from its ID?

Yes. The timestamp is the account creation time to the millisecond and cannot be altered afterwards.

Why generate a snowflake from a date?

To use it as a boundary in API queries, so you can request only messages or audit entries after a specific moment.