Skip to content

Free browser tools that respect your files — everything runs locally, nothing is uploaded.

AI Chat Export Converter

Convert ChatGPT and Claude data exports to readable Markdown or clean JSONL — free, no account, no upload.

Private by design: your conversations never leave this tab. Parsing and export happen entirely in your browser.

Drop conversations.json or a ChatGPT export-*.zip here

or click to browse — multiple files at once are fine

No conversations loaded yet — drop an export file or load a sample to see them here.

Quick Answer

An AI chat export converter takes the data-export file you download from ChatGPT or Claude — a conversations.json file or an export-*.zip — and turns it into readable Markdown or clean JSONL. Drop the file in and this free tool reconstructs each conversation in order (You / ChatGPT or Claude turns, code blocks fenced, system and tool entries separated), then exports one .md per chat, a combined document with a table of contents, or JSONL for datasets. Parsing runs entirely in your browser, so your conversations never leave your tab and no account is needed.

How It Works

1

Download your data export from ChatGPT or Claude (Settings → Data controls) — a conversations.json or the export zip containing it

2

Drop the .json or export-*.zip into the converter — the format is detected from the file’s structure, not its name, and multiple files are fine

3

Pick conversations with the checkboxes, using title search, date sort, and the from/to date filters to narrow the list

4

Download the format you need: a ZIP of one .md per conversation, a combined Markdown file with a table of contents, or cleaned JSONL

5

Check the Markdown preview before exporting — code blocks stay fenced and verbatim, and messages containing ``` get a longer fence automatically

Key Facts

  • Reads ChatGPT conversations.json directly or inside an export-*.zip archive
  • Reads Claude exports (object with a conversations array) — format is detected by shape, not filename
  • Rebuilds each conversation in true order by walking the ChatGPT mapping tree from the root node
  • Renders You / ChatGPT / Claude turns, italic System and Tool labels, and fenced code blocks
  • Messages containing ``` are re-fenced with a longer backtick run so the Markdown stays well formed
  • Export one .md per conversation (ZIP with deduped filenames), a combined .md with a table of contents, or cleaned JSONL
  • Search by title, sort by date, filter by date range, and pick exactly which conversations to export
  • Free with no account and no uploads — every byte of your export stays in this browser tab

Frequently Asked Questions

How does the converter reconstruct a ChatGPT conversation?

ChatGPT exports store each conversation as a tree of nodes (the “mapping”), not a simple list. The converter finds the root — the node no other node links to as a child — then walks the children in order, emitting every message that has actual text content. That reproduces the conversation exactly as it unfolded: your turn, the assistant reply, and so on. Tool outputs like execution results are counted and skipped rather than dumped into your Markdown.

Is my chat history private when I use this?

Yes. The tool runs entirely in your browser: the export file is read with the File API, parsed with JavaScript in this tab, and turned into Markdown or JSONL locally. There are no uploads, no server-side processing, and no analytics on file contents. You can disconnect from the internet after the page loads and it still works.

Is it free? Do I need a subscription?

It is completely free with no account. Subscriptions like ChatGPT Plus (20/month) pay for the chat services themselves — the data export you download from either service is yours, and converting it here costs nothing, with no message limits or watermarks.

Which export formats are supported?

Two shapes: a ChatGPT conversations.json (a top-level array of conversations, each with a mapping tree) — dropped in as a .json file or left inside the export-*.zip, the converter finds it in the archive — and a Claude export (an object with a conversations array of chat_messages). Detection is by structure, so filenames do not matter. Anything else produces a clear error describing what was found.

What happens to code blocks in my conversations?

Code messages are wrapped in fenced code blocks (```), and message text is kept verbatim — nothing is escaped or reformatted. If a message itself contains a three-backtick fence, the converter uses a longer fence (four or more backticks) around it, so nested code blocks render correctly instead of breaking the document.

What is the JSONL export for?

JSONL (one JSON object per line) is the format most dataset and LLM tooling expects: each line holds {title, date, messages:[{role, text}]} for one conversation, with tool noise and empty messages already removed. Use it for personal archives, searching with grep or jq, or preparing fine-tuning and evaluation datasets from your own chats.