Last updated
Twitter Snowflake to Date Converter
Convert Twitter Snowflake IDs to dates to find when tweets were posted or accounts were created. Every Twitter ID contains an embedded timestamp that can be extracted and converted to a human-readable date.
How Twitter Snowflake to Date Works
Twitter Snowflake IDs are 64-bit integers where the first 41 bits encode a timestamp in milliseconds since Twitter's epoch (November 4, 2010). Our converter extracts these bits and adds the epoch to get the exact creation date.
What You Can Convert
- Tweet IDs - Find when tweets were posted
- User IDs - Discover account creation dates
- Direct Message IDs - See message timestamps
- Media IDs - Check when media was uploaded
- Any Twitter Snowflake ID from November 2010 onwards
Use Cases
- Verify tweet authenticity by checking timestamps
- Analyze Twitter account ages
- Build chronological timelines
- Debug Twitter API integrations
- Research social media trends
- Track content publication patterns
Code Example
const TWITTER_EPOCH = 1288834974657n;
const id = 1382350606417817604n;
const timestamp = Number((id >> 22n) + TWITTER_EPOCH);
const date = new Date(timestamp);
console.log(date); // April 18, 2021
Twitter Snowflake to Date — Examples
Convert any Twitter Snowflake ID to a human-readable date. Every Twitter ID encodes the exact creation timestamp — here's how to decode it.
Quick Conversion
// JavaScript — Snowflake ID to date
function snowflakeToDate(idStr) {
const id = BigInt(idStr);
const TWITTER_EPOCH = 1288834974657n;
const tsMs = (id >> 22n) + TWITTER_EPOCH;
return new Date(Number(tsMs));
}
// Example
const date = snowflakeToDate("1529877576591609861");
console.log(date.toDateString()); // e.g., "Thu May 26 2022"
console.log(date.toISOString()); // "2022-05-26T..."
# Python — Snowflake ID to date
from datetime import datetime, timezone
def snowflake_to_date(id_str):
ts_ms = (int(id_str) >> 22) + 1288834974657
return datetime.fromtimestamp(ts_ms / 1000, tz=timezone.utc)
dt = snowflake_to_date("1529877576591609861")
print(dt.strftime("%B %d, %Y")) # e.g., "May 26, 2022"
print(dt.isoformat()) # "2022-05-26T..."
Multiple Date Formats
// Show the date in all common formats
function allDateFormats(idStr) {
const date = snowflakeToDate(idStr);
return {
"Short": date.toISOString().split("T")[0],
"Long": date.toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric" }),
"With time": date.toISOString().replace("T", " ").replace("Z", " UTC"),
"Day of week": date.toLocaleDateString("en-US", { weekday: "long" }),
"Relative": getRelativeAge(date),
"ISO 8601": date.toISOString()
};
}
function getRelativeAge(date) {
const days = Math.floor((Date.now() - date.getTime()) / 86400000);
if (days === 0) return "Today";
if (days === 1) return "Yesterday";
if (days < 7) return `${days} days ago`;
if (days < 30) return `${Math.floor(days / 7)} weeks ago`;
if (days < 365) return `${Math.floor(days / 30)} months ago`;
return `${Math.floor(days / 365)} years ago`;
}
const formats = allDateFormats("1529877576591609861");
Object.entries(formats).forEach(([fmt, val]) => console.log(`${fmt}: ${val}`));
Account Creation Date from User ID
# Python — find when a Twitter account was created from its user ID
from datetime import datetime, timezone
def get_account_creation_date(user_id_str):
"""
Decode a Twitter user ID to find the account creation date.
Works for accounts created after November 2010 (Snowflake era).
"""
id_val = int(user_id_str)
if id_val < 27_000_000_000:
return "Pre-Snowflake account — exact creation date not available from ID"
ts_ms = (id_val >> 22) + 1288834974657
dt = datetime.fromtimestamp(ts_ms / 1000, tz=timezone.utc)
return {
"user_id": user_id_str,
"created_date": dt.strftime("%B %d, %Y"),
"created_time": dt.strftime("%H:%M:%S UTC"),
"iso8601": dt.isoformat()
}
# Example
print(get_account_creation_date("1234567890123456789"))
Comparing Dates of Multiple IDs
// Compare when multiple tweets or accounts were created
function compareDates(ids) {
const TWITTER_EPOCH = 1288834974657n;
const decoded = ids.map(id => ({
id,
date: new Date(Number((BigInt(id) >> 22n) + TWITTER_EPOCH))
}));
// Sort chronologically
decoded.sort((a, b) => a.date - b.date);
const oldest = decoded[0];
const newest = decoded[decoded.length - 1];
const spanDays = Math.floor((newest.date - oldest.date) / 86400000);
return {
chronological: decoded.map(d => ({ id: d.id, date: d.date.toDateString() })),
oldest: oldest.id,
newest: newest.id,
spanDays
};
}
const ids = [
"1529877576591609861",
"1700000000000000000",
"1800000000000000000",
];
console.log(compareDates(ids));
Pre-Snowflake vs Snowflake Dates
// Twitter switched to Snowflake IDs in November 2010
// Pre-Snowflake IDs don't encode dates
function getDateOrExplain(idStr) {
const id = BigInt(idStr);
if (id < 27_000_000_000n) {
return {
id: idStr,
type: "pre-snowflake",
note: "This account was created before November 2010. The exact date is not encoded in the ID."
};
}
const TWITTER_EPOCH = 1288834974657n;
const tsMs = (id >> 22n) + TWITTER_EPOCH;
const date = new Date(Number(tsMs));
return {
id: idStr,
type: "snowflake",
date: date.toDateString(),
iso8601: date.toISOString()
};
}
console.log(getDateOrExplain("783214")); // pre-snowflake
console.log(getDateOrExplain("1529877576591609861")); // snowflake
Fact-Checking: Verify a Tweet's Date
# Python — verify a tweet's date from its URL
# The Snowflake timestamp is objective and cannot be manipulated
import re
from datetime import datetime, timezone
def verify_tweet_date(tweet_url):
match = re.search(r'/status/(\d+)', tweet_url)
if not match:
return "No tweet ID found in URL"
id_val = int(match.group(1))
ts_ms = (id_val >> 22) + 1288834974657
dt = datetime.fromtimestamp(ts_ms / 1000, tz=timezone.utc)
return f"Tweet created: {dt.strftime('%B %d, %Y at %H:%M:%S UTC')}"
# Example
url = "https://twitter.com/user/status/1529877576591609861"
print(verify_tweet_date(url))
The Snowflake to Date conversion is deterministic — the same ID always produces the same date. This makes it a reliable tool for verifying when any Twitter content was created, independent of what any screenshot or third-party source claims.
Frequently Asked Questions
Enter the Twitter Snowflake ID into our converter and click 'Convert to Date'. The tool extracts the timestamp from the ID and displays the exact date and time. Twitter IDs encode creation timestamps using epoch November 4, 2010, making conversion accurate to the millisecond.
Twitter Snowflake IDs store timestamps as milliseconds since November 4, 2010, 01:42:54 UTC. The first 41 bits of the 64-bit ID contain this timestamp, allowing precise date conversion for any Twitter ID.
Yes! All Twitter IDs since November 2010 use the Snowflake format and can be converted to dates. Older IDs from before November 2010 used a different system and cannot be converted using this method.
Yes, conversion is accurate to the millisecond. Twitter Snowflake IDs encode the exact millisecond when the ID was generated, making date conversion extremely precise for chronological analysis.