Turn a ChatGPT chat into a Markdown file.
Markdown is what a conversation should have been all along: plain text, readable in anything, diffable, and yours. Extry writes the whole exchange to a.md file with the code blocks intact.
- retry-backoff-design.md18.4 KBmarkdown
Why Markdown
A format with nothing to break
A .md file has no version, no subscription, and no viewer to go out of business. It opens in the editor you already use, it survives being copied between machines, and in ten years it will still be a text file.
That is a low bar. Most ways of keeping a conversation do not clear it — a screenshot is not searchable, a copied blob loses the code formatting, and a link stops resolving the day the account goes.
What the file looks like
The exchange still reads as an exchange
The file can open with YAML front matter — title, dates, models, the link back to the conversation and the platform it came from. It is off by default and switched on in the panel, because a vault that indexes properties wants it and a plain folder does not care.
Every turn is a numbered heading carrying who spoke, when, and which model answered — so a specific moment in a long conversation is findable by plain text search. Code stays in fenced blocks with its language, so highlighting works when the file lands somewhere that highlights.
---
title: "Retry backoff design"
created: 2026-03-11T09:14:22Z
exported: 2026-03-12T18:02:41Z
models: ["gpt-5"]
platform: "ChatGPT"
---
## #1 · 👤 User · 14:32
Why is the retry loop hammering?
## #2 · 🤖 ChatGPT · 14:32 · gpt-5
The delay is constant, so every
client retries on the same
schedule. Add jitter:
```python
delay = base * 2 ** attempt
delay = random.uniform(0, delay)
```
Where it goes next
Somewhere that already reads Markdown
The output is a file, not an integration. Put it where your notes already live.
Obsidian
Drop it into a vault folder and it is a note like any other. Switch front matter on and the date, the models and the source link become properties you can query.
Notion
Import the file and the headings and code blocks come across.
A repo
Commit it next to the code the conversation was about, and the reasoning ships with the change.
How it works
Three steps, one file
- Open the conversation in ChatGPT and click the Extry button on the page.
- Pick Markdown in the panel.
- Press Download this chat, then move the
.mdwhere your notes live.
Exports arrive as a .zip, because a conversation can bring files with it. Pick Markdown alone and the archive holds the one .md. No account, no upload step, no daily cap.
Processing
Where each part runs
| What | Where it happens |
|---|---|
| Export to every format | In your browser |
| Attachments and images | In your browser |
| Conversation content | Not sent anywhere |
| Usage statistics | Not collected |
| Typeset PDF (later, opt-in) | On a server, file deleted right after |
Questions
About the Markdown export
Does the code formatting survive?
Yes. Code stays in fenced blocks with its language, so highlighting works wherever you open the file.
Will it work with Obsidian?
Yes. The result is a plain .md file. Put it in a vault folder and Obsidian treats it as a note.
Does it add YAML front matter for Obsidian?
Yes, if you switch it on. The block carries the title, the created and exported dates, the models used, the source link and the platform, with every value quoted so a colon in the title cannot break the parse.
What about images and uploaded files?
Use the ZIP export when a conversation has attachments — it keeps the files next to the transcript.
Do I need an account?
No account is needed to use it. The extension reads the page you already have open.
More
When one file is not enough
A conversation with files in it wants the ZIP export, a long list of them wants the bulk export, and anything going to another person usually wants Word. All six formats are on the main page.