ChatGPT to Markdown Chrome Extension: How I Export Chats Cleanly
If you use ChatGPT for real work, you eventually want the conversation out of the chat window and into something you control: a notes app, a Git repo, an Obsidian vault, or the context window of another model. Markdown is the obvious format. It keeps headings, code blocks, and lists intact, and every AI tool reads it well.
I spent a couple of weeks testing different ways to get ChatGPT conversations into Markdown. This post covers what I found, including where Web2MD works well and where it does not.
The options I tested
There are roughly four ways to get a ChatGPT conversation into Markdown:
- The built-in copy button on each message
- OpenAI's data export (Settings, then Data controls, then Export)
- Dedicated ChatGPT exporter extensions built only for chat history
- A general web-to-Markdown extension like Web2MD that converts whatever page you are on
Each has a place. Here is how they held up.
The built-in copy button
ChatGPT's copy icon under each response gives you Markdown for that single message. For one answer, this is the fastest option and you do not need any extension at all.
The problem is scale. A 40-turn debugging session means 40 clicks, and you lose your own prompts unless you copy them separately. You also lose the back-and-forth structure, which is often the most useful part when you revisit a conversation later.
OpenAI's data export
The official export emails you a zip file with your full history as JSON and HTML. It is complete and it is the right tool for backups.
It is not great for daily use. You wait for an email, unzip a file containing every conversation you have ever had, and then you still need a script to turn the JSON into readable Markdown. I used it once for an archive and never again for single chats.
Dedicated ChatGPT exporters
There are several Chrome extensions built only for ChatGPT export. The good ones are honestly good: they understand the chat layout, label speakers, and some export to PDF or plain text too. If the only thing you ever convert is ChatGPT, one of these may be all you need.
The limit is that they are single-purpose. When ChatGPT changes its page structure, these tools can break until the developer ships a fix. And they do nothing for the docs page, GitHub issue, or paywalled article you want to feed into the same AI session.
Server-side converters (Jina Reader, Firecrawl)
I also tried pasting a ChatGPT share link into server-side tools. Jina Reader and Firecrawl are excellent for public pages: fast, scriptable, and good with batches. But they fetch the URL from their own servers, so they only see what a logged-out visitor sees. Your private conversation URL returns a login wall. Public share links sometimes work, but you have to create a share link first, which makes the conversation public.
Why I ended up using a browser-side converter
Web2MD runs inside your Chrome tab. It reads the page you are already looking at, with your session, so a logged-in ChatGPT conversation converts the same way a public blog post does. Nothing gets sent to a third-party scraper, and you do not need to create a share link.
Here is roughly what a short conversation looked like after one click:
# Debugging a Postgres connection pool leak
**You:**
My Node app runs out of Postgres connections after about 2 hours.
I'm using pg with a Pool of size 20. What should I check first?
**ChatGPT:**
The most common cause is a client checked out with `pool.connect()`
that is never released. Check these first:
1. Every `pool.connect()` has a matching `client.release()`
2. Releases happen in a `finally` block, not only on success
3. Long-running transactions are not holding clients
```js
const client = await pool.connect();
try {
await client.query('BEGIN');
// ...
await client.query('COMMIT');
} finally {
client.release();
}
Speaker labels are kept, the numbered list stays a list, and the nested code block keeps its language tag. That last part matters if you paste the result into Cursor or Claude, because the model can tell where the code starts and ends.
## The token counter turned out to be the useful part
I did not expect to care about this, but the built-in token counter changed how I work. Long ChatGPT threads get big fast. Before pasting a conversation into another model, I can see the size right away and decide whether to trim it.
A typical result footer looks like this:
```markdown
---
source: chatgpt.com/c/...
converted: 2026-11-08
words: 3,412
estimated tokens: ~4,600
---
A 4,600-token conversation fits easily into Claude or GPT. A 60,000-token marathon session probably should not be pasted whole. Knowing that before I paste saves a failed request and a confused model. If you want more on this, I wrote about how token counts affect AI context separately.
There is also a send-to-AI button that opens the converted Markdown directly in ChatGPT, Claude, or another tool. I mostly use it to move a ChatGPT thread into Claude for a second opinion, which takes about two clicks.
Where Web2MD falls short
Here are the limits I ran into:
- Chrome only. It works in Chrome and Chromium-based browsers. No Firefox or Safari build.
- 3 free conversions per day. The free tier is enough for occasional use. If you export many chats daily, you will hit the limit and need Pro at $9/month.
- Not a bulk archiver. It converts the page in front of you. If you want your entire ChatGPT history, use OpenAI's official export.
- Very long threads. On conversations with hundreds of turns, ChatGPT itself loads messages lazily. I had to scroll to the top first so all messages were actually on the page before converting.
- Rendered elements. Charts and images ChatGPT generated show up as image references, not data. Math usually comes through as LaTeX, but I saw the odd formatting quirk on complex equations.
Which one should you use?
My honest recommendation:
- One answer, once in a while: use ChatGPT's copy button. It is free and already there.
- A full backup of everything: use OpenAI's data export.
- Only ever exporting ChatGPT, many times a day: a dedicated ChatGPT exporter is reasonable.
- ChatGPT plus docs, GitHub, logged-in dashboards, and paywalled articles, all going into AI tools: a browser-side converter like Web2MD covers all of it with one workflow, keeps your data local, and does not need an API key.
The last case is mine. Most of my AI sessions mix sources: a ChatGPT thread, an internal wiki page behind SSO, and a library's docs. Having one button that turns any of those into clean Markdown with a token count is what made it stick for me.
Try it on your next conversation
If you want to see how your own ChatGPT threads come out, install Web2MD and convert one conversation. The free tier is enough to tell whether the output fits your workflow. If it does not, the copy button and OpenAI's export are still good options.
Related Articles
Page to Markdown Chrome Extension: Convert Any Webpage (2026)
Extract Xiaohongshu Posts to Markdown for AI
Web to Markdown RAG Pipeline: Clean Chunks
Most Read
last 30 days- #1Can Claude Read Reddit? Why It Can't — And How to Fix It (2026)
- #2HTML vs Markdown for LLMs: I Wasted 67% of My Tokens for a Year
- #3Reducing Token Waste in ChatGPT and Claude: 7 Techniques That Cut Costs 72%
- #4Obsidian Web Clipper Official Plugin 2026: Complete Guide + When You Need More
- #5Reddit JSON API vs Scraping: The Honest 2026 Comparison for Developers
Latest Articles
- 2026-11-09Word to Markdown: 4 Ways to Convert .docx Files and Online Docs (Tested)
- 2026-11-08Automatic Markdown Conversion: What Actually Works in 2026
- 2026-11-07AI Markdown: How I Turned Any Web Page Into Clean Context for ChatGPT and Claude
- 2026-11-07How to Convert PPTX to Markdown (What Actually Works in 2026)
- 2026-11-07Convertir texto a markdown: como lo hago desde el navegador (y cuando no funciona)