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.

How to Export ChatGPT Conversations to JSON (2026 Guide) — article cover

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.

1

Install ChatGPT Pro Tools from the Chrome Web Store

2

Right-click any conversation in your ChatGPT sidebar

3

Click "Export (.json)"

4

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:

1

Go to SettingsData controlsExport data

2

Confirm, then wait for an email with a download link

3

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

MethodScopeSpeedOutput
Browser extension (.json)Single chat2 secondsOne pretty-printed file
Built-in exportAll chatsMinutes (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.