Moving from ChatGPT to Claude
From Joe Lapin, via LinkedIn visit
How to Migrate from ChatGPT to Claude
Custom GPTs, Knowledge Bases & Conversation History
A practical, step-by-step guide for moving your AI workflow from OpenAI to Anthropic
February 2026
Why Migrate?
If you’ve built up months or years of context in ChatGPT — custom GPTs, conversation history, uploaded knowledge files — switching platforms can feel like starting from scratch. It doesn’t have to be.
This guide walks you through how to export everything from ChatGPT, extract what matters, and rebuild it inside Claude using Projects, memory, and user preferences. Whether you’re a power user with dozens of custom GPTs or someone who just wants to carry over your conversation context, this guide has you covered.
What You’ll Need
Your ChatGPT data export (Settings → Data Controls → Export Data in ChatGPT)
A Claude account (Pro recommended for Projects, but free works for basics)
Python 3 installed (only needed if your conversations.json is too large to open directly)
30–60 minutes depending on how much you’re migrating
The Concept Map: ChatGPT → Claude
Before diving in, here’s how the major features translate between platforms:
ChatGPT Feature
Claude Equivalent
Key Differences
Custom GPTs
Claude Projects
Projects are personal workspaces (not shareable as public apps)
GPT System Prompt
Project Custom Instructions
Same concept, paste directly
GPT Knowledge Files
Project Knowledge
Upload files as project context
ChatGPT Memory
Claude Memory
Claude builds memory over time from conversations
Custom Instructions
User Preferences
Set in Settings; applies across all conversations
Conversation History
Project Knowledge (distilled)
Best migrated as summarized insights, not raw transcripts
Step 1: Export Your ChatGPT Data
OpenAI lets you request a full data export. Here’s how:
Go to ChatGPT Settings → Data Controls → Export Data
Click “Export” and confirm via the email you receive
Download the ZIP file when it arrives (usually within an hour)
Unzip it — you’ll find several files inside
What’s in Your Export
The export contains several files, but only a few matter for migration:
File
What It Is
Migration Value
conversations.json
All your chats
HIGH — Contains everything: messages, GPT configs, context
chat.html
Readable version
MEDIUM — Searchable in browser if file isn’t too large
*.json (named files)
Custom GPT configs
HIGH — May contain GPT system prompts and settings
Image files
Uploaded images
LOW — Only needed if specific images are referenced
Heads up: Your conversations.json file may be hundreds of megabytes. If it’s over ~50 MB, your browser probably won’t open it. Don’t worry — Step 2 covers how to handle that.
Step 2: Extract What Matters
You don’t need to migrate everything. Focus on the conversations and GPTs that you actually use and that contain real strategic value.
Option A: Your File Is Small Enough to Open
If your chat.html file opens in a browser, use Ctrl+F / Cmd+F to search for the names of your most important conversations and custom GPTs. Copy the relevant content and move to Step 3.
Option B: Your File Is Too Large (Most Common)
Use a simple Python script to extract conversation titles. Save this script in the same folder as your conversations.json file and run it:
python3 extract_titles.py
The script reads your conversations.json and creates a small CSV file listing every conversation with its title, date, message count, and whether it was a Custom GPT conversation. You can then review this list and decide which conversations are worth migrating.
A sample extraction script is included at the end of this guide in the Appendix. You can also ask Claude to write one tailored to your specific needs.
What to Prioritize
Custom GPT system prompts — these translate directly to Claude Project instructions
Knowledge files you uploaded to GPTs — re-upload them as Claude Project knowledge
High-value conversations — strategic work, research, recurring workflows
Personal preferences and context — how you like to work, your role, your style
Skip: one-off questions, casual chats, anything you wouldn’t go back and reference. Migrating everything creates noise, not value.
Step 3: Rebuild in Claude
Now that you’ve identified what matters, here’s how to set it up in Claude.
3A: Migrate Custom GPTs → Claude Projects
Each Custom GPT becomes a Claude Project. The mapping is straightforward:
Create a new Project in Claude (click “+ New Project” in the sidebar)
Paste the system prompt from your GPT into the Project’s custom instructions field
Upload knowledge files to the Project’s knowledge section
Start a conversation in the Project to test that it behaves as expected
Pro tip: If you have many knowledge files and hit upload limits, consolidate related files into a single document. You can ask Claude to help merge and organize them — it’s very good at this.
3B: Migrate Conversation Knowledge
Raw conversation exports are messy — full of filler, back-and-forth, and tangents. The real value is the distilled insights, decisions, and frameworks that emerged.
Best approach: Upload your important conversations to Claude and ask it to extract the key insights, decisions, and strategic outputs into a clean summary document. Then upload that summary as Project knowledge.
This is dramatically more useful than uploading raw transcripts. A 2 MB conversation might distill down to a 20 KB knowledge document that Claude can actually reference effectively.
3C: Set Up Your Preferences
ChatGPT’s “Custom Instructions” map to two places in Claude:
User Preferences (Settings → User Preferences): Set your role, communication style, and how you like Claude to respond. This applies across all conversations.
Claude’s Memory: Claude builds memory over time as you interact with it. You can also explicitly tell Claude things to remember (e.g., “Remember that I work in higher ed marketing”) and it will retain that context.
3D: Let Memory Build Naturally
You don’t have to migrate every detail upfront. Claude’s memory system learns your preferences, context, and patterns over time. After a few weeks of regular use, Claude will have rebuilt much of the contextual awareness you had in ChatGPT — often in ways that are more useful because it’s based on how you actually work, not stale history.
Step 4: Organize for the Long Term
Once you’ve migrated the essentials, set yourself up for ongoing success:
One Project per workflow or client — keep contexts separate and focused
Keep knowledge files updated — replace outdated docs as your work evolves
Use conversations within Projects — every conversation in a Project inherits that Project’s knowledge and instructions
Periodically distill insights — when a Project conversation generates something valuable, add it to the Project’s knowledge base
Common Pitfalls to Avoid
Don’t upload raw conversation dumps as knowledge. Distill first. Claude works best with clean, structured context — not 400 MB of raw chat logs.
Don’t try to replicate ChatGPT exactly. Claude has different strengths. Lean into Projects and memory rather than fighting the platform.
Don’t migrate everything at once. Start with your top 3–5 most-used GPTs and build from there.
Don’t skip the consolidation step. Eight 500 KB files merged into one 160 KB knowledge doc is more useful than the originals.
Quick-Start Checklist
Export your data from ChatGPT (Settings → Data Controls → Export)
Unzip and locate conversations.json + any named .json files
Run the title extraction script to see what you have
Identify your top Custom GPTs and high-value conversations
Extract GPT system prompts and paste into Claude Project instructions
Distill important conversations into clean knowledge docs
Upload knowledge docs and files to your Claude Projects
Set your User Preferences and start building memory
Appendix: Title Extraction Script
Save this Python script in the same folder as your conversations.json and run it with python3. No extra libraries needed.
import json, csv, os
from datetime import datetime
with open("conversations.json", "r") as f:
convos = json.load(f)
rows = []
for c in convos:
title = c.get("title", "(untitled)")
t = c.get("create_time", 0)
date = datetime.fromtimestamp(t).strftime("%Y-%m-%d") if t else ""
gpt = "Yes" if c.get("conversation_template_id","").startswith("g-") else ""
msgs = sum(1 for n in c.get("mapping",{}).values()
if n.get("message") and n["message"].get("content",{}).get("parts"))
rows.append([title, date, msgs, gpt])
rows.sort(key=lambda x: x[1], reverse=True)
with open("titles.csv", "w", newline="") as f:
w = csv.writer(f)
w.writerow(["Title","Date","Messages","Custom GPT"])
w.writerows(rows)
print(f"Exported {len(rows)} conversations to titles.csv")
This script requires only Python 3 with no additional packages. It will generate a small CSV file you can open in any spreadsheet app or upload to Claude for analysis.