Skip to content
Go back

Exporting my ChatGPT chats

| Last edited: Yesterday

I’ve been thinking a lot about the accumulation of my conversations with LLMs. At this point, they represent a significant share of my creative, technical, and decision-making output. Most of these conversations live in ChatGPT. Some are ephemeral. Some are essential. But none are truly portable.

OpenAI provides an export feature, but it’s clunky. You have to:

That’s fine for a one-time archive. It’s not great for ongoing use.

What I really want is a way to:

where the data lives

I started by looking at the ChatGPT desktop app. Since it’s an Electron app, a lot of the logic is baked into local JavaScript files. There’s also a working directory on disk that stores IndexedDB data and application settings. I’m exploring both of those paths to see what’s possible without relying on the official export mechanism.

If I can pull chats directly from the local cache, the process becomes much more interesting. No delays. No manual steps. Just a clean export with metadata I can use.

building the tool

For now, I’m starting with a Node.js CLI. The initial version will:

Later I may port it to Go for better portability and performance.

The goal isn’t just archival. It’s control. If this tool works well, I can start feeding chats into other systems, summarizers, blog generators, even analytics dashboards.

open source and collaboration

This will be an open-source project from day one. I’ll share a working prototype on GitHub and maintain an instructions.md file to track progress and invite contributions. I’ll probably also loop in Claude via Code to help with parsing and structure.

more to come

This post is the start of a series. I’ll document the journey:

  1. The idea and motivation (this post)
  2. Writing the tool and shaping the CLI
  3. Reverse engineering the Electron app
  4. Lessons learned along the way

If you’ve tried to do something similar, I’d love to hear what worked, or didn’t, for you.


Share this post on:

Previous Post
The rise of disposable personal apps
Next Post
How I enabled native dictation on macOS and tested Perplexity