AI Chat Exporter · Guide
How to export ChatGPT conversations to Obsidian
The hard part isn't getting text out of a chat — it's getting text out that
Obsidian renders properly. Fenced code blocks with their language, tables that
are still tables, and nested lists that don't come apart. Here's how to get a
clean .md file into a vault in about two minutes.
Why copy-paste produces unusable notes
Pasting a conversation into Obsidian pastes the rendered page, not the Markdown behind it. The site turned Markdown into HTML to display it, and that transformation doesn't reverse cleanly:
- Code fences disappear. The language tag lives in a CSS class on the page, not in the text, so a highlighted Python block arrives as an indented lump with no syntax highlighting in your vault.
- Tables become prose. The pipe characters that made it a table are long gone by the time it's rendered.
- Nested lists flatten or over-indent, depending on how many spaces the paste happens to carry.
- Long threads paste incomplete. ChatGPT, Claude and the rest only keep messages near your viewport in the page and drop the rest as you scroll, so select-all captures a slice. The result looks plausible, which is why this one usually goes unnoticed until you need the note.
The approach that works
AI Chat Exporter reads the conversation from the page — scrolling the whole thread first so nothing is missed — and serialises it back to Markdown directly, rather than trying to reverse the HTML. Markdown export is unlimited on the free plan and needs no account.
1. Install and open your conversation
Install from the Chrome Web Store and open the thread you want to keep. Works on ChatGPT, Claude, Gemini, Grok and DeepSeek.
2. Select only what's worth keeping
Click Select to open the message picker. Every message gets a checkbox, with All, You, Assistant and None filters for bulk selection.
This step is the whole point for a vault. Dumping an entire thirty-message conversation into your notes gives you a transcript you will never reread. Keeping the three answers that were actually correct gives you a note. The You filter is also a fast way to build a prompt library — export only your own side of a session and you have a record of what worked.
3. Export as Markdown
Pick Markdown from the format list and click Export. The
.md file is generated in your browser and saved to your downloads
folder.
4. Get it into the vault
Drag the file into a folder in your vault and it's a note. If you do this
regularly, point your browser's download directory at a folder inside the vault —
in Chrome, Settings → Downloads → Location — and exports land in the vault
without a second step. An Inbox/ folder you triage later works well
for this.
What the exported Markdown looks like
The structure is deliberately plain, so it plays well with whatever plugins and themes you already run:
# Refactoring the export pipeline
*ChatGPT · 6 messages · exported 21/09/2026, 14:32*
---
## You
How should I structure the serializers?
---
## Assistant
Three things to consider:
1. Keep numbering in one place
1. Each formatter counting independently drifts
2. Normalize before serializing
```js
const blocks = normalize(raw);
```
Some specifics that matter once these files are living in a vault:
-
Headings inside messages are demoted by two levels. The
conversation title is the note's
H1and each author line is anH2, so anH1the assistant wrote becomes anH3. Without that, a heading inside a reply would outrank the note itself and your outline pane would be nonsense. - Code fences adapt to their content. If a snippet itself contains a run of backticks, the fence grows longer than that run so the block can't close early — which is the usual cause of the rest of a note rendering as prose.
- Table cells escape pipes and strip newlines, so one awkward cell can't add phantom columns or truncate the table.
-
Nested lists are indented against the parent's marker width —
two spaces under
-, three under1.— which is what Obsidian, pandoc and most static site generators expect. Fixed-width indenting is what makes sublists render as code blocks or collapse into the parent. - Timestamps and the model name are optional and can be turned off before export if you'd rather keep the note clean.
No YAML frontmatter yet. Exports start at the
H1, so if you rely on properties for Dataview queries you'll be
adding them yourself or via a template for now. It's the most requested thing
on the list — if it's what's stopping you,
say so and it moves up.
Does this work with Logseq, Notion and the rest?
Yes. The output is plain CommonMark with no Obsidian-specific syntax — no wikilinks, no callout blocks, no custom properties — so it imports cleanly into Logseq, Notion, Bear, Joplin, Roam or a static site generator. The list-indenting detail above is the main thing that usually breaks in these transfers, and it's handled.
Is anything uploaded?
No. The Markdown file is built locally in your browser. There's no export server, so the conversation is never transmitted anywhere — which matters more than usual here, because the notes worth keeping tend to be the work ones. Markdown export also involves no account and no network request at all. The privacy policy has the full detail.
Get your next useful conversation into your vault properly.
Add to Chrome — freeMarkdown export is unlimited and needs no account.
Common questions
Is Markdown export really unlimited on the free plan?
Yes. Markdown, plain text, JSON, CSV and image exports have no daily cap and no sign-in. PDF is the only limited format — 3 a day free — because it's the one with real support cost behind it.
Will it get the whole conversation, including the early messages?
Yes. The extension scrolls the thread to load every message before reading it, rather than taking whatever the page is currently holding. That's the specific failure it was built to avoid.
Can I export several conversations at once?
Not currently — it's one conversation at a time, from the tab it's open in. Bulk export of a whole history is a different and much heavier job, and doing it badly is worse than not doing it.
Can it write directly into my vault folder?
Not yet; files go through the browser's download folder, which you can point at your vault as described above. Direct vault writes would need filesystem permissions that materially change what the extension is asking for, so it's a deliberate not-yet rather than an oversight.