Discord IDs Explained: How Snowflake IDs Work
Ever wondered why Discord IDs are so astronomically large? Here's how Discord encodes the exact creation time into every user, message and server ID - and how to read them.
What is a Discord snowflake ID?
Every object in Discord - a user, a message, a channel, an emoji, a role - has an ID that looks like a huge number, for example 936929561302675456. This isn't a random number. It's a 64-bit integer called a snowflake, inspired by Twitter's snowflake IDs.
The clever part: a snowflake contains its own creation timestamp. Just by looking at the ID, Discord (and you) can know exactly when that object was created, to the millisecond. No separate created_at column needed.
The anatomy of a snowflake
A snowflake is broken into pieces: the highest 42 bits are the timestamp in milliseconds since Discord's custom epoch (January 1, 2015, 00:00:00 UTC - written as 1420070400000 in Unix terms). The next 5 bits identify the worker, the following 5 bits identify the process, and the last 12 bits are a sequence that increments for every ID generated in the same millisecond.
That's where the formula comes from: (id >> 22) + 1420070400000 = creation timestamp in milliseconds. Our Snowflake Converter does exactly this math instantly, in both directions.
Why does the epoch matter?
Discord's epoch of 1420070400000 ms (1 January 2015) is simply the moment Discord rolled out this ID system. Because snowflakes encode time relative to that epoch, two IDs from different eras remain chronologically comparable, and IDs increase over time - which is why newer accounts have bigger IDs.
You can even estimate the age of an account from its ID without asking the API. Paste a user ID into the converter and the exact register date appears immediately.
Practical use cases
Developers use snowflake math to find minimal and maximal IDs for a time window (e.g. 'all users created in March 2023'), to order messages without a database, and to build unpaginated queries. Moderators use it to check when a suspicious account was created - freshly created accounts are a red flag in raids.
Try it: paste any Discord ID (user, server, message or channel) into the Snowflake Converter on this site and you'll get the creation date, worker/process IDs and the binary layout in a single click.
Reading snowflakes in the wild
Once you know the format, you can read Discord IDs everywhere. Open any message link with Developer Mode enabled and right-click the message to copy its ID. The message ID tells you exactly when that message was sent. The channel ID and guild ID you see in the URL are also snowflakes with their own creation dates.
This is how services estimate account ages without asking Discord for anything: decode the user ID. It is also how moderation bots detect raid accounts - an account registered three minutes ago that is suddenly spamming invites has a snowflake timestamp that gives it away instantly.
Snowflake decoding is deterministic and fast: two integer operations plus a comparison. There is no external lookup, no caching and no privacy concern, because the ID itself is public data.
A worked example you can follow along
Take the ID 936929561302675456 from earlier. Shift it right 22 bits to strip the worker, process and sequence fields, which gives roughly 223. Add Discord's epoch of 1420070400000 milliseconds, and you land on a timestamp in milliseconds. Dividing by 1000 converts it to the Unix seconds format Discord uses in its own timestamp markdown.
You can reverse the process too: to find all IDs created in a given week, compute the snowflake for the start and end of the week and use those as before/after boundaries in API queries. That is exactly the technique behind 'messages from March 2023' style searches in audit tools.
The Snowflake Converter on this site automates both directions, and also shows the raw binary layout, the worker and process numbers and the increment sequence so you can see the full structure at a glance.
Common misconceptions about Discord IDs
A common myth is that a bigger ID means a more important account. It does not - it only means the account was created later. Another myth is that IDs are sequential per server; in reality they are generated per worker process, so two IDs created in the same millisecond may still differ wildly in their low bits.
It is also worth knowing that Discord IDs will not be recycled or re-issued. Once an account is deleted, its ID is retired forever. For audit and archival purposes this makes snowflakes excellent stable keys.
Related tools on this site
This guide is paired with free tools that put the technique into practice. The Snowflake Converter decodes any Discord ID instantly and in reverse. The Timestamp Generator builds every timestamp style with a live preview. The Webhook Sender and Embed Builder compose and send webhook payloads without writing code. All of them run entirely in your browser with no account, no install and no data leaving your device.
The rest of the blog covers adjacent topics, and the guides section holds reference pages for sizes, limits and formatting rules. If this article answered the "how", the tools answer the "what do I do now" - paste your own data in and the output is ready to use immediately.
About this guide
This article is written and maintained by the team behind Discord Tools Hub, an independent site that is not affiliated with Discord Inc. It was first published on 2026-08-20 and is reviewed against the current desktop and mobile clients whenever Discord ships a relevant change. Everything here is tested before publishing, and corrections are made openly when a detail shifts.
If you found an error, or if a technique stopped working on your client, the fastest way to help is to report it through the contact page. Including the browser, the device and a short description of what you expected lets us verify and fix it quickly.