How to back up your ChatGPT conversations as Markdown
OpenAI ships your data as one giant conversations.json inside a ZIP. Here's how to turn that into clean per-conversation Markdown files ready for Obsidian, Notion or Git.
Your ChatGPT history is more valuable than you think
Two years of prompts, iterations, half-finished essays, code snippets, meal plans, apology drafts. If OpenAI locks your account tomorrow, that history is gone โ and even if it isn't, the built-in ChatGPT search is basic and there's no way to grep, tag or link entries.
The fix is a one-time export. Everything after that is portable โ searchable in your text editor, indexable by Obsidian, versionable in Git.
Step 1: get the export from OpenAI
In ChatGPT: Settings โ Data controls โ Export data โ Confirm export.
OpenAI emails you a download link within a few minutes to a few hours. Grab the ZIP.
Inside the ZIP you'll find, among other files, conversations.json โ a single JSON array holding every conversation as a linked node graph (each message references its parent, so branching edits are preserved).
Reading it manually is miserable. The structure is designed for the ChatGPT UI, not humans.
Step 2: convert to Markdown in your browser
Drop the ZIP (or just conversations.json) into ChatGPT Export to Markdown. The tool:
- Walks the message tree in order
- Skips system and tool messages
- Preserves code blocks as fenced Markdown
- Names each file
YYYY-MM-DD Conversation title.md - Bundles the result into a ZIP you download
Everything runs in your browser. Your history never touches a server.
Step 3: pick a home for the files
Obsidian. Unzip into a vault folder. Your conversations become searchable, backlinkable notes. Add a "chatgpt" tag block at the top with a Templater snippet if you want fast filtering.
Notion. Drag the folder into a Notion database with the "Import Markdown" option. You get a table of every conversation with title, date, and full text.
Git. git init && git add . && git commit -m "chatgpt archive". Now every future export is a diff โ you can see exactly which conversations are new.
A single searchable file. Concatenate them with cat *.md > all-chatgpt.md on macOS/Linux (or Get-Content *.md | Set-Content all.md on PowerShell). One file, ctrl-F, done.
What about images and files?
The export includes attachments in a separate folder inside the ZIP, but the conversation JSON only references them by ID. The Markdown converter skips them for now โ most of the value is the text. If you need attachments, unzip the original OpenAI archive and browse the files/ folder manually.
Automating it
There is no official ChatGPT API for full history export, so this is a manual process. But once you've done it, subsequent exports are 60 seconds: click "Export data", download, drop into the converter, unzip into your vault. Do it once a month and you'll never lose a prompt again.
Related tools
- ChatGPT Export to Markdown โ the converter.
- Notion to Obsidian โ if Obsidian is your final destination.
Tools mentioned in this post
Related reading
Get your Kindle highlights out โ without paying for Readwise
Your Kindle stores every highlight in a plain text file called My Clippings.txt. Here's how to parse it into clean per-book Markdown notes for Obsidian, Notion or a personal knowledge base.
Notion to Obsidian: fixing the ugly UUID filenames and broken links
Notion's Markdown export dumps files like "My Note abc123...def.md" with internal links pointing to those same UUID names. Here's how to clean the export into a proper Obsidian vault.
How to convert Markdown to PDF (with syntax highlighting and tables that don't break)
Markdown to PDF sounds trivial and mostly is โ until you hit code blocks, tables wider than the page, and images that misalign. What actually works, based on what developers repeatedly ask about on Reddit.
Shan builds DashConvert. He holds a Master's degree in Mechanical Engineering and now works as a Software Engineer, shipping browser-based file utilities out of Ontario, Canada. Learn more ยท 712studiogames@gmail.com