top of page

Can't read your ChatGPT or Claude data export? How to open conversations.json and chat.html

2 hours ago
9 min read
ChatGPT and Claude logos with the title about opening and reading conversations.json and chat.html from a data export. Data Studios original cover

Last verified: November 5, 2026


You asked ChatGPT or Claude for a copy of your data, the email arrived, you downloaded the ZIP file, and what came out looks nothing like your chats. ChatGPT gives you a web page that may take minutes to load and a set of files full of brackets and codes, and Claude gives you only the codes. The data is all there, but the main file is written in JSON, a structured text format made for programs to read, so opening it in Notepad or a text editor shows a wall of characters instead of a conversation. For ChatGPT, open chat.html in a browser first; for anything larger or for Claude, convert conversations.json into readable text on your own computer.


The same situation applies to every plan that can export. OpenAI's help center says the ChatGPT export is a .zip file "including your chat history in chat.html as well as your other data on file with us", with a download link that expires after 24 hours. Anthropic says Claude exports are available on the Free, Pro, Max and Ultra plans, and on Team and Enterprise once an Owner or Primary Owner turns them on, that they include "conversation data and the user data for your account", and that they cannot be run from the iOS or Android apps. Neither company documents the inside of the JSON files, which is why the steps below separate what the help centers state from what users and developers have observed in real exports.


··········


WHAT IS INSIDE A CHATGPT OR CLAUDE DATA EXPORT.


The two archives are built differently. ChatGPT adds a ready-made page for reading, while Claude delivers structured data only. The file list below combines the official help pages with several independent descriptions of real exports; file names that only users report are marked as such, because both companies can change them without notice.


........


File

Export

What it holds

Source

chat.html

ChatGPT

All your chats as one web page

OpenAI help center

conversations.json

ChatGPT

Every chat as structured data, including edited and regenerated versions

Reported by users and developers

conversations-000.json, -001.json...

ChatGPT

The same data split into numbered parts on large exports

Reported by users in October 2026

user.json, message_feedback.json

ChatGPT

Account details and your thumbs-up and thumbs-down ratings

Reported by users

Image and attachment files

ChatGPT

Files and images referenced by chats, depending on the export

Reported by users

conversations.json

Claude

Every chat with its messages and timestamps

Reported by users and developers

Account and project files

Claude

Account data, and project data when present

Anthropic (user data); names vary in user reports


........


Two official details change what you can expect to find. Anthropic states that on Team and Enterprise the export "includes your own chats" and "doesn't include the contents of files you uploaded", so a PDF you attached to a chat will not come back as a PDF. Anthropic also states that exported data cannot be imported into another personal Claude account, so the archive is a copy for you to keep and read, not a backup you can restore into Claude.


··········


WHY A CHATGPT OR CLAUDE EXPORT LOOKS UNREADABLE: CAUSES, CHECKS AND FIXES.


Most complaints about exports come from a handful of situations. The table pairs each one with a quick way to recognize it and the fix that works.


........


Cause

How to check

Fix

The ZIP was opened without extracting it

Files open read-only or links inside chat.html fail

Extract the whole archive to a folder first

conversations.json opened in a text editor

One very long line of brackets and quotes

Open it in a browser for a tree view, or convert it to text

chat.html is too large for the browser

The tab freezes or stays blank for minutes

Use another browser with more free memory, or read conversations.json instead

Chats look repeated or mixed up

Old answers appear next to new ones

Follow only the branch you last viewed (see the script below)

Large ChatGPT export split into parts

No single conversations.json, only numbered files

Process every conversations-NNN.json file, including the later parts

Claude export has no page to read

The ZIP holds only .json files

Convert conversations.json to text or Markdown

An older converter shows empty chats

Titles appear but messages are missing

Update the tool or use a script that reads the current structure


........


The first three rows cover most first-time problems. On Windows, right-click the ZIP and choose Extract All; on macOS, double-clicking the ZIP in Finder extracts it to a folder next to the archive. Phones and tablets can store the file, but a computer is the better place to open a large archive, and Claude itself does not allow exports from its mobile apps.


··········


HOW TO READ A CHATGPT EXPORT STEP BY STEP.


Start with the simplest route and move to the next one only if it fails.


