How to Move All Your ChatGPT Conversations to Claude (or Anywhere Else) in One Markdown File
How to Move All Your ChatGPT Conversations to Claude (or Anywhere Else) in One Markdown File
If you've used ChatGPT for any meaningful length of time, you have a problem you may not have noticed yet: your conversations are not yours. Not in the legal sense — they're yours. In the practical sense — you can't get them out.
The "Export Data" feature on chat.openai.com gives you a JSON dump that's nearly impossible to read. The Share button creates a public URL that anyone can find. The Archive feature hides chats but doesn't let you take them somewhere. If you decide tomorrow that Claude does a better job for your use case, every reasoning thread, every iterative refinement, every careful prompt-craft session — gone, or at least stranded behind a UI that won't let you bring it forward.
This article is about the workflow we use, and the tool we built, to actually make AI conversations portable.
Why portability matters more than people think
There are three distinct reasons people hit this wall:
1. Switching AI providers
The AI landscape changes every quarter. ChatGPT was the obvious choice in 2023; Claude pulled ahead for long-form writing in 2024; DeepSeek became the cheap default for code in 2025. If you've spent months in one provider and decide to migrate, your prompt history is the most valuable thing you'd want to bring — and the hardest to extract.
2. Building a personal knowledge base
Power users increasingly treat AI conversations as long-form content worth archiving. A 2-hour Claude session debugging a hairy distributed-systems bug is more valuable than half the bookmarks in your browser. But it's locked inside Anthropic's UI. You can't grep it, you can't link to specific messages, you can't pull excerpts into your notes.
3. Research and provenance
If you're using AI for actual research — citations, data analysis, draft synthesis — you need provenance. You need to be able to point at which conversation produced which conclusion. That requires the conversations to be exportable as structured text.
None of the major AI platforms make any of these workflows easy. The "Share" button is for promotion, not portability. The data export is for compliance, not usefulness.
What people try, and why it doesn't work
Copy-paste: works for one conversation if you're willing to spend 5 minutes manually fixing the formatting. Doesn't scale to dozens.
Browser print → PDF: dumps the styled HTML. Code blocks come out as images-with-text or weirdly broken. Tables collapse. Math becomes Unicode soup. Search doesn't work.
ChatGPT's "Export Data": returns a conversations.json that requires custom code to parse. The format isn't documented. Renderers exist on GitHub but maintain themselves through OpenAI's UI changes, which is to say, badly.
Third-party scrapers: most AI platforms have anti-scraping measures (rate limiting, signed requests, login walls). Server-side scraping at scale gets you blocked or CAPTCHA'd.
Browser extensions that "save" conversations: a small handful exist. Most save one chat at a time. The ones that try to bulk-export rely on undocumented platform APIs that break frequently.
The pattern that survives every platform UI change
What works reliably is what your browser already does: render the page, then read what's there.
When you're logged into Claude or ChatGPT in your browser, the conversation is fully rendered DOM. All the messages, all the code blocks, all the math, all the formatting — already in your browser, already authenticated. The only thing missing is a tool that:
- Reads that DOM in a structured way (knowing it's a chat, not a generic article)
- Converts it to clean Markdown (preserving code blocks, math, tables, multi-turn structure)
- Lets you collect multiple conversations from different chats and platforms
- Exports the collection as a single file you can take anywhere
That tool is Web2MD, the browser extension we make. The bulk-export workflow shipped in v1.1.2 (released May 2026) and works identically across ChatGPT, Claude, DeepSeek, Gemini, and Perplexity.
The actual workflow
Here's how a "move my last 30 ChatGPT conversations to my Claude knowledge base" job looks in practice:
Step 1 — Install the extension
Web2MD on the Chrome Web Store — free tier handles 3 conversations a day, Pro at $9/month removes the limit.
Step 2 — Open the conversation you want to export
Go to chatgpt.com/c/<id> or claude.ai/chat/<id> (or any equivalent on the other supported platforms). The conversation should be visible on your screen. That's all the prep needed — no API keys, no auth setup, no developer tools.
Step 3 — Click the Web2MD icon
The popup detects you're on an AI chat page and the primary button changes to "Export $Platform$ Conversation". Click it.
A few seconds later, a clean Markdown version of the conversation appears in the popup with two-line clipboard confirmation:
✓ Copied — ready to paste
Press ⌘V (or Ctrl+V) in any AI chat to paste
The Markdown follows a consistent structure:
# How to optimize a Python script for memory
## User
I have a script that loads 50GB of CSVs into pandas and runs out of memory…
## Assistant
There are three classes of optimization to consider…
```python
import pandas as pd
chunks = pd.read_csv("big.csv", chunksize=10000)
…
Code blocks keep their language tags. KaTeX/MathJax math is converted back to TeX source so it survives in Obsidian or any other Markdown editor. The User/Assistant headings preserve the multi-turn structure.
### Step 4 — "Add to queue & convert next page"
After the first conversion, you'll see a button: **"Add to queue & convert next page"**. Click it. The conversation is added to your queue, and the popup is ready for the next one.
Switch to your next conversation in the same browser tab. Open the extension. The popup now shows `Page Queue (1)` at the top — your collected conversations are still there. Convert the new conversation, add to queue. Now it's `Page Queue (2)`.
The queue persists across popup-close cycles. Switching browser tabs is safe.
### Step 5 — Repeat across as many conversations as you need
Five conversations? Twenty? A hundred? The queue holds them all, with their original titles preserved.
You can mix conversations across platforms. A queue of `5 Claude chats + 3 ChatGPT chats + 2 Gemini chats` works the same as a queue of all-ChatGPT — they all merge into the same final Markdown file with consistent formatting.
### Step 6 — Click "Download .md"
When you're done collecting, click the **Download .md** action at the top of the queue. A single Markdown file gets saved to your Downloads folder, with each conversation as an H1 section separated by `---`. The file is named with today's date (e.g. `web2md-collection-2026-05-09.md`).
That's it. You now have a portable, search-grep-readable archive of your AI history.
## What you do with the file
Three common destinations:
### → Drop into Obsidian as a research vault
Move the .md into your Obsidian vault's `Inbox/` folder. Obsidian renders it natively — all the H1 conversation titles become headings in the outline, code blocks render with syntax highlighting, math renders inline. You can split it into one-conversation-per-file later, or leave it as one big searchable document.
### → Feed the whole thing to Claude or ChatGPT for synthesis
Paste the .md (or attach as a file) into a fresh chat with the instruction "You are a research assistant. The following are 30 of my past conversations on $topic. Identify the recurring themes, decisions I made, and questions that came up multiple times." This produces a meta-synthesis that's often more useful than any individual conversation was.
### → Migrate to a new AI provider
If you're switching from ChatGPT to Claude (or vice versa), you can hand the new AI your historical context: "Here's a Markdown file of my last 30 conversations with another AI on this project. Read them, then continue the work — pick up where the previous conversations left off." This works astonishingly well as a "memory" mechanism for chat models that don't have built-in long-term memory.
## Why this approach beats every alternative
**Beats automatic platform list APIs**: those APIs are undocumented, change without notice, and require maintaining a different integration per platform. We tried this in v1.1.0 and ended up with broken UI every time Anthropic or OpenAI shipped a release. The manual queue is platform-agnostic and never breaks.
**Beats third-party services**: nothing leaves your browser. The conversion runs locally in the extension. No API, no upload, no third-party data exposure.
**Beats single-conversation tools**: the queue lets you collect across many chats and many platforms in one session, then export to one file. The competition makes you do this one chat at a time, which is why nobody actually does it.
**Beats copy-paste**: the formatting actually survives. Code blocks keep their language tags. Math comes through as TeX source. Tables stay grids.
## The downside, honestly
You have to click each conversation individually. There's no "export everything" button.
This is a deliberate constraint. Every "export everything" tool we've seen relies on platform-specific APIs that break. The manual collect step is the price of reliability — it works on every platform, every release, forever. For most users, queueing 20 conversations takes about 5 minutes; the resulting Markdown is then permanently portable.
If you have hundreds of conversations to export and that's still too slow, two options:
1. **Pro Plan** unlocks bulk-export with **multi-select on supported platforms** (when the platform API is currently working). When the API works, it works; when it doesn't (which is often), you fall back to the manual queue, but the same queue UI accepts both flows.
2. The MCP server (also Pro) lets AI agents like Claude Code or Cursor drive the conversion programmatically. If you're a developer, you can write a script that walks your conversation list and queues each one.
## Get started
Three things you'll need:
1. **The extension**: [Web2MD on Chrome Web Store](https://chromewebstore.google.com/detail/web2md-web-to-markdown/ijmgpkkfgpijifldbjafjiapehppcbcn). Works on Chrome, Edge, and Brave. Firefox version available too.
2. **A reason**: usually "I want my conversations in Obsidian" or "I'm switching AI providers" or "I need a research archive". Match the workflow to your reason.
3. **Five minutes**: that's about how long the first export takes, including poking around the UI.
Pro is $9/month if you have many conversations to export and the daily 3-conversion free limit isn't enough. Single-conversation export (the Convert button on any chat page) stays free forever, including in our anonymous-no-signup mode.
---
**Related**:
- [Export DeepSeek, ChatGPT, Claude, and Gemini conversations to Markdown](/blog/export-deepseek-chatgpt-claude-conversations)
- [Why copy-pasting webpages into ChatGPT looks terrible](/blog/copy-paste-chatgpt-formatting-broken-fix)
- [How to feed webpage content to ChatGPT and Claude](/blog/how-to-feed-webpage-content-to-chatgpt-claude)
- [Best web clipper in 2026](/blog/web-clipper-comparison-2026-after-markdownload-pocket)