How to save your Claude conversations to Obsidian as Markdown
Your Claude conversations live behind a login; your Obsidian vault is a folder of Markdown files. This is how to get one into the other as clean Markdown — no plugin, no API key.
Why the obvious methods don’t stick
Each way people try to bridge Claude and Obsidian has a catch:
| Method | Why it fails |
|---|---|
| Copy-paste | Works for one conversation, not as a habit — and it mangles code blocks, tables, and math the moment the conversation gets interesting. |
| Browser “export” scripts | Built on screen-scraping the page’s HTML instead of the real data, so they break every time the site’s markup changes and tend to turn LaTeX into raw $$ soup. |
| Plugin + local REST API | Install a plugin, run a local server, generate a self-signed certificate, paste in an API key. That’s a lot of setup for “save my chats,” which is why most people never finish. |
All three treat saving as an export you reach for after the fact — by which point you’ve usually lost the ones you didn’t think to save.
What a good setup needs
Four properties:
- It writes plain Markdown into your real vault folder — not a database, not a cloud, not a separate app.
- It keeps fidelity — code fences stay code fences, tables stay tables, math stays math.
- It doesn’t duplicate — re-running it updates the file in place instead of spawning
conversation (3).md. - It doesn’t ask for keys or plugins — an Obsidian vault is already just a folder of Markdown files. Anything that writes Markdown to that folder is “Obsidian support.”
The one people miss
Doing it with Carry
Carry is a browser extension that writes to that folder directly. Setup is two minutes:
- Pick your vault folder. Point Carry at the same folder Obsidian opens. Captures land in a
carry-sync/subfolder so they don’t scatter through your notes. - Connect Claude. One click. Carry uses the Claude session you’re already logged into — there’s no API key to generate and no developer account to create. It only ever touches
claude.ai. - Sync. Carry pulls your recent conversations from Claude’s own API and writes each one as a Markdown file, with frontmatter you can query in Dataview later:
---
title: "Explain CRDTs like I'm five"
source: claude
created: 2026-06-15T10:23:00Z
url: https://claude.ai/chat/abc123
---
**Human**
Explain CRDTs like I'm five.
**Assistant**
Imagine two kids drawing on the same whiteboard...
Because it reads Claude’s API instead of scraping the page, code, tables, and LaTeX come through intact. Because each file is matched by its conversation id, re-syncing overwrites in place — run it as often as you like and never end up with duplicates. Sync is manual for now, and it pulls roughly your last 20 conversations per provider. Once they’re in your vault, they link, tag, search, and drop into Dataview like any other note.
One caveat worth knowing: a few things you see in Claude — like the rendered body of some Artifacts — aren’t returned by the API, so Carry marks them with an honest
> [!missing]callout rather than pretending it captured something it didn’t.
Carry is local-only — no server, no account, and only the providers you connect. It syncs Claude, ChatGPT, and Grok into your own folder as Markdown — see how it works to get started.
Carry it home.
Sync your ChatGPT, Claude, and Grok conversations into your own folder — as clean Markdown, local-only.