ChatGPT Export Viewer

Drop in the conversations.json file (or the whole zip ChatGPT emailed you) and read your chat history the way it looked on screen: titles, dates, code runs, the lot. The file never leaves your computer.

ChatGPT Export Viewer

Open the conversations.json from your ChatGPT data export right in the browser. Browse every chat, search across all of them, and save a thread as Markdown. Nothing is uploaded.

Drop your file here or click to browse

conversations.json or .zip

Your data never leaves your browser. All processing happens locally.

What is actually inside a ChatGPT export

If you want to see the raw structure of a single conversation, paste it into the JSON formatter and expand the mapping object.

When you ask ChatGPT for your data, OpenAI emails you a link to a zip file. The link dies after 24 hours, so most people download it, unzip it, and then stare at a folder that makes no sense. There is a chat.html file that tries to open every conversation you have ever had on one page, which is fine for fifty chats and hopeless for five thousand. There is user.json with your account details, message_feedback.json with every thumbs up and thumbs down you ever clicked, and a pile of image files with names like file-abc123.png. The real data is in conversations.json, and that file is the reason this viewer exists.

Open it in a text editor and you will see why nobody reads it raw. Each conversation is not a list of messages. It is a tree. Every time you edited a question or hit regenerate, ChatGPT kept the old branch and started a new one. The file stores all of those branches in a mapping object keyed by message ids, with parent and children pointers, and a current_node that says which leaf you were looking at last. A one-hour chat where you edited a prompt three times can easily hold twice as many messages as you remember seeing. Timestamps are Unix seconds with decimals. Code interpreter runs are stored as separate nodes with a content type of code, their output as execution_output, and images as pointers to files rather than the pictures themselves.

What this viewer does with it

If you use Claude as well, the Claude JSONL conversation viewer does the same job for its JSONL exports, which are a flat list rather than a tree.

It reads the tree and walks the same branch ChatGPT showed you, from current_node back up to the root. That gives you the conversation as you last saw it. Messages that only exist on abandoned branches are counted and mentioned in a small note above the thread, so you know they exist without them cluttering the view. Assistant replies render as Markdown with real code blocks and syntax colouring for the common languages. Your own messages get the same treatment, because plenty of people paste code into their questions.

  • Code interpreter runs appear as collapsible Code blocks labelled with the language, and their results as Tool output blocks underneath.
  • Web browsing results, reasoning summaries from the o-series models, your custom instructions, and memory updates each get their own collapsed block so they are there when you want them and out of the way when you do not.
  • Every assistant message shows which model wrote it, taken from the export itself, which is handy when you are trying to remember whether a piece of advice came from GPT-4o or an older model.
  • Images are shown as an [image] marker. The export keeps them as separate files, and the JSON only holds a pointer, so there is nothing to draw.
  • Search looks through titles and the full text of every message, then narrows the list to chats that match and highlights the hits when you open one.
  • Filter a thread to only your messages or only ChatGPT's, copy any single message, or download the whole thread as Markdown or plain text with the role labels kept.

Big files stay on your computer

Heavy users end up with exports of several hundred megabytes, and some cross a gigabyte once images are included. A normal web page cannot hand a file that size to a JSON parser in one go. This one does not try. It reads the file in 4 MB slices, decodes UTF-8 across the slice boundaries so a Japanese character or an emoji split in half does not break anything, and hands each conversation to the parser the moment its closing brace arrives. Only the trimmed-down conversations stay in memory, not the raw text, which is why a 2 GB export is workable in Chrome or Firefox on a laptop with 8 GB of RAM. Progress is shown as it reads, so you can watch the conversation count climb.

None of this touches a server. There is no upload, no account, and the page keeps working if you go offline after it has loaded. If you drop in the zip instead of the JSON, the viewer opens it in the browser, finds conversations.json inside, and ignores the rest. Zips over 1 GB need unzipping first, because opening them in memory is where browsers give up; the plain JSON file has no such limit.

How to get the export from ChatGPT

  1. Open ChatGPT, click your name or avatar, then Settings.
  2. Go to Data controls and click Export data, then confirm.
  3. Wait for the email from OpenAI. Small accounts get it in minutes; large ones can take a few hours.
  4. Download the zip within 24 hours, because the link expires.
  5. Drop the zip here, or unzip it and drop in conversations.json.

What it will not do, so you are not surprised

Conversations you deleted before exporting are not in the file, and no viewer can bring them back. Shared links are not included either. Chats from custom GPTs and Projects are present but the export does not name the GPT, so they look like ordinary chats. Voice conversations show up as transcripts. And the viewer opens one thread at a time for export; if you want all of them as Markdown in one go, that is a batch job, not a viewer, and it would need a very different interface.

Who actually needs this

People cancelling a subscription who want their year of conversations in a readable form before the account goes quiet. Developers hunting for a snippet they know ChatGPT wrote for them in March but cannot find by scrolling. Writers pulling drafts out of a chat into a proper document. Anyone dealing with an HR or legal request who needs to show exactly what was asked and answered, with dates. And the merely curious, who want to know how many conversations they have really had. The counter at the top will tell you, and the number is usually higher than the guess.

Before you paste an exported answer into a document, the ChatGPT watermark checker will show whether it carries the invisible characters the chat interface leaves behind.

Frequently Asked Questions About the ChatGPT Export Viewer