Twitter ID to Date Converter
Sorsa Tweet ID to Date Converter reads the moment an X post was made straight from its ID or link: the date and time in UTC and in your time zone, ISO 8601 and Unix time. Paste one ID or a whole list, or turn a date back into an ID. Free, and it works in your browser.Sorsa Tweet ID to Date Converter shows when any X post was made, from its link or ID. Free, in your browser.
The date and time show up here
Paste a post link or ID, or a list of them, one per line.
How to find when a tweet was posted
X shows a post’s date under it, to the minute and in your own time. The ID holds more: the exact moment, in any time zone, for any number of posts, deleted ones too.
x.com/username/status/1234567890123456789
Monday, March 2, 2020, 19:54:56.824 UTC
What X shows
- The date and time under the post, to the minute
- In your own time zone only
- One post at a time, while it’s up
What the ID adds
- The exact moment, to the millisecond
- UTC, your time, ISO 8601 and Unix time
- Whole lists, and deleted posts
Three steps
Copy the link or the ID
The ID is the long number after /status/ in a post’s link. The whole link works too.
Paste one or a list
One per line, from a sheet, a dataset or your notes. Each line converts as you paste.
Read the time
UTC and your time zone, ISO 8601 and Unix time, each with Copy. A list becomes a table and a CSV.
How a Twitter Snowflake ID stores the date
Since November 4, 2010, X has made every post ID with a system called Snowflake: a 64-bit number in which the time comes first.
- 1 bitUnusedalways 0
- 41 bitsTimemilliseconds since X’s epoch
- 10 bitsMachinethe server that made it
- 12 bitsSequenceIDs in the same millisecond
The arithmetic
time = (ID >> 22) + 1288834974657
ID = (time − 1288834974657) << 22
The example, step by step
- ID
- 1234567890123456789
- Shifted right by 22 bits
- 294,343,922,167
- Plus the epoch, 1,288,834,974,657
- 1,583,178,896,824
- As a date
- Monday, March 2, 2020, 19:54:56.824 UTC
X’s epoch, 1288834974657, is November 4, 2010, 01:42:54.657 UTC. Because the time sits in the top bits, a bigger ID is a newer post, and the 41 bits last until July 2080. Account IDs made in recent years use the same format; for any account’s creation date, the Twitter Account Age Checker reads it from X. More on X’s numbers in how Twitter IDs work.
Tweet ID to date in Python, JavaScript and SQL
The same arithmetic in code, for a script, a notebook or a database. Each prints the example above.
Read IDs as text or 64-bit integers: a JavaScript number rounds an ID this long.
from datetime import datetime, timezone
def tweet_time(tweet_id):
ms = (int(tweet_id) >> 22) + 1288834974657
return datetime.fromtimestamp(ms / 1000, tz=timezone.utc)
print(tweet_time("1234567890123456789"))
# 2020-03-02 19:54:56.824000+00:00const tweetTime = (id) => new Date(Number(BigInt(id) >> 22n) + 1288834974657);
console.log(tweetTime("1234567890123456789").toISOString());
// 2020-03-02T19:54:56.824Z-- PostgreSQL
SELECT to_timestamp(((1234567890123456789 >> 22) + 1288834974657) / 1000.0);
-- BigQuery
SELECT TIMESTAMP_MILLIS((1234567890123456789 >> 22) + 1288834974657);Turn a date into a tweet ID for search
The arithmetic runs backwards too: put a moment’s milliseconds back in the top bits and you get the smallest ID X could have made at that moment. It isn’t a post; it marks the moment.
since_id:posts after the momentmax_id:posts before the moment
X’s search takes both, so two of these IDs cut a search to an exact window, to the second, where since: and until: work in whole days. Build the rest of the query in Twitter Advanced Search, or read an account’s posts on any day with Search Tweets by Date.
Date a whole list of tweet IDs
Paste a column of IDs or links from a spreadsheet or a dataset. The table sorts by date, marks the lines that aren’t post IDs and downloads as CSV.
- Researchers date a collection of post links before they study it
- Journalists put posts in order for a timeline, to the second
- Developers check the dates in a dataset or a log against the IDs
The CSV’s columns
input post_id created_at_utc unix_ms unix_seconds local_time time_zone post_url
| Post ID | Date (UTC) | Time (UTC) |
|---|---|---|
| 1923456789012345678 | May 16, 2025 | 19:13:29 |
| 1801234567890123456 | Jun 13, 2024 | 12:46:00 |
| 1704598341293015040 | Sep 20, 2023 | 20:48:09 |
| 1612894531578404864 | Jan 10, 2023 | 19:29:57 |
| 1580661436132757504 | Oct 13, 2022 | 20:47:08 |
The posts behind the IDs, through the API
The converter gives you the time. Sorsa API gives you the post: text, likes, reposts, replies, views, media and the author’s profile, for 100 IDs or links per request with /tweet-info-bulk. It reads posts from before November 2010 too, with their dates.
- 100posts per request
- from $0.014per 1,000 posts
- 20requests a second, any plan
No credit card, and they never expire.
One call is one request, whatever it returns, and failed requests are never charged: Sorsa API pricing. For an account’s or a search’s posts as a file without code, use Export Tweets.
The request
POST https://api.sorsa.io/v3/tweet-info-bulk
ApiKey: YOUR_API_KEY
{"tweet_links": [
"https://x.com/i/status/1234567890123456789",
"https://x.com/i/status/1580661436132757504",
"https://x.com/i/status/1612894531578404864"
]}Questions about tweet IDs and dates
The converter
How do I find out when a tweet was posted?
Paste its link or ID above. The converter reads the moment stored in the ID and shows it in UTC, in your time zone and in Unix time, to the millisecond.
Does it open the tweet?
No. It works the date out from the ID in your browser, with no request to X, so it works for deleted posts and offline. To read the post itself, open it in the Twitter Viewer.
Can I get the date of a deleted tweet?
Yes, if you have its ID or link. The time is part of the ID, whether or not the post still exists.
How accurate is the date?
Exact to the millisecond: it is the moment X wrote into the ID when it made the post. X itself shows the date to the minute.
Can I convert many tweet IDs at once?
Yes. Paste them one per line: the table sorts them by date and downloads as CSV.
Snowflake IDs
What is a Twitter Snowflake ID?
The 64-bit ID format X has used for posts since November 4, 2010. Its first 41 bits hold the time in milliseconds, then a machine number and a sequence. That is why IDs grow with time and can be turned into dates. More in how Twitter IDs work.
What is Twitter’s epoch?
1288834974657: November 4, 2010, 01:42:54.657 UTC. Snowflake counts time from there, not from 1970, so the converter adds it back.
Why doesn’t it work for tweets before November 2010?
Older posts have sequential IDs with no time inside. Sorsa API can still read such a post with its date, if it exists.
Can I convert a user ID to a date?
Account IDs made in recent years use the same format, so the converter dates them; older, shorter ones hold no time. For any account’s creation date, use the Twitter Account Age Checker.
Are IDs made from a date real tweets?
No. An ID made from a date is the smallest ID X could have made at that moment: a marker for since_id and max_id in a search.
The API
How do I get the whole tweet, not just the date?
Sorsa API’s /tweet-info-bulk reads 100 posts by ID or link per request, with text, stats, media and the author, from $0.014 per 1,000 posts. 100 free requests to start, no card.
Read the posts behind your IDs
Text, stats, media and author for 100 posts per request, from $0.014 per 1,000.
No credit card, and they never expire. 6B+ requests served since 2022.
Account checks
Followers & audience
Posts & conversations
Analytics & creators
For developers
How to find when a tweet was posted
X shows a date to the minute. The ID holds the exact moment, for any post, deleted ones too.
x.com/username/status/1234567890123456789
Monday, March 2, 2020, 19:54:56.824 UTC
How a Twitter Snowflake ID stores the date
Since November 4, 2010 every post ID is a Snowflake: a 64-bit number with the time in front.
- 1 bitUnusedalways 0
- 41 bitsTimemilliseconds since X’s epoch
- 10 bitsMachinethe server that made it
- 12 bitsSequenceIDs in the same millisecond
The arithmetic
time = (ID >> 22) + 1288834974657
ID = (time − 1288834974657) << 22
Tweet ID to date in Python, JavaScript and SQL
The same arithmetic in code. Each prints the example above.
Read IDs as text or 64-bit integers: a JavaScript number rounds an ID this long.
Turn a date into a tweet ID for search
Put a moment back in the top bits and you get the smallest ID X could make then: a marker, not a post.
since_id:posts after the momentmax_id:posts before the moment
Two of these IDs cut an X search to an exact window, to the second.
Date a whole list of tweet IDs
Paste a column of IDs or links: a table sorted by date, and a CSV.
- May 16, 2025, 19:13:291923456789012345678
- Jun 13, 2024, 12:46:001801234567890123456
- Sep 20, 2023, 20:48:091704598341293015040
- Jan 10, 2023, 19:29:571612894531578404864
- Oct 13, 2022, 20:47:081580661436132757504
The posts behind the IDs, through the API
Sorsa API reads the posts themselves, 100 IDs per request, with text, stats, media and author.
- 100posts per request
- from $0.014per 1,000 posts
- 20requests a second, any plan
No credit card, and they never expire.
Questions about tweet IDs and dates
The converter
How do I find out when a tweet was posted?
Paste its link or ID above. The converter reads the moment stored in the ID and shows it in UTC, in your time zone and in Unix time, to the millisecond.
Does it open the tweet?
No. It works the date out from the ID in your browser, with no request to X, so it works for deleted posts and offline. To read the post itself, open it in the Twitter Viewer.
Can I get the date of a deleted tweet?
Yes, if you have its ID or link. The time is part of the ID, whether or not the post still exists.
How accurate is the date?
Exact to the millisecond: it is the moment X wrote into the ID when it made the post. X itself shows the date to the minute.
Can I convert many tweet IDs at once?
Yes. Paste them one per line: the table sorts them by date and downloads as CSV.
Snowflake IDs
What is a Twitter Snowflake ID?
The 64-bit ID format X has used for posts since November 4, 2010. Its first 41 bits hold the time in milliseconds, then a machine number and a sequence. That is why IDs grow with time and can be turned into dates. More in how Twitter IDs work.
What is Twitter’s epoch?
1288834974657: November 4, 2010, 01:42:54.657 UTC. Snowflake counts time from there, not from 1970, so the converter adds it back.
Why doesn’t it work for tweets before November 2010?
Older posts have sequential IDs with no time inside. Sorsa API can still read such a post with its date, if it exists.
Can I convert a user ID to a date?
Account IDs made in recent years use the same format, so the converter dates them; older, shorter ones hold no time. For any account’s creation date, use the Twitter Account Age Checker.
Are IDs made from a date real tweets?
No. An ID made from a date is the smallest ID X could have made at that moment: a marker for since_id and max_id in a search.
The API
How do I get the whole tweet, not just the date?
Sorsa API’s /tweet-info-bulk reads 100 posts by ID or link per request, with text, stats, media and the author, from $0.014 per 1,000 posts. 100 free requests to start, no card.
Read the posts behind your IDs
Text, stats, media and author for 100 posts per request, from $0.014 per 1,000.
Get 100 free requestsNo credit card, and they never expire. 6B+ requests served since 2022.
What X shows, and what the ID adds
What X shows
- The date and time under the post, to the minute
- In your own time zone only
- One post at a time, while it’s up
What the ID adds
- The exact moment, to the millisecond
- UTC, your time, ISO 8601 and Unix time
- Whole lists, and deleted posts
Three steps
Copy the link or the ID
The ID is the long number after /status/ in a post’s link. The whole link works too.
Paste one or a list
One per line, from a sheet, a dataset or your notes. Each line converts as you paste.
Read the time
UTC and your time zone, ISO 8601 and Unix time, each with Copy. A list becomes a table and a CSV.
The example, step by step
The example, step by step
- ID
- 1234567890123456789
- Shifted right by 22 bits
- 294,343,922,167
- Plus the epoch, 1,288,834,974,657
- 1,583,178,896,824
- As a date
- Monday, March 2, 2020, 19:54:56.824 UTC
X’s epoch is November 4, 2010, 01:42:54.657 UTC. A bigger ID is a newer post.
Python
from datetime import datetime, timezone
def tweet_time(tweet_id):
ms = (int(tweet_id) >> 22) + 1288834974657
return datetime.fromtimestamp(ms / 1000, tz=timezone.utc)
print(tweet_time("1234567890123456789"))
# 2020-03-02 19:54:56.824000+00:00JavaScript
const tweetTime = (id) => new Date(Number(BigInt(id) >> 22n) + 1288834974657);
console.log(tweetTime("1234567890123456789").toISOString());
// 2020-03-02T19:54:56.824ZSQL
-- PostgreSQL
SELECT to_timestamp(((1234567890123456789 >> 22) + 1288834974657) / 1000.0);
-- BigQuery
SELECT TIMESTAMP_MILLIS((1234567890123456789 >> 22) + 1288834974657);Who dates lists, and the CSV
- Researchers date a collection of post links before they study it
- Journalists put posts in order for a timeline, to the second
- Developers check the dates in a dataset or a log against the IDs
The CSV’s columns
input post_id created_at_utc unix_ms unix_seconds local_time time_zone post_url
The request
The request
POST https://api.sorsa.io/v3/tweet-info-bulk
ApiKey: YOUR_API_KEY
{"tweet_links": [
"https://x.com/i/status/1234567890123456789",
"https://x.com/i/status/1580661436132757504",
"https://x.com/i/status/1612894531578404864"
]}One call is one request, and failed requests are never charged: Sorsa API pricing.