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

  1. On claude.ai or Claude Desktop, open Settings → Privacy.
  2. Click Export data.
  3. 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

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.

Want every chat exported at once? ThreadVault (disclosure: we make it) is a Chrome extension that bulk-exports your AI chats to Obsidian-ready Markdown plus JSON in one ZIP, processed locally in your browser. It is not on the Chrome Web Store yet: the Perplexity version is built, and ChatGPT, Claude and Gemini support is coming in version 1.1. $19 one-time for all four AI tools, with a $9 founding price for the first 50 buyers.
See ThreadVault or join the free waitlist

Related guides

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.