← All posts

How to save and export your ChatGPT conversations (2026): every method, honestly


Your ChatGPT history lives in someone else’s building, and it’s only as durable as a policy you don’t control. One user lost three years of history overnight and found OpenAI’s own export tool wouldn’t even let them recover it. This guide covers every reasonable way to get your conversations out and keep your own copy — the official export, copy-paste and print, extensions and scripts, and Carry — with the honest tradeoffs of each, so you can pick the one that fits how you work.

The methods at a glance

Method Fidelity Effort Habit or one-off Local Best for
Official export Raw JSON dump; needs a script to read Manual; link expires in 24h One-off, all-or-nothing Yes A full historical archive
Copy-paste Mangles code, tables, and math Low, per conversation One-off Yes A single short exchange
Print-to-PDF Keeps the look; a dead end for reuse Low, per conversation One-off Yes A fixed, shareable record
Extensions & scripts Scrapes the page; fidelity often dies One click, until markup breaks Ongoing Varies — vet it Convenience, if local-only
Carry Reads the provider’s own data as clean Markdown One click; manual today Ongoing Yes, local-only Your own copy, going forward

Method 1: ChatGPT’s official data export

OpenAI has a built-in export. In ChatGPT, go to Settings → Data controls → Export data, confirm, and you’ll get an email with a download link. Inside the archive is a chat.html file you can open in a browser, plus the underlying JSON.

For a full one-time archive of everything it’s worth knowing about, but it catches people out:

  • The download link expires in 24 hours. Miss the day and you start over.
  • A second request silently cancels the first. Request another export before the first arrives and OpenAI only fulfills the most recent one — the earlier request is quietly dropped, no download ever produced.
  • The format changed with no announcement. Around April 2026, OpenAI quietly changed the export file structure — reports describe conversations coming back blank, wrong summaries, and internal data leaking into the visible text. The archive now ships as multiple conversations-###.json files rather than one, with no changelog and no version marker.
  • It’s built for compliance, not reading. The raw JSON is a data-portability dump. Turning it into something you’d read or search usually means running a script against it.

Useful as an occasional full backup — but it’s a manual, all-or-nothing, expiring process, and its output isn’t something you’ll browse. Insurance you file away, not a way to live with your conversations day to day.

Method 2: copy-paste and print-to-PDF

For saving this one conversation, the simplest tools are fine.

Copy-paste into a note works for a single, short exchange. The catch is fidelity: the moment a conversation has code blocks, tables, or math, plain copy-paste mangles them — lost code fences, collapsed table structure, LaTeX as raw symbols.

Print to PDF (your browser’s print dialog, “Save as PDF”) preserves the look of a conversation as it appeared on screen — good for a fixed, shareable record. The tradeoff: a PDF is a dead end for reuse. You can’t easily search across a folder of them, link between them, or pull a snippet back out as text without it fighting you.

Both are fine for the occasional keeper. Neither is a habit you can sustain across hundreds of conversations.

Method 3: browser extensions and scripts

Dozens of extensions and scripts promise one-click export from ChatGPT to Markdown, PDF, or Notion — popular precisely because the built-in export is so awkward.

Most are built on screen-scraping: they read the conversation out of the page’s HTML rather than from any real data source. So they break whenever the site’s markup changes, which is often — and scraping the rendered page is exactly where fidelity dies: LaTeX turns to $$ soup, code blocks lose their fences.

The bigger issue is trust. An extension that can read your ChatGPT conversations updates itself silently after you install it. In December 2025, a popular VPN extension and several siblings began harvesting AI chat content after a routine auto-update turned a benign tool malicious. Separately, two extensions impersonating AI assistants were caught reading conversations out of the page and exfiltrating them to a remote server. Same attack vector both times: a tool you trusted at install shipped hostile code later.

Vet before you trust. Look for:

  • Local-only, with no server it phones home to — nothing to exfiltrate.
  • Minimal, legible permissions — scoped to the one site it needs, not “read and change all your data on all websites.”
  • A clear reason for every permission it asks for.

If an extension can’t answer those, the convenience isn’t worth it.

Doing it with Carry

Carry is the honest version of Method 3 — a capture layer for your AI conversations, not another exporter you run and forget.

What it does today: you pick a folder — a normal folder on your machine, or your Obsidian vault, since a vault is just a folder of Markdown. You connect ChatGPT with one click; Carry uses the session you’re already logged into, so there’s no API key and no developer account, and it only ever touches the provider’s own site. Then you open the toolbar popup and sync. Carry pulls your most recent conversations — roughly the last 20 per provider — and writes each one as a clean Markdown file:

---
title: "Debugging a flaky test in CI"
source: chatgpt
created: 2026-07-01T14:12:00Z
url: https://chatgpt.com/c/abc123
---

**Human**

Why does this test pass locally but fail in CI?

**Assistant**

A few usual suspects when a test is green locally and red in CI...

It’s local-only, asks only for access to the providers you connect, and re-syncing updates each file in place — keyed to its conversation id — so you never collect duplicates.

Two honest limits. Syncing is manual today — you open the popup and click; ambient capture is something we’re working toward, not something that ships yet. And Carry reaches your recent conversations, not your entire back-catalog, so for a full historical archive, OpenAI’s official export (Method 1) is still the tool for that job. Carry is for keeping your own copy of the conversations you’re having now, going forward.

Common questions

Does the official export include everything?
It's all-or-nothing — it returns your whole history, but as a raw JSON dump built for compliance, not reading. The format changed with no announcement around April 2026, and it usually takes a script to turn into something you'd actually browse.
Are browser extensions safe to use?
Not automatically. The real risk is silent auto-updates: a tool that's benign at install can ship hostile code later. Prefer extensions that are local-only, with minimal permissions scoped to the one site they need.
Can Carry back up my entire ChatGPT history?
No. Carry reaches your recent conversations — roughly the last 20 per provider — not your whole back-catalog. For a full historical archive, use OpenAI's official export (Method 1).
Does re-syncing with Carry create duplicate files?
No. Each file is keyed to its conversation, so re-syncing updates that file in place instead of spawning `conversation (3).md`. You can run it as often as you like.

Carry is local-only — no server, no account, and only the providers you connect. It syncs ChatGPT, Claude, and Grok into your own folder as Markdown — see how it works to get started.

Carry it home.

Sync your ChatGPT, Claude, and Grok conversations into your own folder — as clean Markdown, local-only.

Add to ChromeSoonSee how it works