← All free tools

Free tool · runs in your browser

X archive explorer

The archive X sends you is a ZIP of JavaScript files, which is not much use on its own. Point this at tweets.js and like.js and you get a searchable, sortable table of everything in them. It runs in your tab; the archive is the most sensitive file X will ever hand you, and it is not going anywhere near a server here.

  • No bookmarks in the archive
  • Reads tweets.js and like.js
  • Direct messages deliberately refused

Open an archive

Choose the .js files from the archive's data folder. Match counts are announced as you search.

The official X archive does not contain your bookmarks. It has posts, likes, direct messages and follower lists — there is no bookmarks.js, and there never has been. Saved posts are readable only through the API. This tool opens what the archive does contain.

1 · Open the files

Unzip the archive, open its data folder, and choose tweets.js and like.js — plus any tweets-part1.js and account.js, which supplies your handle for permalinks. You can select several at once.

Read this first: the archive has no bookmarks in it

This is the single most common disappointment with the X data archive, and it is better to hear it before you spend two days waiting for the download. Go to Settings → Your account → Download an archive and what arrives contains your posts, your likes, your direct messages, your follower and following lists, your ad-interest data and a great deal else. It does not contain your bookmarks. There is no bookmarks.js, and there never has been — this has been a known gap for years and is unchanged as of 2026.

The practical consequence is that there is no free route to your saved posts. The only compliant way to read them is GET /2/users/:id/bookmarks, which is a paid endpoint — $0.005 per post read. Browser extensions that scrape your logged-in session avoid that cost by using undocumented internal endpoints; that violates X's developer terms and can be broken or blocked without notice. We say this plainly because we would rather pre-empt the disappointment than cause it.

What the archive is good for is everything else: finding a post you wrote years ago, seeing what you actually liked, working out how much of your posting was replies. That is what this tool does.

How the archive is actually shaped

Inside the ZIP is a data folder, and the files in it are JavaScript rather than JSON. Each one assigns an array to a namespaced global:

What the files look like
tweets.js
window.YTD.tweets.part0 = [ { "tweet": { "id_str": …, "full_text": …, "created_at": … } }, … ]
like.js
window.YTD.like.part0 = [ { "like": { "tweetId": …, "fullText": …, "expandedUrl": … } }, … ]
account.js
Your handle. Supply it and post permalinks become x.com/yourname/status/… instead of x.com/i/web/status/…
tweets-part1.js
Large accounts are split across numbered parts. Select them all at once; duplicates are merged.

So the work is: strip the window.YTD.…= prefix, parse the remainder as JSON, and unwrap the single-key envelope around each record. This tool takes the individual files rather than the ZIP on purpose — unzipping in the browser needs a compression library, and the files inside are already plain text. Fewer moving parts, no dependency, same result.

What it reads, and what it refuses

Posts and likes. That is the whole list. A file whose variable name is a direct-message export is skipped with a note rather than parsed, because there is no version of "search your DMs" that belongs in a tool you found on a marketing site. Any other unrecognised file is reported as unread rather than half-interpreted.

What you can do with it

  • Search the full text of every post and like, or paste a post ID.
  • Sort by date, by likes received, by reposts received, or by length.
  • See the shape of it — originals versus replies versus reposts, how many had media, which languages, the date range.
  • Export what you filtered to CSV, written RFC 4180-correct so post text containing commas and newlines survives the trip into a spreadsheet.

Caveats

  • Likes carry no timestamp. X's like.js holds only the post ID, its text and a link — so likes sort by nothing useful except length, and their date column reads as a dash. That is the archive's limitation, not ours.
  • Like and repost counts are frozen. They are the numbers as of when the archive was generated, not today's.
  • Very large archives are bounded by your tab. Everything is held in memory and the table renders in pages of a hundred rows, but a hundred thousand posts is a lot to ask of a browser.
  • Deleted posts stay in your archive. A post you removed from X may still appear here, because the archive is a snapshot of what X held when you asked for it.

Nothing you paste or open is uploaded.

Your archive contains your direct messages, your phone number and your IP history. This page reads the files you choose with the browser's own File API, keeps them in memory, and has no endpoint to send them to — and it will not open the message files at all. You can confirm it: open your browser's network panel and use the tool. The only requests you will see are for this page's own code and for pages you might click to next — none of them carries what you typed.

Other free tools

Built by the people who sort your bookmarks for you

Sift imports your X bookmarks, sorts them into categories and emails you a digest. The free plan imports your newest 100 bookmarks — a cap, not a trial, because reading them costs real money.

See how it works