ChatGPT · Free tool

ChatGPT Export Viewer

Open the conversations.json from your ChatGPT data export, search every chat you've ever had, and save any of them as Markdown. Everything happens in your browser — the file never leaves your device.

Drop conversations.json here

From your unzipped ChatGPT export. The file is read in this browser tab and never sent anywhere.

Don't have the export yet? The steps are below.

How to export your ChatGPT data

OpenAI doesn't let you download a single conversation — you request the whole archive and it arrives as a zip. Here's the full path from ChatGPT to a readable chat.

  1. 1

    Open your ChatGPT settings

    Go to chatgpt.com, click your profile picture in the bottom-left corner, and choose Settings.

  2. 2

    Request the export

    Open Data controls, click Export data, then confirm with Export. On mobile the same option sits under Settings → Data Controls.

  3. 3

    Wait for the email

    OpenAI emails a download link to your account address. It usually arrives within a few minutes, but can take up to 24 hours on a large account. The link itself expires 24 hours after it's sent.

  4. 4

    Download and unzip

    Download the zip and unzip it. Inside you'll find conversations.json, chat.html, user.json, message_feedback.json, and any images you shared.

  5. 5

    Drop conversations.json into the viewer

    Select or drag conversations.json onto the box above. It's parsed locally in your browser — no upload, no account, no server.

Why the built-in chat.html isn't enough

Every ChatGPT export ships with a chat.html file, and on a small account it's fine. On a real one it falls over: it's a single document holding every conversation you've ever had, so a few thousand chats produce a file that takes tens of seconds to open and pins your browser while it renders.

It also gives you no way out. There's no per-conversation export, no way to pull one useful answer into your notes, and browser find-in-page only works on the parts that have already rendered. This viewer reads the same data from conversations.json, keeps a searchable index in memory, and renders one conversation at a time.

What's actually inside your export

conversations.json is the real archive — every conversation, every message, timestamps, and which model answered. It stores chats as a tree rather than a list, because each time you edit a prompt or hit regenerate, ChatGPT branches the thread. This viewer follows the branch you last had on screen, which is what you actually read.

chat.html is a rendered copy of the same data. user.json holds your account details. message_feedback.json records your thumbs up and down. Images you uploaded or generated sit in their own folder and are referenced by ID, which is why they appear here as [image] placeholders rather than pictures.

Your data never leaves this page

The file is read with the browser's File API and parsed in memory. There is no upload step, no server call, and nothing written to storage. Reload the page and everything is gone.

If you'd rather verify than trust: open your network tab before you drop the file, or disconnect from the internet once this page has loaded. The viewer keeps working.

An export is a snapshot. Savelore is the archive.

This tool reads a file that was already out of date the moment it was generated. Every chat since then is missing, and getting it back means requesting another export and waiting for another email. Savelore captures responses, highlights and whole conversations the moment they happen — across ChatGPT, Claude and Gemini — into one archive you can search on any day, not just the day you exported.

Frequently asked questions

Is my ChatGPT data uploaded anywhere?

No. The file is read and parsed inside your browser using the File API. There is no upload, no server, and nothing is stored. You can disconnect from the internet after the page loads and the viewer still works.

Which file from the export do I use?

conversations.json, from the unzipped export folder. Not chat.html, user.json, or message_feedback.json — those hold rendered output, your account details, and your thumbs up/down ratings respectively.

How large a file can it handle?

The limit is your device's memory, not a fixed cap. Typical exports of a few thousand conversations (roughly 10–80 MB) load in a few seconds. Very large archives take longer and are best opened on a desktop browser.

Can I export a single conversation to Markdown?

Yes. Open any conversation and use Markdown, Plain text, or Copy. You can also export the full set of conversations currently matching your search as one Markdown file.

Why do some messages show as [image]?

Images aren't stored inside conversations.json. The export keeps them as separate files referenced by ID, so the viewer marks where an image sat in the conversation rather than dropping the turn.

Does the export include conversations I deleted?

No. Deleted conversations are not included in the export. Archived ones are, and they're flagged in the list.

How long is my export download link valid?

OpenAI's download link expires 24 hours after it's sent. If you miss it, request a new export from Settings → Data controls.

Does this work with Claude or Gemini exports?

Not yet — this reads OpenAI's export format specifically. Viewers for the other formats are in progress.

Do I need an account to use this?

No account, no email, no signup. It's a static page that reads a local file.