What It Really Costs to Build Your Own ChatGPT Export Script

Every developer who downloads their ChatGPT export has the same reaction. It is a JSON file. I can parse a JSON file. Two hours, tops. I have written that script. Then I wrote it again for Claude. Then again for Gemini. Here is what that actually costs. The two-hour version exists, and it is not what you want You can w…

Every developer who downloads their ChatGPT export has the same reaction. It is a JSON file. I can parse a JSON file. Two hours, tops.

I have written that script. Then I wrote it again for Claude. Then again for Gemini. Here is what that actually costs.

The two-hour version exists, and it is not what you want

You can write something in an afternoon that reads \conversations.json\ and prints Markdown. It will produce output. That is different from producing output you would keep.

The ChatGPT export does not store a conversation as an ordered list of messages. It stores a \mapping\ object: every node has an ID, a parent, and children. Regenerated responses stay in the file as sibling branches. To reconstruct what you actually saw on screen, you start at the current leaf node and walk back up through parents, then reverse.

Iterate the mapping object directly, which is the obvious thing to do and the thing an AI assistant will usually write first, and you get every abandoned branch mixed into the transcript in roughly insertion order. The output looks plausible until you read it.

The tasks that eat the time

Here is the realistic breakdown for a converter that handles more than one platform and emits files you would hand to another person.

| Task | Realistic time |

| --- | --- |

| Walk the ChatGPT mapping tree correctly | 3–6 h |

| Claude's separate export shape | 2–4 h |

| Gemini via Google Takeout HTML | 4–8 h |

| Markdown rendering: code, tables, nested lists | 3–6 h |

| .docx output that opens cleanly in Word | 4–10 h |

| PDF with fonts that cover emoji and accents | 3–8 h |

| Bulk export, safe filenames, ZIP streaming | 2–5 h |

| Ongoing format-change maintenance | forever |

That is roughly 21 to 47 hours before maintenance. At $75 an hour that is $1,575 to $3,525 of your time. Add AI coding credits, which is real money now, and the number goes up.

The three that always take longer than the estimate

Word output. Generating a .docx is not writing text to a file. Headings, monospace code blocks with a background, ordered and unordered lists at multiple depths, page breaks between conversations: each is explicit configuration in a docx library. A code block that renders as unstyled body text is technically a Word document and practically useless.

PDF fonts. The default fonts bundled with most PDF libraries are Latin-only. Your export contains emoji, accented characters, and possibly CJK text. Those glyphs are silently dropped or replaced with boxes. Fixing it means embedding a font like Noto Sans, subsetting it so the file is not 15 MB, and handling fallback chains.

Format drift. OpenAI changed the export structure in 2025. Anthropic changed theirs. Google's Takeout output for Gemini shifted from one file to hundreds. Your script is not done when it works. It is done when you stop caring whether it works.

Where AI-assisted coding helps, and where it does not

Vibe coding is genuinely good at the first pass. Describe the shape of the JSON and you get a parser skeleton in seconds. It is much worse at the parts that require having seen a real export file: branch selection, the difference between message content types, the fact that some nodes have no content at all.

The failure mode is specific. The generated code runs, produces files, throws no errors, and is quietly wrong. You do not find out until you go looking for a conversation and it is missing half its answers. Debugging that means understanding the format anyway, which was the work you were trying to skip.

The break-even math

ChatExports is $10 once for a single platform, $25 once for all nine plus any we add later. Everything runs in your browser, so your conversations never leave your device, which is usually the actual reason people want to self-build in the first place.

Against a 21-hour build, the break-even is a rate of about $1.20 an hour. Even valuing your time at coffee money, buying wins. The only cases where building is the right call are when the parsing needs to live inside a pipeline you already own, or when the project itself is the point.

If you want to see the full task-by-task comparison with a calculator for your own hourly rate, we put it on the build vs buy page.

What to do instead

Spend the weekend on the thing only you can build. Upload your export to the converter, pick Word, PDF, Markdown or CSV, and get on with it.