How to Export ChatGPT Conversations to JSON (2026 Guide)
Export any ChatGPT conversation as structured JSON in 2 seconds — the full message tree with timestamps. Plus how conversations.json works.
TL;DR: Right-click the chat in your ChatGPT sidebar and pick Export (.json) — a free extension saves that single conversation as pretty-printed structured JSON in about 2 seconds. For your entire history, ChatGPT's built-in export (Settings → Data controls) emails a ZIP with conversations.json. Both use the same message-tree structure, explained below.
JSON is the format you pick when the reader is a program: feeding chats into a pipeline or RAG index, analyzing your history, or archiving conversations with every timestamp and metadata field intact. Here's how to export a ChatGPT conversation to JSON — one chat instantly, or all of them at once — and what the structure inside actually means.
Method 1: Export ChatGPT to JSON with a Browser Extension (Fastest)
ChatGPT Pro Tools is a free extension that adds export options directly to ChatGPT.
Install ChatGPT Pro Tools from the Chrome Web Store
Right-click any conversation in your ChatGPT sidebar
Click "Export (.json)"
The JSON file downloads instantly, named after the chat
The export is a lossless, pretty-printed copy of the conversation exactly as ChatGPT's own interface loads it — nothing trimmed, nothing reformatted. That makes it the one format that keeps everything: timestamps, model info, message metadata, and every branch of the conversation.
What's Inside the JSON File
The file has three parts that matter: the conversation's metadata (title, timestamps), a mapping object holding every message as a node, and current_node — the id of the last message on screen. Trimmed to the essentials, it looks like this:
{
"title": "My conversation",
"create_time": 1754900000.0,
"update_time": 1754910000.0,
"mapping": {
"<node-id>": {
"id": "<node-id>",
"message": {
"author": { "role": "user" },
"content": { "parts": ["The message text"] },
"create_time": 1754900100.0
},
"parent": "<parent-node-id>",
"children": ["<child-node-id>"]
}
},
"current_node": "<last-node-id>"
}
Roles are user, assistant, system, and tool — the last two are internal messages ChatGPT never renders, which is why a raw dump has more nodes than your chat has bubbles. On the free tier the file also carries one trailing _generatedBy attribution key; the conversation data above it is untouched.
Why It's a Tree, Not a List
ChatGPT conversations branch: every prompt edit and every "regenerate" starts a new path, and the mapping keeps all of them as parent/child nodes. The thread you see on screen is one route through that tree. To reconstruct it, start at current_node and follow parent links to the root — that chain, reversed, is the visible conversation. Everything off that path is the history of edits and regenerations most exports silently throw away.
Method 2: ChatGPT's Built-in Export (conversations.json)
For your entire history in one file, use ChatGPT's native export:
Go to Settings → Data controls → Export data
Confirm, then wait for an email with a download link
The ZIP contains conversations.json — one array with every conversation, each in the same mapping-tree shape as above
It's the right tool for a full backup or a bulk analysis job. It's the wrong tool for "I need this one chat as a file right now" — the export is all-or-nothing and arrives by email, not instantly.
Comparison
| Method | Scope | Speed | Output |
|---|---|---|---|
| Browser extension (.json) | Single chat | 2 seconds | One pretty-printed file |
| Built-in export | All chats | Minutes (email) | ZIP with conversations.json |
JSON vs Other Export Formats
JSON is for machines. If a person is going to read the file, export it in a readable format from the same right-click menu instead:
- Markdown — notes apps, repos, anything text-based with formatting
- Word (.docx) — the conversation still needs editing
- PDF — sharing and archiving as-is
- Text (.txt) — maximum compatibility, zero structure
For the full overview of every method, see the complete export guide. And if you're archiving many chats, the Chat Workspace can multi-select conversations and batch-export them — .json included.
Frequently Asked Questions
How do I export a single ChatGPT conversation as JSON?
Install ChatGPT Pro Tools (free browser extension), right-click any conversation in your ChatGPT sidebar, and select "Export (.json)". You get the conversation as pretty-printed JSON — the same structured payload ChatGPT's own interface loads, with every message, timestamp, and metadata field intact.
What is conversations.json?
conversations.json is the file inside ChatGPT's built-in data export (Settings → Data controls → Export data). It arrives by email as a ZIP and contains your entire chat history in one JSON array — every conversation with its full message tree. Good for a complete backup; overkill when you need just one chat.
Why is the JSON a tree instead of a flat list?
Because ChatGPT conversations branch. Every time you edit a prompt or regenerate an answer, a new branch starts; the mapping object stores all of them as parent/child nodes. The thread you see on screen is one path through that tree — start at current_node and follow parent links up to reconstruct it.
Can I convert the JSON export to Markdown or text?
If you need a readable file for one chat, skip the conversion — the same right-click menu exports directly to Markdown, TXT, PDF, or Word. Converting JSON makes sense for the full-history conversations.json archive: write a small script that walks each conversation's mapping tree from current_node and emits the visible messages.