Convert Twitter Snowflake to Date

CREATED ON
TWITTER SNOWFLAKE ID
📅 FULL DATE
⏰ TIME (LOCAL)
🌍 TIME (UTC)
📊 UNIX TIMESTAMP

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

Use Cases

Code Example

// JavaScript
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.