Skip to content

Snowflake ID Decoder

That long number on a Discord message or a tweet isn't random — it hides the exact moment it was created. Paste a snowflake ID or a Discord/tweet link and instantly see when it was made, which platform it came from, and the bits it's built from.

What is a snowflake ID?

A snowflake is a 64-bit number — usually 17 to 20 digits — that apps hand out as a unique ID for things like accounts, messages, and posts. What makes it special is that it isn't random: the top bits store the time the object was created, and the remaining bits identify the machine that made it plus a small counter. Because the time comes first, a newer snowflake is always a bigger number than an older one, and you can read the creation date straight out of the ID without asking a database.

Twitter invented the format in 2010 to hand out billions of tweet IDs across many servers without collisions. Discord, Instagram, Mastodon, and countless companies copied the idea, each tuning the layout to their needs.

When was this Discord account or message created?

This is the most common reason people decode a snowflake. In Discord, turn on Developer Mode (Settings → Advanced), then right-click any user, server, or message and choose Copy ID— paste it above and you'll see exactly when that account joined, that server was made, or that message was sent. You can also paste a full message link; the tool pulls out the server, channel, and message IDs and dates all three.

One reassurance: an ID only encodes a timestamp. It can't reveal anyone's name, email, IP, or any private information — just the moment of creation.

Why the platform matters

Every platform counts time from a different starting point — its epoch. Discord measures from January 1, 2015; Twitter/X from November 2010; Mastodon uses the standard 1970 Unix epoch; Sonyflake defaults to 2025. Feed the same number into the wrong epoch and the date can be off by years. Sonyflake adds a second trap: it ticks in 10-millisecond steps rather than 1, so a decoder that assumes milliseconds lands 10× off.

That's why this tool doesn't make you pick the platform first. It decodes your number under every known layout, ranks them by which date lands in a believable range, and shows the runner-up so you can sanity-check the guess. If the ID comes from an in-house generator with its own epoch, the custom panel lets you plug in the exact layout.

Querying by date, without a created_at column

Because the timestamp lives in the highest bits, snowflakes sort in creation order — which means you can filter by time using the ID alone. Discord's API is built around this: you page through a channel's messages with after and before snowflake bounds. Databases using a snowflake primary key can run a plain WHERE id >= … range scan with no separate timestamp column.

Open the "Generate a snowflake for a date-range query" panel to turn any date into a boundary snowflake, with copy-paste snippets for the Discord API, discord.js, discord.py, and SQL. Just remember the generated value is for querying only — its non-timestamp bits are zeroed, so it isn't a unique ID you can store.

Snowflake, UUID v7, or ULID?

All three are time-ordered IDs, but they aim at different targets. A snowflake is a compact 64-bit integer — small and fast to index — but it needs a coordinated generator so machine IDs don't clash. UUID v7 and ULID are 128-bit and need no coordinator — any process can mint one independently — at the cost of a larger key.

If you're building fresh and want a standard with broad tooling, UUID v7 is the safe default. If you need a small integer key and can run generator services, a snowflake earns its place. And if you're here because Discord or Twitter/X handed you one, you don't get a choice — but now you can read it.

Frequently asked questions

How do I find when a Discord account or message was created?

Every Discord ID (a long number like 175928847299117063) secretly contains the exact moment it was made. Turn on Developer Mode in Discord (Settings → Advanced), right-click a user, server, or message and choose "Copy ID," then paste it above — or just paste the message link itself. This tool reads the creation date straight out of the number, down to the millisecond. You can't get anyone's name, email, or other private details from an ID; only the timestamp is encoded.

What is a snowflake ID?

A snowflake is a 64-bit number (usually 17–20 digits) that services like Discord and Twitter/X use as a unique ID. Instead of being random, it packs the creation time into its top bits and a machine + counter into the rest — so the ID itself tells you when the object was made, and newer IDs are always larger than older ones. Twitter invented the format in 2010; Discord, Instagram, Mastodon, and many companies built their own versions.

Why does my snowflake decode to the wrong year or a weird date?

Almost always an epoch mismatch. Each platform counts time from its own starting point — Discord from 2015, Twitter/X from 2010, Mastodon from 1970, Sonyflake from 2025 — so the same number reads years apart depending on which one you assume. Sonyflake also counts in 10-millisecond steps instead of 1, which throws a naive decoder off by 10×. This tool tries every known layout and picks the one whose date lands in a sensible range, and it shows you the runner-up so you can judge for yourself. If it's still off, your ID may use a custom epoch — use the "Decode a custom / in-house snowflake" panel.

Are snowflake IDs sortable by time?

Yes — because the timestamp sits in the highest bits, sorting snowflakes numerically sorts them in creation order. That's the whole point of the format: a database can order rows by ID with no separate created_at column, and Discord's API pages through messages using before and after snowflake bounds. Two IDs made in the same millisecond on different machines aren't perfectly ordered, but at any coarser resolution the order is reliable.

Can I query my database or the Discord API by date using a snowflake?

Yes. Open the "Generate a snowflake for a date-range query" panel, pick the platform and a date, and copy a boundary snowflake. For Discord you get ready-to-paste after/before parameters for the REST API, discord.js, and discord.py; for a database primary key you get SQL range queries in six languages. The generated value is for querying only — its machine and sequence bits are zero-filled, so it isn't unique and must never be inserted as a real ID.

Snowflake vs UUID v7 vs ULID — which should I use?

All three give you a roughly time-sortable ID, but they solve different problems. A snowflake is a compact 64-bit integer, great when you control the generator and want small, sortable keys (and it's what you're stuck decoding when you use Discord or Twitter/X). UUID v7 and ULID are 128-bit, need no central coordinator, and drop into any system already typed for a UUID. If you're starting fresh and want a standard, reach for UUID v7; if you specifically need a small integer key and can run ID-generator services, a snowflake fits. This site has dedicated UUID v7 and ULID decoders too.

How do I decode a custom or in-house snowflake?

Lots of companies run their own snowflake generators (and Instagram's uses a 41-bit timestamp + 13-bit shard + 10-bit sequence with a custom epoch). Open the "Decode a custom / in-house snowflake" panel, enter your generator's epoch, how many low bits sit below the timestamp (22 for a Twitter-style layout), and whether it ticks in 1 ms or 10 ms — the ID you pasted is re-decoded with your exact layout.

Related tools

Smart paste

Paste any timestamp or date, or search for a tool