How to export your data from X (Twitter)
Requesting the GDPR export, what arrives, and how to open it.
X (Twitter) is required to give you a copy of the data it holds about you, including posts and social activity and messages. The request itself is free, and arrives as .zip containing JavaScript files, not JSON. Typical wait: usually within a day, sometimes several.
Download an archive of your data
Step by step
-
Open Settings, then Your account
On the web rather than in the app. Settings and privacy, Your account, Download an archive of your data.
-
Confirm your password
You will be asked to re-enter it, and then to confirm a code sent by email or text.
-
Request the archive
There is one button and no options. You cannot choose a date range or a subset.
-
Wait for the notification
It arrives in the app and by email. Most people see it within a day; a large account can take several.
-
Download it promptly
The link expires after roughly a week and the request has to be made again from scratch.
-
Open Your archive.html to browse it
The archive ships with its own offline viewer. Note the space in the filename - that trips up a lot of scripts.
Opening your X (Twitter) export
Muletto reads an X (Twitter) export directly - the zip, without unpacking it first - and finds the posts and social activity and messages inside.
It runs in the browser: the archive is never uploaded, there is no account, and nothing is installed. Open several exports at once and they become one library, with the photographs that appear in more than one of them found automatically.
Worth knowing
Common questions
Why are the files in my X archive .js instead of .json?
Because the archive ships with an offline viewer that loads them as scripts. Each file is a JavaScript assignment - window.YTD.tweets.part0 = [ ... ] - wrapping otherwise ordinary JSON. A JSON parser fails on every one of them until that first line is stripped.
Does the X archive include direct messages?
Yes, in direct-messages.js for one-to-one conversations and direct-messages-group.js for group ones. They are in plain text.
Why are my old tweets truncated in the archive?
Two reasons. Retweets are stored as a 140-character summary beginning RT @, with no way to recover the original. Long posts are stored truncated in tweets.js with the full text in note-tweet.js, joined by id.
Are bookmarks in the X data archive?
No. Likes are included, bookmarks are not, and there is no way to request them.