How to export Claude chats to Markdown and Obsidian (2026)
Claude's official export gives you JSON, not notes. This guide turns it into one Markdown file per conversation that you can drop into Obsidian.
1. Request the Claude export
- On claude.ai or Claude Desktop, open Settings → Privacy.
- Click Export data.
- Claude emails a download link to your account address. Open it while signed in: it expires 24 hours after delivery.
Exports can't be started from the iOS or Android app. On Team or Enterprise plans, an owner has to allow member exports first.
2. Convert conversations.json to Markdown (free script)
Unzip the export, save this as convert.py next to conversations.json, and run python3 convert.py. It creates a claude-markdown folder with one note per chat, with title and date frontmatter. Everything stays on your computer.
import json, re, pathlib
data = json.load(open("conversations.json", encoding="utf-8"))
out = pathlib.Path("claude-markdown"); out.mkdir(exist_ok=True)
def msg_text(m):
if m.get("text"):
return m["text"]
# newer exports may split a message into content blocks
return "\n".join(b.get("text", "") for b in m.get("content", []) if isinstance(b, dict))
for c in data:
title = c.get("name") or "Untitled"
date = (c.get("created_at") or "")[:10]
safe = re.sub(r"[^\w\- ]", "", title)[:60].strip() or "chat"
head = f'---\ntitle: "{title.replace(chr(34), chr(39))}"\ndate: {date}\nsource: claude\n---\n\n'
turns = []
for m in c.get("chat_messages", []):
who = "You" if m.get("sender") == "human" else "Claude"
text = msg_text(m).strip()
if text:
turns.append(f"**{who}:**\n\n{text}")
(out / f"{date} {safe} {str(c.get('uuid', ''))[:6]}.md").write_text(head + "\n\n".join(turns), encoding="utf-8")
print("done:", len(data), "chats")It keeps your messages and Claude's replies. Attachments and artifacts may not come through as separate files. Anthropic can change field names, so if notes come out empty, open the JSON and check the names.
3. Organise in Obsidian
- Move the folder into your vault, for example
AI/Claude. - Files start with the date, so they sort chronologically.
- Use the frontmatter with Dataview, for example a table of every note where
source = "claude", sorted bydate. - Add your own tags as you review: the export is a starting point, not a finished knowledge base.
Just one chat?
Use the copy button on each response and paste into a note. Fine for a few chats, but tedious for a whole history. See also every way to export Claude chats.
See ThreadVault or join the free waitlist
Related guides
- Back up all your AI chats (ChatGPT, Claude, Gemini, Perplexity)
- Open ChatGPT conversations.json and convert it to Markdown
- Save a ChatGPT chat as PDF
- Export ChatGPT history to Markdown / Obsidian
- Export Claude chats
- Export Gemini chats
- Export all your Perplexity threads
- ThreadVault vs AI Exporter
- ThreadVault vs AISaver
- ThreadVault vs ChatExports
Not affiliated with Anthropic. Export steps are from the Claude Help Center. Last checked October 27, 2026; features change, so verify in the app. Questions or corrections: hello@loomwise.app.