Archive X threads as Markdown
EN PT ID

Tweet.md Stable 2026: When Nothing Changed, What Did We Learn?

August 28, 2026 · 8 min read · Landscape

Some weeks are news-heavy; this one is not. tweet.md, the X-to-Markdown converter that launched in May 2026, has been quiet since its last changelog entry on August 27, 2026 (a "no-charge demo" alongside publish/edit dates on every post). The homepage is stable, the JSON-LD dateModified reads 2026-08-24, and the latest product signal is — in tweet.md’s own words — "Try a no-charge demo." That is the whole week.

For an archivist, a quiet week is data. It tells you the tools that survived the first launch rush, the features that became table-stakes, and the gaps that nobody is racing to fill. This post is a tool landscape retrospective: where the X-to-Markdown market sits at the end of August 2026, when tweet.md is the right choice, and where ThreadGrab covers the rest.

Quick take: tweet.md is now a stable, paid, X-only converter with strong agent-API ergonomics (Next.js on Cloudflare, $5–$49 credit packs, Obsidian YAML frontmatter, profile-as-Markdown). ThreadGrab is a free, multi-platform (X + Bluesky + LinkedIn) archiver with a public profile API and trilingual UI. Use tweet.md when you want profile snapshots in your Obsidian vault; use ThreadGrab when you want a free, durable, multi-platform archive that does not depend on a single vendor’s pricing page.

What tweet.md is, three months in

tweet.md launched 2026-05-17 as a converter for X posts, threads, Articles, and profiles. Its homepage slogan is exactly what it does: Convert X/Twitter posts, threads, Articles, and profiles to clean Markdown for LLMs, agents, research, and archives. Just swap x.com for tweet.md. The site is a Next.js (App Router) build on Cloudflare, served from the Singapore edge with full server-side rendering — the H1, the four input tabs (Single post / Thread / X Article / Profile), and the JSON-LD are all in the first response, not a client shell.

The product surface is narrower than the homepage implies. Output is exactly two formats: markdown (default) or obsidian (Markdown with YAML frontmatter for an Obsidian vault). The docs are explicit: “plain text, never JSON.” Query knobs include format, thread (default branch-5, range 2–500), userinfo, stats, metadata, and apikey. Endpoints are /i/api/convert and /i/api/profile. There is no Bluesky, no LinkedIn, no Mastodon, no Threads.

What tweet.md costs, and what is unstated

Pricing is credit packs: $5 / 200 credits, $19 / 1,000, $49 / 3,000 (per-credit $0.025 → $0.019 → $0.0163). No subscription, no per-seat. Authentication is API key, Bearer header, session cookie, or a trusted-IP allowlist — multiple keys per account are allowed. Controlled demos for a *t-twmduser test profile are free.

What is not published: rate limits. The site does not list a rate cap anywhere visible, which matters for a tool that costs money per call. If you build an agent on top of tweet.md, you are trusting the vendor’s silent throttle — a risk you can avoid by buying a credit pack and treating each request as a metered spend. For research workflows that pull thousands of posts at a time, the absence of a stated rate limit is a yellow flag.

Where ThreadGrab covers different ground

ThreadGrab sits in the same category — capture public social content as Markdown — but with three structural differences that matter for archivists.

The free + multi-platform + trilingual shape is why ThreadGrab’s coverage overlaps with tweet.md on X but extends to platforms where tweet.md cannot follow — and why the two tools read as complements rather than substitutes.

Tweet.md vs ThreadGrab, side by side

Capabilitytweet.mdThreadGrab
Platform coverageX / Twitter only (posts, threads, Articles, profiles)X + Bluesky + LinkedIn + headless web
PricingPaid credit packs ($5 / $19 / $49)Free, no account
Output formatsMarkdown, Obsidian YAML frontmatterMarkdown, structured JSON sidecar
API ergonomicsBearer key, cookie, trusted IP allowlistPublic /api/profile/{username}, no auth
Profile as MarkdownYes — first-classProfile snapshots via the JSON API
LanguagesEnglish-only UIEN / PT / ID
Rate limits publishedNoYes (per IP, polite defaults)
Hosted stackNext.js on Cloudflare (Singapore)Astro 7.1.6 + Cloudflare Pages Functions

