Skip to content

Repository files navigation

ChatGPT → Claude Migration

A Chrome Extension that migrates your conversations, memories, and custom instructions from ChatGPT to Claude — no server required.

Manifest V3 React 19 TypeScript 5.9 340 Tests Passing Zero Backend MIT License


Download Connect Migrate
Download conversations from ChatGPT Connect to Claude Migrate conversations

✨ Features

🔄 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


📥 Install

No build tools required — just download and load.

  1. Download the latest chatgpt-to-claude-v*.zip from the Releases page
  2. Unzip the archive
  3. Open Chrome → navigate to chrome://extensions → enable Developer Mode
  4. Click Load unpacked → select the unzipped chatgpt-to-claude folder
  5. Click the extension icon in the toolbar to open the dashboard

How It Works

  1. Connect — Log into ChatGPT and Claude in your browser (the extension uses your existing sessions)
  2. Extract — Download your conversations, memories, and instructions from ChatGPT
  3. Browse — Filter, search, and select which items to migrate
  4. Migrate — Push selected items to Claude, or download as ZIP files

🔒 Security & Privacy

  • 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.com and claude.ai
  • Sender verification — background worker rejects non-extension requests
  • Local storage — all data in extension-scoped IndexedDB, clearable from Settings

⚖️ Disclaimer

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.

📄 License

MIT



🛠️ For Contributors & Developers

Architecture

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

Design Decisions

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

Tech Stack

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

Setup

git clone https://github.com/midweste/chatgpt-to-claude.git
cd chatgpt-to-claude
npm install
cd extension/dashboard && npm install && cd ../..

Commands

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

Loading for Development

  1. make build
  2. Chrome → chrome://extensions → Developer Mode
  3. Load unpacked → select extension/
  4. Dashboard changes hot-reload with make dev, but background worker changes need make build + extension reload


Built with ❤️ to help people own their AI conversation history.

About

Chrome extension to migrate your ChatGPT conversations, memories, and custom instructions to Claude. No server required — runs entirely in your browser.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages