A Chrome Extension that migrates your conversations, memories, and custom instructions from ChatGPT to Claude — no server required.
| Download | Connect | Migrate |
![]() |
![]() |
![]() |
🔄 Full Migration — Conversations, memories, and custom instructions
📂 Project Mapping — ChatGPT folders → Claude projects, automatically
📊 Built-in Dashboard — Browse, filter, preview, and select what to migrate
💾 Export Options — Download as ZIP (text or JSON) even without a Claude account
🔒 Client-Side Only — No server, no API keys, no data leaves your browser
⏸️ Pause & Resume — Rate-limit aware queue with auto-pause on 429s
📋 Push Tracking — Knows what's already been pushed, prevents duplicates
🧠 Memory Export — Migrate your ChatGPT memories as a Claude document
📝 Instruction Export — Transfer custom instructions to Claude project prompts
📜 Structured Logs — Full operation log viewable in the dashboard
No build tools required — just download and load.
- Download the latest
chatgpt-to-claude-v*.zipfrom the Releases page - Unzip the archive
- Open Chrome → navigate to
chrome://extensions→ enable Developer Mode - Click Load unpacked → select the unzipped
chatgpt-to-claudefolder - Click the extension icon in the toolbar to open the dashboard
- Connect — Log into ChatGPT and Claude in your browser (the extension uses your existing sessions)
- Extract — Download your conversations, memories, and instructions from ChatGPT
- Browse — Filter, search, and select which items to migrate
- Migrate — Push selected items to Claude, or download as ZIP files
- No stored credentials — session cookies accessed at runtime, never saved
- No server — everything runs locally in your browser
- No API keys — uses your existing ChatGPT and Claude sessions
- Domain allowlist — only connects to
chatgpt.comandclaude.ai - Sender verification — background worker rejects non-extension requests
- Local storage — all data in extension-scoped IndexedDB, clearable from Settings
This is an independent, open-source project. It is not affiliated with, endorsed by, or sponsored by OpenAI or Anthropic.
- "ChatGPT" is a trademark of OpenAI. "Claude" is a trademark of Anthropic. These names are used solely for descriptive purposes to identify the platforms this tool interacts with.
- This extension acts on behalf of you, the authenticated user — it uses your own browser sessions to access your own data. It does not bypass authentication, circumvent access controls, or access other users' data.
- Your data belongs to you. This tool helps you export and migrate your own conversations, memories, and instructions. No data is sent to any third-party server.
- Users are responsible for reviewing and complying with the terms of service of any platforms they use this extension with.
- This project is provided "as is" without warranty. See LICENSE for details.
🛠️ For Contributors & Developers
extension/
├── manifest.json # Chrome MV3 manifest
├── background.ts # Service worker — API proxy, cookie access, domain allowlist
├── lib/ # ⭐ Shared library (React-free, DOM-free)
│ ├── sources/ # ChatGPT adapter (auth, extraction)
│ ├── destinations/ # Claude adapter (auth, push, projects)
│ ├── services/ # Business logic (extraction, migration, export)
│ ├── storage/ # IndexedDB persistence (repositories)
│ ├── transform/ # GPT → Claude format conversion
│ └── utils/ # Retry, SSE parsing, timestamps
└── dashboard/ # React 19 + Vite SPA
└── src/
├── pages/ # 11 pages (Connect → Extract → Browse → Migrate → ...)
├── stores/ # Zustand state management
└── components/ # UI components + shadcn/Radix primitives
| Decision | Why |
|---|---|
| No backend | Session cookies via chrome.cookies, proxied through the service worker |
| No API keys | Uses existing ChatGPT/Claude browser sessions |
| Shared lib | Business logic is React-free — testable and framework-independent |
| IndexedDB | Extension-scoped, clearable from Settings, no localStorage |
| Layer | Technology |
|---|---|
| Extension | Chrome Manifest V3, Service Worker |
| Frontend | React 19, TypeScript 5.9, Vite 7 |
| Styling | TailwindCSS v4, shadcn/ui (Radix) |
| State | Zustand 5 |
| Tables | TanStack Table v8 |
| Testing | Vitest, 340 tests, v8 coverage |
git clone https://github.com/midweste/chatgpt-to-claude.git
cd chatgpt-to-claude
npm install
cd extension/dashboard && npm install && cd ../..| Command | What it does |
|---|---|
make dev |
Start Vite dev server with HMR |
make build |
Build dashboard + background worker |
make release |
Build and package as distributable ZIP |
make test |
Run tests |
make coverage |
Tests + v8 coverage report |
make clean |
Remove build artifacts |
make build- Chrome →
chrome://extensions→ Developer Mode - Load unpacked → select
extension/ - Dashboard changes hot-reload with
make dev, but background worker changes needmake build+ extension reload
Built with ❤️ to help people own their AI conversation history.