1. Download the archive from the link in OpenAI's email within 24 hours, then extract it to a folder you will keep, such as Documents/ChatGPT export.


2. Open chat.html by double-clicking it. It opens in your default browser and shows your conversations as a single page. Use the browser's Find command (Ctrl+F on Windows and Linux, Cmd+F on macOS) to search for a word or phrase across all chats.


3. If the page freezes, close other tabs and try again, or open the file in a different browser. One user on GitHub reported a chat.html of about 255 MB in an October 2026 export, and files that size load slowly in any browser because the whole history is built as one page.


4. To browse the raw data, drag conversations.json (or the first numbered part) into a Firefox window. Firefox shows JSON files as a collapsible tree with a filter box, which is enough to find a chat by its title.


5. To get one readable file per chat, convert the JSON on your computer with the script in the next section. Everything stays local, which matters because the archive holds your full history, custom instructions and account details.


Browser extensions and websites that promise to convert exports exist in large numbers. If you use one, prefer a tool that states it runs entirely in your browser or on your computer, and avoid uploading the archive to a service whose privacy terms you have not read.


··········


HOW CONVERSATIONS.JSON STORES A CHATGPT CHAT.


OpenAI has not published a description of conversations.json, and users on the OpenAI Developer Community have asked for one since 2023 without an official answer. What follows is the structure that several independent developers describe and that converter tools rely on.


The file is a list of conversations. Each conversation has a title, a creation time and an update time written as Unix timestamps (seconds since January 1, 1970), and a field called mapping. The mapping is a tree of message nodes instead of a simple list: each node has an id, a message and a parent, and many nodes also list their children. When you edit a prompt or ask ChatGPT to regenerate an answer, the old version stays in the tree as a separate branch. Reading the nodes from top to bottom therefore mixes abandoned drafts with the conversation you actually kept, which is why chats can look duplicated.


A field called current_node points to the last message of the branch you last viewed. Starting from that node and following each parent back to the beginning, then reversing the order, rebuilds the conversation as it appeared on screen. Each message carries an author role (user, assistant, system or tool) and a content object whose parts usually hold the text. Some nodes are empty placeholders, and some parts are references to images or files instead of text.


The script below is illustrative, written for the structure described above. It reads every conversations.json or conversations-NNN.json file in the current folder and writes one Markdown file per chat into a chats_md folder, keeping only your messages and ChatGPT's replies from the branch you last viewed. Save it as chatgpt_to_md.py in the extracted export folder and run python3 chatgpt_to_md.py (python on Windows).


import glob, json, os

os.makedirs("chats_md", exist_ok=True)
for path in sorted(glob.glob("conversations*.json")):
    with open(path, encoding="utf-8") as f:
        conversations = json.load(f)
    for n, conv in enumerate(conversations):
        mapping = conv.get("mapping") or {}
        node_id = conv.get("current_node")
        branch = []
        while node_id in mapping:
            branch.append(mapping[node_id])
            node_id = mapping[node_id].get("parent")
        lines = ["# " + (conv.get("title") or "Untitled"), ""]
        for node in reversed(branch):
            msg = node.get("message") or {}
            role = (msg.get("author") or {}).get("role")
            parts = (msg.get("content") or {}).get("parts") or []
            text = "\n".join(p for p in parts if isinstance(p, str)).strip()
            if role in ("user", "assistant") and text:
                lines += ["**" + role + "**", "", text, ""]
        name = os.path.splitext(os.path.basename(path))[0] + "-" + str(n) + ".md"
        with open(os.path.join("chats_md", name), "w", encoding="utf-8") as out:
            out.write("\n".join(lines))

Markdown files open in any text editor and in note apps such as Obsidian. Images, Canvas documents and tool outputs are skipped by this script; users who build converters report that those parts need extra handling and change more often than plain text.


··········


HOW TO READ A CLAUDE DATA EXPORT.


Claude's archive has no chat.html, so the readable route always goes through conversations.json. Request the export on the web or desktop app under Settings > Privacy > Export data, wait for the email, and download the file while signed in, since Anthropic says the link requires you to be logged in to your account and expires 24 hours after delivery. If the link expires, Anthropic says you can request a new one by repeating the export.


