Guides ·
Export Claude chat to JSON
To export a Claude chat to JSON, open the conversation on claude.ai, open Chat Transfer, set the format to JSON, pick turns (Full / From turn N / Selected) and a Content mode, then click Export — you get one .json file with version, exportedAt, sourceSite: "claude", optional title, and a turns array of { role, text, index }, built on this device without waiting for Claude’s emailed account export.
Version 0.4.0 is live on the Chrome Web Store. Export never runs on its own — only when you trigger it. Soft Auto-Send stays opt-in and default off. Add to Chrome
Claude’s data export vs a one-thread JSON file
Claude has an official data export, and it is the right tool when you want your whole account. According to Anthropic’s help article Export your Claude data, individual users on Free, Pro, Max, and Ultra plans go to Settings > Privacy on the web app or Claude Desktop and click Export data; a download link arrives by email, you must be signed in to use it, and it expires 24 hours after delivery. It cannot be run from Claude for iOS or Android, and on Team or Enterprise plans an owner has to turn on member exports first.
| Need | Claude Settings > Privacy > Export data | Chat Transfer Export (JSON) |
|---|---|---|
| Scope | Whole account (conversation data + user data) | The Claude conversation open in this tab — or a slice of it |
| Delivery | Email link after processing; sign-in required; expires 24 hours after delivery (source) | File saved from the extension right away; nothing is emailed |
| Output | Account data download | Pretty-printed .json with version, exportedAt, sourceSite, optional title, turns[] (also Markdown, Plain, CSV, HTML, PDF, State, ZIP) |
| Where it runs | Web app or Claude Desktop; not iOS / Android. Team / Enterprise members need an owner to allow it | Chrome on claude.ai, any plan you can open a chat on |
| Re-import | Anthropic says exported data can’t be imported into another personal Claude account (source) | No import into Claude either — but you can Continue a Library archive in ChatGPT, Gemini, Grok, or a new Claude chat |
Rule of thumb: use Claude’s export for a full backup or account move-out; use a one-thread JSON export when you want a structured file for a script, an eval set, or another tool that prefers JSON over Markdown — today, not after an email.
What the JSON file looks like
This is the shape Chat Transfer 0.4.0 writes for a Claude thread, taken from the extension’s own formatter (toJson in extension/src/shared/format.js), with placeholder text. Schema version stays 1. There is no YAML frontmatter on JSON — that is Markdown-only.
{
"version": 1,
"exportedAt": "2026-11-01T01:00:00.000Z",
"sourceSite": "claude",
"title": "Draft API rate-limit policy - Claude",
"turns": [
{ "role": "user", "text": "Draft a rate-limit policy for our public API: 3 tiers.", "index": 0 },
{ "role": "assistant", "text": "Here is a three-tier policy with burst and sustained limits…", "index": 1 }
]
}
- Top-level keys:
version(always1today),exportedAt(ISO timestamp),sourceSite(claudeon claude.ai), optionaltitle(tab title when non-empty), andturns. - Each turn:
role(user/assistant/systemwhen Keep system prompt is on),text(the turn body, same ordered text Markdown uses),index(turn index from the extract). - Unwrapped: JSON Copy/Export is unwrapped — no hop handoff wrapper. Hop paste is a separate path.
- Filename:
{chat-title}-{YYYY-MM-DD}.json. Content modes add-user,-code, or-assistantbefore.json. - Not CT Memory: This JSON export is the transcript format above. Library archives use a separate
kind: ct-memoryrecord. ZIP packsarchive.json(CT Memory) plustranscript.md.
How Chat Transfer reads a Claude thread
The Claude adapter is a best-effort DOM reader for claude.ai. Anthropic remounts the page often, so it tries several hooks: user bubbles marked data-testid="user-message", and assistant replies in .font-claude-response or .font-claude-message containers. Before it keeps a reply’s text, it strips UI chrome — Copy, Retry, Share and thumbs buttons — and short “Thought process” / “Extended thinking” header lines, so the text field holds the answer rather than button labels. If none of the hooks match, the adapter does not invent turns; Copy and Export stay off until real turns appear.
That stripping matters more for JSON than for Markdown: a script that reads turns[i].text would otherwise see “Copy” and “Retry” glued onto every reply. Composer paste (for hops) targets Claude’s ProseMirror composer. Paste never clicks Send.
Steps: export one Claude chat to JSON
- Add Chat Transfer from the Chrome Web Store (0.4.0) and pin it.
- Open the conversation on claude.ai and wait until Claude finishes the last reply.
- Long thread? Click Scroll & extract. It scrolls until the turn count stops growing or 12 passes are done, then reads the visible turns. It never clicks Send.
- Under Copy & export, select JSON. Pick which turns (Full, From turn N, or Selected) and a Content mode (Full / User-only / Assistant-only / Code-only).
- Click Export. The filename preview shows what you’ll get. Export also saves the thread to your on-device Library so you can search it later.
Need a readable note instead? Keep format on Markdown — see Export Claude chat to Markdown. Plain is the third radio next to Markdown and JSON.
Pick turns and Content mode before you export
| Control | What lands in the .json | Good for |
|---|---|---|
| Turns: Full | Every extracted turn (subject to Content mode) | Full archive of the open conversation |
| Turns: From turn N | From that turn index onward | Dropping a long setup or pasted brief |
| Turns: Selected | Only the turns you tick | Hand-picking the good drafts |
| Content: Full | User + Assistant (system only if Keep system prompt) | Scripts that need the whole dialogue |
| Content: User-only | Only your prompts (-user.json) | Prompt libraries |
| Content: Assistant-only | Only Claude’s replies (-assistant.json) | Answer dumps, eval references |
| Content: Code-only | Only fenced code blocks (-code.json) | Snippet extraction |
Hop payload is separate: Full / Last N (default 10; presets 4, 8, 16) / last assistant. Soft Auto-Send is opt-in, default off, and never silent-sends.
Then continue it somewhere else (optional)
A JSON export is a structured archive. From the same popup you can still hop the Claude thread to ChatGPT, Gemini, Grok, or a new Claude chat with paste as Full / Last N / last assistant. Paste never presses Send. Soft Auto-Send asks “Send this hop now?” once after a successful paste when you opt in. Guides: Hop Claude to ChatGPT, Hop Claude to Gemini, Hop Claude to Grok, Soft Auto-Send.
Local only
Chat Transfer reads the page you already have open and formats the file inside the extension. There is no Chat Transfer backend, the marketing site never receives your chat text, and host access is limited to ChatGPT, Claude, Gemini, and Grok pages (including x.com/i/grok). Export needs no downloads permission. Details: privacy policy and Local only.
Limits worth knowing
- It exports what is rendered in the tab. Turns Claude hasn’t loaded yet need Scroll & extract first.
- Uploaded files, images, and artifact panels are not rebuilt as binary — the text may note an attachment instead.
- Thinking headers and tagged thinking panels are stripped on purpose, so the JSON aims to hold the visible reply; the strip is best-effort, so skim long replies once.
- It is one thread at a time. For your whole history, use Claude’s Settings > Privacy > Export data.
- Selectors are best-effort. If Anthropic changes the page and extract finds no turns, Copy and Export stay off rather than writing an empty or invented file.
FAQ
Can I export a single Claude conversation to JSON?
Yes. Open that conversation on claude.ai, pick JSON in Chat Transfer, and click Export. You get one .json file for that conversation (or slice) only.
Does Claude have a built-in JSON export for one chat?
Claude’s documented export is account-wide: Settings > Privacy > Export data, delivered as an emailed link that expires 24 hours after delivery (Claude Help Center). Chat Transfer covers the one-thread JSON case.
Can I export from the Claude mobile app?
Not with either path. Anthropic says the account export can’t be run from iOS or Android, and Chat Transfer is a Chrome extension that reads claude.ai in a desktop browser.
Does the JSON include Claude’s thinking?
No. The adapter strips “Thought process” style headers, tagged thinking panels, and UI buttons so text holds the visible reply (best-effort).
Is my chat uploaded anywhere?
No. Formatting happens in the extension on this device. Library copies stay in chrome.storage.local (large bodies may use IndexedDB).
Does Export press Send?
No. Export downloads the file and adds the thread to your local Library; it never sends. Soft Auto-Send (hop only) is opt-in, default off, and never silent-sends.
Sources
- Export your Claude data — Claude Help Center
- JSON.org (JSON data-interchange format)
- Chat Transfer on the Chrome Web Store
- Chat Transfer privacy policy
Related
Product · Guides · Export Claude chat to Markdown · Export ChatGPT chat to JSON · Search Claude history locally · Hop Claude to ChatGPT · Hop Claude to Gemini · Hop Claude to Grok · Soft Auto-Send · How to use · Local only · Privacy · Add to Chrome