Topic: how to export chatgpt history
How to Export Your ChatGPT History (2026 Guide)
OpenAI hides the export behind two menus and a 30-minute email delay. Here's the exact path, what you get back, and the one gotcha that catches people the first time.
TL;DR
Go to chatgpt.com → click your profile (bottom-left) → Settings → Data Controls → Export data → Request. You'll get an email with a download link in 10–30 minutes. The link expires in 24 hours. The ZIP contains conversations.json (all chats), chat.html (pretty viewer), user.json (account metadata), message_feedback.json, and model_comparisons.json.
Why this matters
Exporting your ChatGPT history is the first step for three different use cases: (1) migrating your data out because you're leaving OpenAI, (2) feeding it into a local tool for search, summarization, or decision extraction (see: extracting decisions), or (3) a GDPR-style "give me everything you have on me" audit. The export is complete and machine-readable, which is rare for chat platforms — Anthropic, Perplexity, and Gemini all ship worse archives. Do the export once a quarter and you have a real audit trail, regardless of what OpenAI does to the UI or API next.
How to approach it
- Open ChatGPT in a browser (not the mobile app — the export flow is web-only as of April 2026). Sign in as the user whose history you want.
- Click your profile in the bottom-left corner → pick Settings.
- Navigate to Data Controls. On Plus and Team plans, this is a top-level tab. On Enterprise and Edu plans, the admin may have disabled self-service export — ask your workspace admin.
- Click "Export data" → "Request". You'll see a "This may take up to 30 minutes" notice. In practice it's usually 5–15 minutes for a year of heavy use.
- Watch your inbox. OpenAI emails a link from
noreply@tm.openai.com. Click it, download the ZIP, unzip.
What's inside the ZIP
Six files. The one that matters is conversations.json:
conversations.json ← all chats, array of objects
chat.html ← browsable HTML view (opens in browser)
user.json ← your profile metadata
message_feedback.json ← thumbs-up/down you gave
model_comparisons.json ← any A/B comparison votes
shared_conversations.json ← share-links you created
Each object in conversations.json looks like this:
{
"title": "Postgres vs MongoDB for metrics",
"create_time": 1736209400,
"update_time": 1736209800,
"mapping": {
"<msg-id>": { "message": { "author": { "role": "user|assistant" },
"content": { "parts": ["..."] } },
"parent": "<prev-id>", "children": [...] }
},
"conversation_id": "abc-123"
}
The mapping field is a tree, not a list — edited messages create branches. When processing, walk from the root down each branch and keep only the leaf path (the one you actually ended up reading). Most hand-rolled exporters get this wrong and emit duplicates.
How WhyChose helps
If you're exporting because you want the decisions inside your chats, WhyChose does that parsing for you. Drag conversations.json into the browser, extraction runs client-side, and you get back a structured log of stack picks, pricing calls, and architecture choices. The open-source CLI handles the DAG-flattening and branch-deduping so you don't reimplement it. If you want to roll your own, the regex patterns and JSON Schema are published in patterns.md.
Related questions
How big is the export for a year of ChatGPT Plus usage?
Typically 40–200 MB of JSON for a heavy user (15–30 chats/week), after de-dup. The HTML viewer and image attachments inflate it further. A full-year archive with DALL-E images has run 1.2 GB in our testing.
Does the export include custom GPTs and their memories?
Yes — custom GPT conversations appear in the same conversations.json. Memory (the cross-conversation recall feature) ships separately in user.json → memories[]. Custom GPT definitions (the system prompt you wrote) are not included — only your chats with them.
What happens to the download link after 24 hours?
It expires. You have to re-request, which triggers another 10–30-minute wait. Save the ZIP locally the moment you download; re-requesting doesn't preserve a prior checkpoint.
Can I export for a team member?
Only if you're the workspace admin on Team/Enterprise, and only via the Compliance API — the UI path is per-user. Admins should use the v1/organization/exports endpoint; OpenAI's docs cover the auth + rate-limit details.
Further reading
- conversations.json field reference — schema walkthrough: every top-level key, the mapping DAG, the leaf-walk in 8 lines of JS.
- How to search your ChatGPT history — four levels (sidebar → ripgrep → jq → structured extraction), with recipes for each.
- How to extract decisions from your ChatGPT chats — the follow-up: now that you have the JSON, here's what to do with it.
- Convert your ChatGPT export to Markdown — turn the JSON into one readable
.mdfile per conversation. - How to export your Claude conversations — the Anthropic equivalent.
- Gemini conversation export — the third-platform path; Google Takeout returns HTML rather than JSON, with a 30-line parsing script that normalizes the activity log to a JSON shape downstream tools can consume.
- ChatGPT Projects export — Project conversations are in the export but the boundary is flattened; the page ships a 28-line script that rebuilds
out/<project_id>/with per-Project READMEs, custom instructions, and file manifests. - ChatGPT Team export — differences from Plus, workspace admin flow, and the Compliance API — what changes when the account is on a Team or Enterprise workspace: workspace-scoped not account-scoped, an audit-log.jsonl appears at the top level, members.json + shared-gpts/ ride along, and the per-member Settings → Data Controls export is usually disabled.
- ChatGPT Memory export — where your memories live in the data download — the same export that produces
conversations.jsonalso producesmemory.json; this page documents what's in the memory file, what's not (no source-conversation link), and how disabled vs deleted memories appear differently. - The open-source extractor — handles ChatGPT + Claude exports out of the box.
- ChatGPT Custom GPTs export — conversations vs configurations, what's included and what's not — the standard data export this page describes includes Custom GPT conversations (with
gizmo_id) but never GPT configurations; this companion page explains both export flows and what's permanently absent from each. - Perplexity conversation export — how to save your AI research history — the platform with no native export path: Perplexity stores conversation threads in your Library but provides no batch download equivalent to this page's ChatGPT flow. Covers why (search-engine legal positioning vs personal AI assistant), the two manual per-thread paths, what a GDPR data request returns, and how Perplexity research fits into a multi-platform decision workflow.
- Gemini Workspace export — Google Vault, admin console, and enterprise data portability — for enterprise users on Google Workspace: the Gemini export path that bypasses personal Takeout entirely and runs through Google Vault (MBOX format, admin-only). Contrast with this page's ChatGPT Team path — ChatGPT Team's Compliance API produces JSON; Vault's Gemini export produces MBOX. Covers tier differences, the Gemini Apps History toggle, and a Python parser for the MBOX output.
- Can you export OpenAI Playground conversations? No — and here's why — the common confusion: if you used the Playground rather than ChatGPT, this page's export path does not apply. Playground Chat mode is stateless — no conversation history is stored, and the data export you download from Settings contains no Playground sessions. The companion page explains why and what capture-at-the-time workarounds exist.
- Uploaded files in ChatGPT exports — what's included, what's missing, and how to recover them — the companion page for the most common post-export surprise: conversation text and Python code are fully in conversations.json, but the actual binary content of files you uploaded (PDFs, images, spreadsheets) and files ChatGPT generated (Code Interpreter outputs, DALL-E images) are not. Covers what IS preserved, what expires (DALL-E CDN URLs at ~30 days), and the recovery path for each file type.
- ChatGPT web search in conversations.json — what's in the export, what's missing, and how to extract citations — the reference for web search tool calls in the export:
tether_browsing_displayandtether_quotenodes ARE in conversations.json but are invisible to the standard assistant-message extractor. Covers the tether content-type schema, what's stored (query, cited URLs, snippets) vs what's not (full page HTML), and jq recipes to pull every URL ChatGPT cited in a conversation. - ChatGPT voice mode in the data export — transcripts, what's missing, and how to process them — voice conversations export as plain text in conversations.json; audio is never stored; how to identify voice turns, understand Whisper transcription quality, and extract decisions from voice-heavy sessions.
- Microsoft Copilot export — how to retrieve conversation history (2026) — the platform with no equivalent to this page's Settings → Data Controls → Export flow: Microsoft Copilot has no user-facing export button. Covers the consumer privacy dashboard path, Microsoft Purview eDiscovery for M365 Copilot admins, the Microsoft Graph API, and the platform comparison table across ChatGPT, Claude, Gemini, Perplexity, and Copilot.
- ChatGPT Canvas export — what's in your ZIP and how to extract documents — Canvas documents (the collaborative document editing mode launched October 2024) are included in the standard ZIP export this page describes. Canvas conversations appear alongside regular chat conversations in conversations.json; the document body is in the message parts of the Canvas conversation thread. This companion page explains how Canvas content is structured in the export, the jq recipes for extracting Canvas documents, and which Canvas features (UI annotations, interactive revision timeline) are not preserved.
- GitHub Copilot Chat export — why there isn't one, and where your history actually lives — another platform with no export equivalent to this page's flow: GitHub Copilot Chat (the conversational AI embedded in VS Code) stores conversations locally in VS Code's workspace storage, not in any GitHub server. No structured export exists, GitHub's account data archive does not include Copilot Chat history, and VS Code Settings Sync does not sync workspace storage. If a decision was made in Copilot Chat rather than a ChatGPT conversation, this page's export path does not apply to it.