Local-first · zero uploads · works offline
Every conversation, inspected in your browser.
Drag in your ChatGPT or Claude export — conversations.json, .jsonl or the whole ZIP — and unlock secret scanning, custom instructions, full-text search, cost estimates and activity heatmaps. Parsed with JSZip 100% in your RAM.
Drop your export here
Drag & drop a ChatGPT or Claude export — ZIP, conversations.json or .jsonl — or click to browse. You can also paste files with Ctrl+V.
Parsed in your browser's RAM — zero bytes leave this device
JSZip decompression runs fully in memory.
ChatGPT mapping graphs and Claude chat_messages.
No account, no upload, no telemetry — ever.
How it works
Three steps to total visibility.
From an unreadable JSON dump to a fully searchable, exportable archive — without ever sending a byte to a server.
Request your export
ChatGPT: Settings → Data Controls → Export Data. Claude: Settings → Privacy & Data → Export your data. Download the emailed ZIP.
Drop it here
JSZip decompresses the archive entirely in your browser memory. Nothing is uploaded — the file never leaves your device.
Analyze & export
Scan for secrets, isolate custom instructions, search every thread and export to Markdown, clean text or JSON.
Why client-side parsing is the only private option
Your prompts are your secrets. Keep them that way.
Cloud tools that "sync" your history route your prompt logs through their servers — which means your confidential code, business strategy and personal data pass through infrastructure you don't control. AI Data Inspector is the opposite architecture:
-
No network calls, ever
The analyzer never connects to OpenAI, Anthropic or us. Pull the network cable and it keeps working.
-
Decompression in RAM
JSZip expands archives in your browser heap; parsing and search run on a background thread on your own CPU.
-
Nothing is stored
No cookies, no accounts, no telemetry. Close the tab and every trace is gone with it.
const promise = parseInBrowser(zip);
// file.files → JSZip.loadAsync → RAM heap
await promise;
// nothing was POSTed · nothing was stored
fetch('/api/upload'); // ⇦ never happens