Export ChatGPT Conversations to Markdown (2026)
A clean .md with your prompts, the replies, code blocks, and tables — not a flattened wall of text. Here's every way to get one.
Updated August 2026 · works with ChatGPT (chatgpt.com), Claude (claude.ai), and Gemini (gemini.google.com).
Your options, honestly compared
- Copy button on each reply — ChatGPT's per-message copy gives you one answer at a time. Fine for a snippet; painful for a whole conversation, and your own prompts aren't included.
- Official data export — Settings → Data Controls → Export data emails you an archive of everything. It's a bulk dump (HTML/JSON), not a clean .md of the one conversation you actually want.
- Manual copy-paste — headings flatten, tables collapse, code fences disappear. You'll spend longer reformatting than the chat took.
One click to clean Markdown
- Install the free extension. AI Chat Exporter adds a button to Chrome — no account, processed locally in your browser.
- Open the conversation in ChatGPT, Claude, or Gemini.
- Click the icon → Markdown. Copy to clipboard or download a .md file — headings, tables, and code blocks intact, both your prompts and the replies.
Where clean Markdown shines
- Obsidian & note apps — paste straight into your vault (there's a dedicated Obsidian mode with frontmatter).
- Git repos & docs — commit AI research next to your code, diff it over time.
- Moving between AIs — a clean .md pastes back into Claude or Gemini without junk.
One click, formatting intact.
Free for 5 Markdown exports · one-time $12 unlocks unlimited Markdown, PDF & Obsidian.
➕ Add to Chrome — FreeFAQ
Can ChatGPT export to Markdown natively?
Not per conversation. The official export (Settings → Data Controls) emails a bulk archive of all chats as HTML/JSON. For one clean .md of a single conversation, you need an exporter.
Does it keep code blocks and tables?
Yes — that's the point. Code fences, tables, and headings survive intact instead of collapsing into plain text.
Is my conversation uploaded anywhere?
No. Everything is processed locally in your browser; nothing is sent to a server.