DashConvert
5 min read

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.

By
Software Engineer ยท M.Sc. Mechanical Engineering ยท Ontario, Canada

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

Tools mentioned in this post

Written by Shan

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