How to export your X bookmarks
The official data archive does not contain them. Here is what does work.
There is no export button. More surprisingly, requesting your full X data archive does not get you your bookmarks either: they are not in it. Every working route is a third party, either a browser extension that reads the page you are already logged into, or a tool that talks to the API with your authorisation.
People discover the archive gap the slow way, which is the worst way: request the archive, wait for X to build it, download several hundred megabytes, unzip it, and find posts, likes, direct messages, ad data, and no bookmarks. It is worth knowing before you start waiting.
The routes that work
| Route | What you get | What it costs |
|---|---|---|
| Browser extension | Usually CSV or JSON of your reachable bookmarks, sometimes Markdown or PDF. Runs against the session already open in your browser. | Free, mostly. You are granting a third party read access to a logged-in X tab. |
| API-based tool | Structured data, often with folder membership and richer post metadata. | Usually paid. You authorise it against your account through X's own OAuth screen. |
| By hand | Exactly what you copy. | Free and slow. Realistic for tens of saves, not hundreds. |
| Official archive | Not bookmarks. Posts, likes, DMs, and more. | Free, and a waste of the wait if bookmarks were the goal. |
Using a browser extension
This is what most people should do, and the shape is the same across all of them:
- Install the extension.
- Open your bookmarks page on x.com and stay on it.
- Scroll, or let the extension scroll, so the page loads as much of the collection as it will serve.
- Click export and pick a format.
Step three is the one that decides how complete your export is, and it is worth being explicit about why. An extension can only read what the page has loaded. It cannot reach past the same retrieval ceiling that stops you scrolling, which sits somewhere around 800 to 1,000 saves. So an extension export of a very large collection is an export of the reachable part of it.
If your collection is under a few hundred, this distinction will never affect you. If it is several thousand, no free tool is going to hand you all of them, and any that claims to is worth a second look.
Before you install anything
You are about to give a browser extension permission to read a page where you are logged in to your X account. That is a real grant, and the honest advice is the boring kind:
- Check what permissions it asks for. An extension that only needs to read x.com should not be requesting access to every site you visit.
- Prefer one that works locally. The better ones parse the page in your browser and hand you a file. If a tool uploads your bookmarks to its own server first, that is a copy of your reading history sitting somewhere you do not control.
- Remove it when you are done. An export is a one-off. There is no reason for the permission to outlive it.
- Look at when it was last updated. X changes its front end often, and an extension that has not been touched in a year usually half-works in a way you will not notice until your export is short.
Which format to pick
- CSV if the destination is a spreadsheet or another app's importer. Most portable, loses formatting.
- JSON if you might process it later. Keeps structure, including things like author handle and timestamp as separate fields rather than one flattened string.
- Markdown if it is going into notes. Readable as-is.
- PDF if you want an archive to look at rather than one to use. Hard to search well and impossible to import.
When in doubt, take JSON and keep it. You can always flatten JSON into a spreadsheet later; you cannot recover structure a CSV has already thrown away.
What to do with the file once you have it
An export that sits in your downloads folder is not a backup, it is a file you will lose the next time you clear space. Three things worth doing in the ten minutes after you make one:
- Put it somewhere you actually keep things. Cloud drive, notes app, anywhere that is backed up and that you would think to look in.
- Open it once. Confirm the row count roughly matches what you expected. If you had two thousand saves and the file has four hundred, you have hit the retrieval ceiling and it is better to know now.
- Date the filename. You will make another one eventually and two files called bookmarks.csv is a problem for future you.
Common problems and what causes them
| What you see | Why |
|---|---|
| Export is much smaller than your collection | The page never loaded the older saves. Scroll further before exporting, and accept that there is a floor you cannot get under. |
| Extension button does nothing | Usually an X front-end change the extension has not caught up with. Check when it was last updated. |
| Rows with empty text | The post was deleted or the account went private after you saved it. The link survives, the content does not. |
| Garbled characters in a spreadsheet | A CSV encoding mismatch. Import as UTF-8 rather than double-clicking the file. |
What an export will not contain
A bookmark points at a post. It is not a copy of one. So an export gives you links and whatever metadata the tool captured at the time, and that means:
- Deleted posts are dead links. If the author removed it, the bookmark survives and the content does not.
- Posts from accounts that went private or were suspended are unreachable to anyone but their followers, or to nobody.
- Images and video are usually referenced rather than downloaded, so they disappear when the post does.
If a specific saved post genuinely matters to you, the durable version is a copy of the text, not a link to it.
The part worth saying out loud
Most people who go looking for an export are not actually trying to move platforms. They are trying to feel less bad about a pile that has become unmanageable, and an export feels like doing something about it.
It is worth being clear that it is not. A CSV of 1,400 links is the same 1,400 unread things in a different file format, and in practice it gets opened once. If the reason you want them out is that you are never going to read them where they are, the export is a step, not the fix.