How to do a full data extraction from ChatGPT

Open ChatGPT, go to Settings, then Data Controls, then Export Data, and confirm via the email OpenAI sends. You will receive a ZIP containing conversations.json with every message you have ever sent. The ZIP is the complete extraction; the JSON inside then needs converting to be readable.

Short answer

Open ChatGPT, go to Settings, then Data Controls, then Export Data, and confirm via the email OpenAI sends. You will receive a ZIP containing conversations.json with every message you have ever sent. The ZIP is the complete extraction; the JSON inside then needs converting to be readable.

Step by step

  1. Open Data Controls: Click your profile icon in ChatGPT, choose Settings, then select Data Controls from the left sidebar. This panel is where OpenAI keeps every account-level data action, including deletion and export.
  2. Request the export: Click Export Data, then Confirm Export. OpenAI does not build the archive immediately. It queues the job and emails you when the archive is ready to download.
  3. Confirm from the email: OpenAI sends a confirmation link to your account email. The export does not start until you click it, which is the single most common reason people think their extraction failed.
  4. Download within 24 hours: The download link expires roughly 24 hours after it is issued. If you miss the window you have to request a fresh export, which resets the queue.
  5. Unpack and convert: The ZIP contains conversations.json, chat.html, model_comparisons.json, user.json, and any images you uploaded. Load conversations.json into a converter to get readable per-conversation documents.

A "full data extraction" means something more specific than saving a chat. It means getting every artefact OpenAI holds against your account into your own storage, in a form you can still read in five years. That is a different job from copying a conversation into a document, and OpenAI's export is only the first half of it.

What is actually inside the archive

People are frequently surprised by what the ZIP contains, so here is the real manifest:

| File | What it holds |

|---|---|

| conversations.json | Every message in every conversation, including branches you abandoned |

| chat.html | A single self-contained HTML page rendering all conversations |

| user.json | Your account identifier, email, and plan metadata |

| model_comparisons.json | Side-by-side rating data from when you picked between two responses |

| message_feedback.json | Every thumbs up or thumbs down you submitted |

| /dalle-generations | Images you generated, if any |

| Uploaded files | Documents you attached to conversations, when present |

The archive is complete in the sense that it contains your conversation history. It is not complete in the sense of being usable. conversations.json on a heavy account routinely runs 40 MB to 300 MB, and its internal structure is a linked tree of message nodes rather than a flat list, because ChatGPT supports editing and regenerating messages. That tree is why simply opening the file gives you an unreadable wall of text.

Why chat.html is not the answer

Most guides stop at "just open chat.html". That works for a casual look and fails for an actual extraction, for three reasons.

It is a single monolithic file, so a 2,000-conversation history becomes one document your browser struggles to scroll. There is no way to extract one conversation without manual copy and paste. And it has no stable structure, so you cannot feed it into a notes app, a search index, or a compliance archive.

If your goal is genuine data ownership rather than a quick look, you need per-conversation files in a durable format.

Turning the extraction into documents you can use

This is the step OpenAI does not provide. ChatExports reads conversations.json directly, rebuilds the message tree into ordinary linear conversations, and writes each one out as a separate Word, PDF, Markdown, CSV, or plain text file.

The conversion runs entirely inside your browser using local JavaScript. Nothing is uploaded, which matters here more than usual: a full extraction is by definition the most sensitive single file your AI account will ever produce, and handing it to a web service defeats the purpose of owning it.

You can select individual conversations, filter by date, or bulk-convert the whole archive in one pass.

How often to re-run the extraction

Treat it like a backup rather than a one-off. A quarterly export is enough for most people. Run one immediately if you are about to change plans, you have had any billing dispute, or you are about to delete conversations, because deletion in ChatGPT is not reversible and the export only contains what exists at the moment it is generated.

If the export never arrives

Check spam first, then confirm you clicked the confirmation link. If more than a few hours pass with no email, request again from a desktop browser rather than the mobile app, which has intermittently failed to trigger the job. Accounts under an enterprise or education workspace may have export disabled by an administrator, in which case the admin must run it on your behalf.

Frequently asked questions

How long does a full ChatGPT data extraction take?

Usually 5 to 30 minutes for a normal account. Very large histories can take several hours. OpenAI emails you a download link when the archive is ready, and that link expires about 24 hours later.

Does the export include conversations I deleted?

No. The archive is generated at the moment you request it and contains only conversations still present in your account. Deleted conversations are not recoverable through export, which is why running one before any cleanup matters.

Does the extraction include custom GPTs and their instructions?

Conversations with custom GPTs are included in conversations.json. The GPT configurations themselves are not part of the standard export; you need to copy those from the GPT editor separately.

Is it safe to upload conversations.json to a converter?

It depends entirely on the converter. ChatExports processes the file locally in your browser and never transmits it, which is the only model that makes sense for a file containing your complete chat history.

Related guides