Export X threads & articles as clean Markdown or PDF — or send them straight to Obsidian.
Clip a single post, or your entire Bookmarks, Likes, or a Profile in one batch. Six formats from one typed Content AST, so nested threads, quote-tweets, polls, and long-form Articles come out clean — with images, video, and GIFs saved as real files beside the text, or packed into one .zip. No API keys. Nothing leaves your browser.

Why not just print the page
Other tools screenshot the page. XClipper rebuilds the document.
"Save as PDF" from the browser captures everything you don't want, breaks across pages in the wrong places, and loses everything that made the post worth keeping.
Browser "Save as PDF" / screenshot
A page that looks like X, mangled.
- Sidebars, cookie banners, and faded "show more" overlays come along for the ride.
- Page breaks split tweets mid-sentence; a long thread sprawls across nine pages of dead space.
- Text isn't selectable, links aren't clickable, images get compressed, polls disappear.
- Result: a PDF you can't search, edit, or share without apologising for.
XClipper
A print-ready document, rebuilt from the post.
- Reads the underlying tweet, not the page chrome — no banners, no overlays, no engagement buttons.
- Smart page breaks that never split a tweet; reply chains stay in order; quote-tweets nest with
@handleattribution. - Selectable text, clickable links (with
t.coresolved), original-resolution images, polls inlined with results. - Result: a PDF you'd actually keep — plus matching Markdown when you want it in a note.
Batch export
Clip one post — or your whole library.
Export your entire Bookmarks, Likes, a Profile, your home Timeline, or a hand-picked Selection in a single background job — then close the popup and let it run.
- Live progress and stop anytime, plus a dedup ledger that skips what you've already saved. Manual adds a progress bar with pause / resume; Auto and Super collect open-endedly and show a live count.
- Write separate per-post files, one combined file, or both — in any format except PDF, packed into a single .zip if you want one download.
- Three engines: Manual scrolls the page, Auto fetches through your X session for a ~10× speed-up, and Super skips thread expansion to pull thousands in one run, resuming a large backfill across sessions.

Features
Everything you need to clip X — nothing you don't.
Built for note-takers, researchers, and the LLM-curious. One click to clean Markdown or a print-ready PDF, with all the metadata you'd want.
Batch export
Export many posts in one background job from five sources — Bookmarks, Profile, Likes, Timeline, or a hand-picked Selection. Live progress and stop anytime, with a dedup ledger that skips what you've already saved. Write separate files, one combined file, or both — or pack the lot into a single .zip.
Three batch engines
Manual scrolls the page and saves every post you load. Auto fetches through your logged-in X session instead — no scrolling, roughly 10× faster. Super trades thread depth for volume, pulling thousands in a single run. No API key, no password, nothing leaves your browser.
Six export formats
Save any post as Markdown, PDF, HTML, JSON, TXT, or CSV — or hand it to Obsidian. Batch jobs support all formats except PDF, and CSV pairs your metadata columns with the post body.
High-fidelity Markdown
Tweets, nested threads, quoted posts, polls, link cards, and long-form X Articles converted to readable .md via a typed AST (no Turndown). Reply chains stay in order, t.co redirects resolve to the real URL, emoji and @mentions stay intact.
True PDF export
Threads and articles printed through Chrome's native engine, not screenshotted. Selectable text, clickable links, embedded images, full Unicode and emoji support.
Send to Obsidian
One-click handoff via the obsidian:// URI scheme, with an optional vault name. Obsidian-friendly frontmatter, [[@handle]] wikilinks, and customizable tags.
Images, video & GIFs as files
Set local saving to Media and each post's video or animated GIF is saved as a real .mp4 beside the Markdown — quoted posts included — with a ▶ Video link pointing at the file. On Images, embedded pictures come down the same way. Your notes survive link rot and deleted posts.
Rich YAML frontmatter
Author, handle, date, source URL, content type, and engagement stats (likes, reposts, replies, bookmarks, views). Toggle each field on or off per schema.
One file, not a folder
Turn on Zip files and a post lands as one archive holding the Markdown and its media, instead of a file plus a sibling folder you have to keep together by hand. One thing to drop into a note, an archive, or an AI chat.
How it works
Three ways to clip. Same clean Markdown and PDF.
Pick whichever entry point fits the moment. All three run the same extractor and respect the same settings.
Toolbar popup
Click the XClipper icon, then pick Download .md, Copy .md, Export .pdf, or Add to Obsidian. The toggles you change per-export — images, engagement stats, source link — sit right in the popup, not buried in settings.

Inline button on every tweet
A download icon sits next to share on every tweet's action bar. One click opens the permalink and exports it. Shift- or Alt-click to export just that tweet without its thread.

Right-click anywhere
Right-click on a tweet — body, image, or timestamp — and pick Save tweet as Markdown, Copy tweet as Markdown, or Add tweet to Obsidian. XClipper figures out which tweet you meant.

Under the hood
All three entry points read X's DOM into one typed Content AST, then render to Markdown, PDF, or an Obsidian handoff. Format selectors live in one place, so an X redesign is a small patch.
Start clipping in under a minute.
Install from the Chrome Web Store. Open any tweet or article on x.com. Hit Download. That's it.