Readstash
  • Pricing
  • FAQs
  • Blog
Sign InSign Up

🤖 Psst, are you an AI agent? You don't need the pixels. This exact page, minus the CSS, lives at /blog/how-to-export-twitter-bookmarks.md. The whole site, with a table of contents, is at /llms.txt (the long version: /llms-full.txt). Go on, you've earned a break from parsing divs.

Humans: nothing to see here. Unless you also like Markdown, in which case, welcome to the club.

Readstash

A reading room for what you save on X. Readstash reads your bookmarks, keeps the ones worth your time and sends you a five-minute brief.

Product
  • How it decides
  • Features
  • Pricing
  • FAQ
About
  • Blog
  • Documentation
  • Contact
Legal
  • Terms of Service
  • Privacy Policy
  • Cookie Policy
© 2026 Readstash. Built by Seven Hills Software.Interface sounds

How to Export Your X (Twitter) Bookmarks in 2026: 4 Methods

Oct 1, 2026

X's data archive skips bookmarks. Four methods that actually export your X (Twitter) bookmarks, from a 2-minute browser trick to the API.

The first thing most people try is Settings → Your account → Download an archive of your data. It is a sensible guess, and it does not work: the archive contains your posts, likes, DMs and ad data, but not your bookmarks. Bookmarks live in a separate system and X has never added them to the export.

So here are the methods that do work, in order from "no setup" to "write some code".

Method 1: Copy from the page (free, manual)

Open x.com/i/bookmarks in a desktop browser, scroll to the bottom to load everything, then select-all and paste into a document. You get the text of each post plus the author handle, but not the links to the original posts.

A slightly better version: use the browser's "Save page as" to keep the HTML, which preserves links. Either way, this is the method for a one-off backup of a small list.

Good for: under 100 bookmarks, one-time export. Bad for: anything you will need to do again.

Method 2: A browser extension (free or cheap, semi-automatic)

Extensions sit in the page while you browse x.com and capture posts as you scroll or click. Readstash's Chrome extension, for example, saves a post with one click and stores the full text, author, media links and the thread it belongs to; the free plan allows 200 saves a month and anything saved can be exported as CSV or JSON from your account.

Other extensions take the "scrape the bookmarks page" approach: open your bookmarks, click a button, and the extension scrolls through and collects everything it can see.

Good for: ongoing capture without touching the API. Bad for: very large backlogs. Scraping relies on X rendering every post in the page, which gets flaky past a few hundred.

Method 3: A sync tool (paid, automatic)

Tools like Readstash (Pro), Dewey and Tweetsmash connect to your account through X's official OAuth and read your bookmark list through the API. Nothing to scroll, nothing to click; new bookmarks appear in the tool on a schedule.

Once your bookmarks are in the tool, exporting is a button: CSV for spreadsheets, JSON for developers, and often Notion, Markdown or Obsidian formats.

This method costs money because X charges developers per bookmark read. That is the honest reason "unlimited free sync" does not exist anywhere.

Good for: people who bookmark every day and want a living archive, not a snapshot. Bad for: a one-time export; you would be paying for a month to press one button (though Readstash's free plan plus the extension covers that case).

Method 4: The X API (free tier removed, some code)

If you are comfortable with a terminal, the API gives you the cleanest data. The steps:

  1. Create a project and app in the X Developer Portal and enable OAuth 2.0 with the scopes tweet.read, users.read and bookmark.read.
  2. Run the OAuth 2.0 authorization-code flow with PKCE to get a user access token. The bookmarks endpoint only works with a user token, not an app-only bearer token.
  3. Call GET /2/users/:id/bookmarks, paging with pagination_token until meta.next_token is absent. The endpoint returns up to 100 posts per page.

A minimal fetch loop in JavaScript looks like this:

const base = `https://api.x.com/2/users/${userId}/bookmarks`;
let next;
const all = [];

do {
  const url = new URL(base);
  url.searchParams.set('max_results', '100');
  url.searchParams.set('tweet.fields', 'created_at,author_id,entities,public_metrics');
  if (next) url.searchParams.set('pagination_token', next);

  const res = await fetch(url, { headers: { Authorization: `Bearer ${userToken}` } });
  const json = await res.json();

  all.push(...(json.data ?? []));
  next = json.meta?.next_token;
} while (next);

console.log(JSON.stringify(all, null, 2));

Two things catch people out. First, X moved API access to pay-per-use pricing, so expect to add a payment method even for small volumes; a few hundred bookmark reads cost well under a dollar. Second, the endpoint returns the most recent bookmarks first and in practice stops well before the oldest entries on very large lists, which is one reason the "800 bookmarks" folklore exists (more on that in our guide to disappearing bookmarks).

Good for: developers, and anyone who wants the raw data with engagement metrics. Bad for: everyone who stopped reading at "PKCE".

What to do with the export

An export is a snapshot. The useful question is what you want from it:

  • A backup: keep the JSON or CSV somewhere safe and move on.
  • A reading list: import it into a read-it-later app, or let a digest tool summarise it so the backlog actually shrinks. Our weekly reading habit guide covers the routine.
  • Research material: a spreadsheet with author, date, text and engagement columns is enough to tag and filter by topic.

FAQ

Does the export include replies and quoted posts? The API returns the bookmarked post only. To get the full thread you need a tool that expands conversations, which costs extra API reads. Readstash does this for threads it summarises.

Can I export someone else's bookmarks? No. Bookmarks are private and only readable by the account owner with a user token.

Will exporting remove bookmarks from X? No. All four methods are read-only.