Developers who have written Claude converters describe a simpler structure than ChatGPT's. The file is a list of conversations; each one has an id, a name, creation and update timestamps and a list called chat_messages, and each message has a sender (human or assistant) and a text field. There are no branches to untangle, so reading the messages in order gives the conversation.


The illustrative script below writes every chat into one plain-text file called claude_chats.txt, with each conversation's name and date as a header. Save it as claude_to_txt.py in the extracted folder and run it the same way.


import json

with open("conversations.json", encoding="utf-8") as f:
    chats = json.load(f)
with open("claude_chats.txt", "w", encoding="utf-8") as out:
    for chat in chats:
        out.write("=== " + (chat.get("name") or "Untitled") + " " + str(chat.get("created_at", "")) + "\n")
        for m in chat.get("chat_messages") or []:
            out.write("[" + str(m.get("sender")) + "] " + str(m.get("text") or "") + "\n\n")

For a quick look without any code, open conversations.json in Firefox and use the filter box to search for a chat name or a word. Primary Owners of Team and Enterprise organizations should look for the organization export instead, because Anthropic says they do not see the Export data button in their personal settings. Our guide to Claude plans and usage limits lists which plans include Team and Enterprise administration.


··········


WHAT OPENAI AND ANTHROPIC DOCUMENT ABOUT EXPORTS AND WHAT USERS REPORT.


The line between official facts and observed behavior is sharp for this topic, and a converter that works today can break after a silent format change.


........


Point

ChatGPT

Claude

Who can export

Documented: Free and Plus users

Documented: Free, Pro, Max, Ultra; Team and Enterprise if enabled

Link validity

Documented: 24 hours

Documented: 24 hours after delivery

Readable page included

Documented: chat.html

Reported: none

JSON structure

Reported only

Reported only

Uploaded files included

Reported: some files and images

Documented: not on Team and Enterprise

Import into another account

Not stated in the export article

Documented: not possible for personal accounts


........


Format changes have already happened. A user on the OpenAI Developer Community reported in February 2024 that the structure of conversations.json had changed and that older example code no longer worked. In October 2026, a GitHub user reported that an export downloaded on October 18 arrived as three numbered conversations files plus attachment blobs, with no single conversations.json, and that an existing converter produced titles with no message text. That report had no maintainer reply when we checked it on November 5, 2026, so the cause is unconfirmed; the practical lesson is to test any converter on a few chats and compare the result with chat.html before trusting it.


··········


KEEPING A CHATGPT OR CLAUDE ARCHIVE READABLE AFTER FORMAT CHANGES.


Keep the original ZIP file untouched in a safe place, next to any converted copies. The raw JSON is the complete record, and a better converter written next year can read it again, while a Markdown copy only holds what today's script understood.


Export again after major product changes if you rely on your history, and keep the date in the folder name so you know which version each archive reflects. If the email itself never arrives, our guide to a ChatGPT data export email that never arrived covers spam filters, expired links and the Privacy Portal request. Exports are also separate from memory: ChatGPT and Claude memories are settings inside the product, and our explainer on how ChatGPT memory works describes what the assistant keeps between chats.


Treat the archive as sensitive. It contains every prompt you wrote, any personal details you shared, your custom instructions and your account information, so store it the way you would store a tax return, and delete copies you uploaded to online tools once you are done.


··········


READING CHATGPT AND CLAUDE EXPORTS: WHAT HOLDS TODAY.


For ChatGPT, chat.html remains the quickest way to read and search a small or medium history, and conversations.json is the file to convert when the page is too heavy or when you want one file per chat. The tree structure is the reason chats look duplicated, and following current_node back through each parent is the reliable way to rebuild what you saw on screen. Large exports may now arrive split into numbered files, so any method has to read all of them.


For Claude, the archive is JSON only, its message list is flat, and a short local script or a browser's JSON viewer is enough to read it. Anthropic documents that uploaded file contents are not included on Team and Enterprise and that exports cannot be imported into another personal account. Neither OpenAI nor Anthropic documents the inside of their JSON files, so keep the original ZIP, test converters against a few known chats, and expect the structure to change again.


··········


FOLLOW US FOR MORE.


·····


DATA STUDIOS


·····


datastudios.org


bottom of page