DEV Community

Cover image for I Vibe Coded a Local ChatGPT Export Viewer (and Had Some Feelings About My Chat History)
Mateusz
Mateusz

Posted on • Originally published at milchek.com

I Vibe Coded a Local ChatGPT Export Viewer (and Had Some Feelings About My Chat History)

I exported my ChatGPT data. What arrived was a zip file containing hundreds of loose JSON files, a pile of images, and some .wav recordings of my voice messages. No viewer and no UI. Just a data dump and a polite email.

So I built one (well, vibecoded is one way to put it).

dumpedGPT is a dead-simple local web app for browsing your ChatGPT export. Drop your unzipped data into a dump/ folder, run npm run dev, and open localhost:5173. That's it. Everything stays on your machine - no uploads, no accounts.

What it does

  • Dashboard with conversation count, date range, model breakdown
  • Searchable conversation list with full thread rendering (markdown, code blocks, inline images, voice playback, chain-of-thought from o-series models)
  • Media gallery - masonry grid of every image across all your conversations
  • Profile page with your account info, Sora generations, shared conversations, message feedback
  • You can select individual conversations and export them to JSON in case you want to import them somewhere else (like Claude)

I went with Vite + React on Claude's recommendation. Fast to set up, zero config friction. Vibe coded the whole thing in an hour or so.

What I actually found in my export

A lot of junk.

Most of what I'd "deleted" from ChatGPT wasn't in the export. Either they hard delete (possible, but I'm skeptical), or deleted conversations simply aren't included in the export scope. Either way - less data than expected.

Of what was there: mostly stuff I'd ask again in five minutes and get a better, more current answer. The half-life of LLM output is pretty short.

There was one exception which was a long book recommendation thread I'd built up over months - genuinely useful since it was curated for my tastes. That I'll migrate somewhere useful.

Why I actually built this

Subscription consolidation. I'm paying for too many AI tools and my usage is getting fragmented across platforms. I wanted my ChatGPT history in a format I could actually browse before I stepped back from the paid plan.

I'll still use the free tier. But the pull toward centralising on fewer tools is gnawing at me.

There's a broader point here too: data portability is something you should do now, before it gets harder. Depending on where you are in the world and how privacy laws evolve (or don't), the window to get a clean export might not stay open forever. GDPR gives EU users some leverage today. That's not guaranteed everywhere, or indefinitely.

Get it

👉 github.com/mateusz-michalik/dumpedGPT

Requires Node 18+. MIT licensed.

Contributions welcome, but honestly it does what I need it to do.

Top comments (0)