The honest summary: tweet.md wins on the profile-to-Obsidian workflow and on agent-API ergonomics; ThreadGrab wins on price, on multi-platform coverage, and on having documented rate limits you can plan around.

The "quiet week" archive workflow

When nothing is launching, the right move is to harden your existing archive. Here is a workflow that combines tweet.md’s Obsidian-friendly profile snapshots with ThreadGrab’s free, durable Markdown thread captures, kept side-by-side in one folder so the human-readable text and the structured provenance travel together.

my-archive/
  tweet-md-profiles/
    2026-08-28-handle-profile.md        # Obsidian YAML frontmatter
  threadgrab-threads/
    2026-08-28-same-thread.md           # clean Markdown, no metadata
    2026-08-28-same-thread.json         # structured sidecar (re-fetchable)
  README.md

Use tweet.md for the profile snapshot you want to keep in your Obsidian vault (YAML frontmatter, tags, dataview-friendly). Use ThreadGrab for the thread itself (full text + a JSON sidecar you can re-fetch later). The two formats are deliberately different: tweet.md gives you a knowledge-graph node; ThreadGrab gives you a citation. An archive needs both.

A quick capture check

For one-off captures, the simplest test is whether the URL pattern you already have works on the tool you are using. Here is the shape both tools expect, side by side:

# tweet.md: swap the host
https://x.com/handle/status/123...  ->  https://tweet.md/i/status/123...

# ThreadGrab: same handle, public profile API
https://threadgrab.com/api/profile/handle

# Both return Markdown; tweet.md adds Obsidian YAML frontmatter
# on the obsidian format flag, ThreadGrab returns clean Markdown
# plus an optional JSON sidecar you can re-fetch.

If you find yourself swapping x.com for tweet.md in your URL bar several times a day, you are paying for the Obsidian convenience. If you find yourself pasting the same ThreadGrab profile URL into a script, you are wiring the durable archive path. Both are honest moves.

When to use which, in three short rules

What a stable market actually means

A quiet week is not a dead category — it is a category that has found its shape. tweet.md owns the X-only, Obsidian-first, agent-API niche; ThreadGrab owns the multi-platform, free, trilingual archive niche. Neither is racing to absorb the other. The honest reading is that the X-to-Markdown market in August 2026 is segmented, not consolidating: the converters that survive are the ones that pick a structural advantage (paid + agent-first, or free + multi-platform) and stop chasing the other side.

For archivists, that is good news. Two durable vendors beats one. The risks to watch are on each side: tweet.md’s unstated rate limits and single-platform scope; ThreadGrab’s dependency on the social platforms not changing their public-API surface out from under it. Neither is going away this month — both are worth wiring into a long-term archive workflow.

FAQ

Is tweet.md free to use?

Partially. tweet.md sells credit packs ($5 / $19 / $49) and offers a free demo for a *t-twmduser test profile. For real profile or thread conversions, you pay per call. There is no subscription and no free tier for production use.

What platforms does tweet.md support?

Only X / Twitter — posts, threads, Articles, and profiles. There is no Bluesky, LinkedIn, Mastodon, or Threads support in the visible product surface.

Can tweet.md output JSON or structured data?

No. The documentation is explicit: output is plain text, either Markdown or Obsidian YAML-frontmatter Markdown. If you need structured JSON, you have to parse the Markdown yourself or use a different tool.

Does tweet.md publish rate limits?

No. There is no published per-second or per-day rate limit anywhere in the visible docs. Treat each request as a metered spend against your credit balance and back off on 429 responses rather than relying on a stated quota.

How is ThreadGrab different from tweet.md?

ThreadGrab is free, multi-platform (X + Bluesky + LinkedIn + headless web), and ships with a public no-auth profile API. tweet.md is paid, X-only, and ships with an Obsidian-friendly YAML output. Use the one that matches your archive shape; both are worth keeping.

Should I switch from tweet.md to ThreadGrab (or vice versa)?

Only if your archive shape changes. If you need multi-platform coverage, free unlimited capture, or a trilingual interface, move to ThreadGrab. If you need Obsidian YAML frontmatter, agent-API ergonomics, and you are happy paying per call, stay with tweet.md. Many archivists run both side-by-side.

Try ThreadGrab → Free. No account. Multi-platform.