X to Markdown 2026: 3 Ways to Save X Threads & Articles
X (formerly Twitter) hosts tens of millions of public threads, articles, and discussions every day. If you are a researcher, writer, or AI practitioner who wants to save that content for offline reading, analysis, or LLM training data, you need a reliable way to convert X content to clean Markdown.
The good news is that 2026 offers at least three solid options, each suited to a different workflow. This guide covers every method in detail so you can pick the one that fits your needs -- whether you are grabbing a single hot take for ChatGPT or running a nightly script that archives every thread from your favorite authors.
TL;DR. Use tweet.md for the fastest one-off conversion (replace x.com with tweet.md in any URL). Use ThreadGrab's public API for free, scriptable programmatic access to threads and profiles. Use browser reader mode or a read-later service for quick saves of individual X Articles. Power users combine all three.
What Changed in 2026 for X Content Archiving?
Two things made X-to-Markdown significantly easier this year. First, tweet.md launched a dead-simple service: replace x.com with tweet.md in any post URL and get clean Markdown back, optimized for LLMs. It works with individual posts, threads, and even profile pages. Second, the wider LLM ecosystem -- ChatGPT, Claude, Gemini CLI, Hermes Agent, Cursor -- has made Markdown the default interchange format for training data and context windows, driving demand for clean, token-efficient text extraction.
Method 1: tweet.md -- The One-Liner Conversion
tweet.md
Website: tweet.md
Pros: Zero setup, optimized for LLMs, works on any device with a browser, free for single posts.
Cons: Requires internet, not scriptable without their API key plan, free tier may limit heavy users.
tweet.md is the simplest way to convert an X post to Markdown. You do not install anything -- just edit the URL. Every post and profile on X has a public URL; changing the domain from x.com to tweet.md gives you a Markdown-rendered version of the same content.
# Original X post URL
# https://x.com/paulg/status/1234567890123456789
#
# Just replace x.com with tweet.md:
# https://tweet.md/paulg/status/1234567890123456789
#
# The page loads as clean Markdown. Copy it and paste
# into ChatGPT, Claude, or any Markdown editor.
The output includes the author name, post text, engagement stats, and in the case of threads, the entire thread is concatenated as a single Markdown document. tweet.md also offers a skill file for AI agents (install via npx skills add tweet-md/skill) so that Claude Code, Cline, or Hermes Agent can fetch X content on the fly.
tweet.md was recently featured on Product Hunt. It is especially useful when you are in an LLM chat and come across an X thread you want the model to analyze -- replace the URL, copy the Markdown, and paste it in.
When to use tweet.md
- You read X on your phone or laptop and want to save a single thread for later.
- You want to feed an X thread into ChatGPT or Claude for summarization or analysis.
- You want to share a clean, formatted version of an X thread with a colleague without screenshots.
Method 2: ThreadGrab Public API -- Programmatic Bulk Archiving
ThreadGrab
Website: threadgrab.com
Pros: Scriptable, supports Bluesky too, free and no account needed, returns structured JSON you can customize.
Cons: Requires command-line comfort (curl, jq, or a scripting language), not as instant as a URL replacement.
ThreadGrab exposes a public API that returns X thread content as structured JSON. This is the right choice when you need to automate: batch-fetch threads from your favorite authors, archive them to disk every night, or build a custom research pipeline.
# Fetch a user's recent threads as JSON
curl -s https://threadgrab.com/api/profile/paulg \
| jq '.[:3] | .[] | {author, text_length: (.text | length)}'
# Save the full thread as Markdown to a local file
curl -s https://threadgrab.com/api/profile/paulg \
| jq -r '.[] | "# \(.author)\n\n\(.text)\n---"' > paulg-archive.md
ThreadGrab's API returns thread data in a predictable schema: author handle, display name, post text, engagement stats, and timestamps. You can process this with any scripting language -- Python, Bash, Node.js -- and convert it to Markdown, JSON, or CSV.
Unlike tweet.md, ThreadGrab also supports Bluesky posts via the AT Protocol's open API. If you archive content from multiple social platforms, ThreadGrab is your single entry point.
When to use the ThreadGrab API
- You maintain a research archive of X discussions and want nightly batch updates.
- You are building a dataset for LLM training or fine-tuning.
- You want to archive both X and Bluesky content through one interface.
- You need structured data (timestamps, engagement counts) in addition to text.
Method 3: Browser Reader Mode and Read-Later Services
Pocket, Matter, or Browser Built-in Reader
Every major browser has a reader mode. Dedicated apps like Pocket and Matter add sync and annotations.
Pros: Works for any web page, not just X; zero setup; good for single-article saves.
Cons: No programmatic access; X Articles render well but thread replies often get lost; formatting is inconsistent.
This is the lowest-effort method. Every major browser has a reader mode (Ctrl+Shift+R on desktop, or the page icon in the address bar on mobile). When you open an X Article or a thread's HTML view, reader mode strips the sidebar, suggested posts, and ads, leaving just the content.
# Keyboard shortcuts for reader mode:
# Chrome / Edge: F9 or Ctrl+Shift+R
# Firefox: F9
# Safari: Cmd+Shift+R (Reader button in toolbar)
#
# Once in reader mode, copy-paste the clean text into
# your favorite Markdown editor or note-taking app.
Dedicated read-later services like Pocket and Matter go a step further: they save the article to your library, sync across devices, and often expose a highlight/annotation layer. Both Pocket and Matter let you export saved articles as plain text or HTML, which you can then convert to Markdown with a tool like pandoc.
When to use reader mode / read-later services
- You only save X content occasionally and do not want to learn a new tool.
- You already use Pocket or Matter for blog posts and want a unified reading list.
- You are reading X Articles (long-form) rather than threaded short posts -- reader mode handles long-form much better than short-thread concatenation.
Side-by-Side Comparison
| Feature | tweet.md | ThreadGrab API | Reader Mode / Pocket |
|---|---|---|---|
| Setup time | 0 seconds (replace URL) | 5 minutes (curl + jq) | 0 seconds (built-in) |
| Programmatic access | API key plan required | Free, no auth needed | No (manual only) |
| Thread concatenation | Full thread as one doc | Full thread as structured data | Partial (threads break) |
| LLM-optimized output | Yes (purpose-built) | Yes (clean JSON/Markdown) | No (raw web text) |
| Bluesky support | No (X only) | Yes (AT Protocol) | Yes (HTML reader) |
| Bulk / batch saving | Manual per URL | Scriptable (cron, curl) | Manual per page |
| Offline access | Copy-paste or PDF | Save .md files to disk | Synced library (Pocket) |
| Best for | Quick one-off LLM input | Research archives, automation | Casual reading, single articles |
Building an Automated Workflow with All Three
Many power users combine methods for a complete pipeline. Here is a real-world example: a researcher who follows 20 X accounts and wants an LLM-ready archive delivered to their Obsidian vault every morning.
#!/bin/bash
# Nightly X archive for Obsidian (runs at 6 AM via cron)
USERS=("paulg" "kelseyhightower" "swyx" "levelsio")
OUTPUT_DIR="$HOME/obsidian-vault/inbox/x-threads"
mkdir -p "$OUTPUT_DIR"
for user in "${USERS[@]}"; do
curl -s "https://threadgrab.com/api/profile/$user" \
| jq -r '.[] | "# \(.author)\n\(.text)\n---"' \
> "$OUTPUT_DIR/$user-$(date +%Y-%m-%d).md"
done
echo "Archived ${#USERS[@]} profiles to $OUTPUT_DIR"
This pipeline uses ThreadGrab's API for batch-fetching, outputs clean Markdown that Obsidian can index, and leaves the door open for tweet.md when the researcher spots a single interesting thread during the day and wants it in their LLM chat immediately.
Pro tip. If you use an AI coding agent like Claude Code, Cline, or Cursor, install tweet.md's skill with npx skills add tweet-md/skill. The agent can then fetch any X URL as Markdown on the fly during your session, without you leaving the chat.
How ThreadGrab Fits Into These Workflows
ThreadGrab was built to give you ownership of the content you read. Whether you use it through the public API (for automation), the web interface (for one-off grabs), or as a complement to tweet.md (for LLM workflows), the goal is the same: convert public social content to clean, portable, machine-readable Markdown that you own and control.
Unlike tweet.md, ThreadGrab does not require an account, an API key, or any payment for programmatic access. It also works with Bluesky posts, making it the only tool in this comparison that spans two major social platforms.
Want to save an X thread or article for later reading -- no install, no account?
Try ThreadGrab -- Free X Thread DownloaderFAQ
tweet.md converts any public X post or thread into clean Markdown. Simply replace x.com with tweet.md in the URL and you get Markdown back. It is free for individual posts and offers an API key plan for heavy users.
Yes. ThreadGrab offers a free public API that returns thread data as structured JSON. Use curl to fetch thread content, then convert the JSON to Markdown with jq or a short Python script.
They serve different needs. tweet.md is optimized for quick one-off LLM input. ThreadGrab excels at programmatic access, batch workflows, and Bluesky support. Many power users combine both.
Browser reader mode (Ctrl+Shift+R) or read-later apps like Pocket and Matter give you clean text from any X Article URL. tweet.md works with Article URLs too. ThreadGrab API also supports them.
tweet.md is purpose-built for LLM input: clean Markdown with minimal boilerplate. Copy and paste directly into any chat. For bulk ingestion, ThreadGrab API can batch-fetch multiple threads as Markdown blocks.
Pick Your Method and Start Saving
The X-to-Markdown ecosystem in 2026 is healthier than ever. tweet.md gives you a one-second conversion for any post. ThreadGrab's public API gives you free, scriptable access for research and automation. Browser reader mode and read-later services cover the casual save. Choose the method that matches your workflow, and if you find yourself wishing for a simpler way to save threads and articles for later reading, ThreadGrab has you covered.