# Import ChatGPT chats and other memories

> Move your ChatGPT, Claude, Gemini, Perplexity, Ditto, Obsidian, Joplin, Google Keep, Apple Notes, or Markdown history into Ditto.

---

# Import ChatGPT chats and other memories

Bring the context you already built elsewhere into Ditto. Open **Settings → Import**, choose where the memories should live, select a source, then upload and preview the export before anything is written.

![Ditto's Import settings with the destination memory, source picker, and universal paste workflow](/img/docs/screens/settings-import.svg)

## Before you import

1. Download or prepare the source file using the matching guide below.
2. Open **Settings → Import** in Ditto.
3. Use **Importing into** to choose your main memory or another graph.
4. Select the source that matches the export.
5. Upload the file or choose the folder, then select **Upload & preview**.
6. Review the count and sample before you confirm the import.

Imports run in the background. Re-importing the same export is safe: Ditto uses stable source IDs to skip duplicate memories. The upload limit is **200 MiB**; split larger archives and import them separately.

## Choose your source

| Source in Ditto                                             | What to prepare                                               | Provider instructions                                                                                          |
| ----------------------------------------------------------- | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| [Paste into any LLM](#paste-into-any-llm)                   | Ditto's memory JSON                                           | Works with any assistant                                                                                       |
| [ChatGPT export (.zip)](#chatgpt-export-zip)                | The ZIP from OpenAI                                           | [OpenAI export guide](https://help.openai.com/en/articles/7260999-how-do-i-export-my-data)                     |
| [Claude export (.zip)](#claude-export-zip)                  | The ZIP from Anthropic                                        | [Anthropic export guide](https://support.anthropic.com/en/articles/9450526-how-can-i-export-my-claude-data)    |
| [Gemini (Google Takeout)](#gemini-google-takeout)           | A Google Takeout ZIP with Gemini Apps activity                | [Google Gemini export guide](https://support.google.com/gemini/answer/16920332?hl=en)                          |
| [Perplexity (threads .json)](#perplexity-threads-json)      | Account JSON when available, or sessions exported as Markdown | [Perplexity session export guide](https://www.perplexity.ai/help-center/en/articles/10354769-what-is-a-thread) |
| [Ditto passport](#ditto-passport)                           | A signed `passport.zip`                                       | Export from **Settings → Passport**                                                                            |
| [Obsidian vault (folder)](#obsidian-vault-folder)           | The vault folder or a ZIP of it                               | [Obsidian vault backup guidance](https://help.obsidian.md/Obsidian%20Sync/Security%20and%20privacy)            |
| [Joplin (.jex or folder)](#joplin-jex-or-folder)            | A `.jex` file or Markdown + Front Matter folder               | [Joplin import and export guide](https://joplinapp.org/help/apps/import_export/)                               |
| [Markdown / notes (.zip)](#markdown--notes-zip)             | A folder or ZIP of `.md` and `.txt` files                     | [Notion Markdown export guide](https://www.notion.com/help/export-your-content?slug=export-your-content)       |
| [Google Keep (Google Takeout)](#google-keep-google-takeout) | A Google Takeout ZIP or extracted Keep folder                 | [Google Keep export guide](https://support.google.com/keep/answer/10017039?hl=en)                              |
| [Apple Notes (folder)](#apple-notes-folder)                 | A folder of Markdown exports                                  | [Apple Notes export guide](https://support.apple.com/en-gb/guide/notes/not201900c07/mac)                       |

## ChatGPT export (.zip)

This is the best path for moving your complete personal ChatGPT history.

1. Sign in to ChatGPT on the web.
2. Open your profile menu, then **Settings → Data Controls**.
3. Under **Export Data**, select **Export**, then confirm.
4. Open the email from OpenAI and download the ZIP. The download link expires after 24 hours; OpenAI says the export can take up to seven days to arrive.
5. In Ditto, choose **ChatGPT export (.zip)** and drop the ZIP into the upload area. Do not unzip it first.

![Ditto's Import settings with ChatGPT selected and the export ZIP upload area ready](/img/docs/screens/settings-import-chatgpt.svg)

OpenAI does not provide this account export for logged-out sessions or ChatGPT Business and Enterprise workspaces. See [OpenAI's current eligibility and troubleshooting notes](https://help.openai.com/en/articles/7260999-how-do-i-export-my-data).

## Claude export (.zip)

1. Open Claude on the web or in Claude Desktop. Mobile apps cannot start an export.
2. Select your initials, then **Settings → Privacy → Export data**.
3. Wait for Anthropic's email and download the ZIP while the 24-hour link is active.
4. In Ditto, choose **Claude export (.zip)** and upload the ZIP.

Individual Claude users and Team plan Primary Owners use the Privacy page. Enterprise Primary Owners export organization data from **Settings → Data management**. See [Anthropic's export guide](https://support.anthropic.com/en/articles/9450526-how-can-i-export-my-claude-data).

## Gemini (Google Takeout)

1. Open [Google Takeout](https://takeout.google.com/) with the same Google Account you use for Gemini.
2. Select **Deselect all**.
3. Select **My Activity**, open **All activity data included**, deselect everything in that dialog, then select **Gemini Apps**.
4. Select **Next step**, choose **Export once** and a `.zip` archive, then create the export.
5. Download the archive from Google's email.
6. In Ditto, choose **Gemini (Google Takeout)** and upload the ZIP.

Selecting the separate **Gemini** Takeout product adds Gems data. Chat history lives under **My Activity → Gemini Apps**. Google's [Gemini export guide](https://support.google.com/gemini/answer/16920332?hl=en) explains both selections.

## Perplexity (threads .json)

Perplexity documents exporting an individual session as **Markdown**, PDF, or DOCX, but does not currently document a self-service bulk JSON export for every account.

- If Perplexity gives your account a JSON data export, choose **Perplexity (threads .json)** in Ditto and upload the `.json` or `.zip` file.
- Otherwise, open each session, use **Export → Markdown**, place the `.md` files in one folder, and import that folder with **Markdown / notes (.zip)**.
- For a smaller set of durable facts, use **Paste into any LLM** instead.

See [Perplexity's session guide](https://www.perplexity.ai/help-center/en/articles/10354769-what-is-a-thread) for its current export menu. Avoid giving unknown browser extensions access to private thread history just to create a bulk export.

## Paste into any LLM

Use this when a provider has no export, when you only want the assistant's durable memory of you, or when a source file is not supported.

1. In Ditto, choose **Paste into any LLM**.
2. Select **Copy prompt**.
3. Send the prompt to the other assistant.
4. Paste its JSON reply into Ditto and select **Upload & preview**.

Ditto accepts this shape:

```json
{
  "vendor": "paste",
  "memories": [
    {
      "prompt": "the topic or what I asked",
      "response": "what the assistant knows or how it answered",
      "timestamp": "2026-07-16T12:00:00Z"
    }
  ]
}
```

The timestamp is optional. Ditto also removes a surrounding JSON code fence or a short line of assistant preamble before parsing.

## Ditto passport

Use a passport to move a signed copy of a Ditto graph into another account or graph.

1. In the source Ditto account, open **Settings → Passport**.
2. Choose the graph under **Exporting from**.
3. Select **Download passport.zip**.
4. In the destination account, open **Settings → Import**, choose **Ditto passport**, and upload `passport.zip`.

Keep the archive intact. Its manifest and Ed25519 signature make changes detectable.

## Obsidian vault (folder)

Obsidian vaults already live as local Markdown files, so there is no separate export job.

1. In Obsidian, identify the vault you want to move. A vault is a folder on your computer.
2. In Ditto, choose **Obsidian vault (folder)**, then pick the vault folder. You can also upload a ZIP copy of the vault.
3. Ditto zips folders in your browser, skips the `.obsidian` configuration folder, and preserves frontmatter titles, tags, and wikilinks where possible.

Obsidian's own backup guidance says a vault backup can be as simple as copying or zipping the vault folder. See [Obsidian security and privacy](https://help.obsidian.md/Obsidian%20Sync/Security%20and%20privacy).

## Joplin (.jex or folder)

1. In Joplin Desktop, choose **File → Export all**.
2. Choose **JEX** for a lossless archive, or **Markdown + Front Matter** for a folder of readable Markdown files.
3. In Ditto, choose **Joplin (.jex or folder)**.
4. Drop the `.jex` file, or pick the Markdown export folder.

JEX preserves notes, notebooks, tags, resources, and metadata. Ditto turns notebooks into sessions. See [Joplin's import and export guide](https://joplinapp.org/help/apps/import_export/) and its [Markdown + Front Matter format](https://joplinapp.org/help/dev/spec/interop_with_frontmatter/).

## Markdown / notes (.zip)

Choose this for any folder of `.md` or `.txt` notes, including Logseq graphs, plain-text archives, and Notion Markdown exports.

1. Put the notes into one folder, preserving subfolders if they are meaningful.
2. In Ditto, choose **Markdown / notes (.zip)** and pick the folder, or upload a ZIP of it.

For Notion, open **Settings → General → Export all workspace content**, choose **Markdown & CSV**, and import the downloaded ZIP or its Markdown folder. Ditto reads Markdown and text notes; database-only CSV files are not imported by this source. See [Notion's export guide](https://www.notion.com/help/export-your-content?slug=export-your-content).

## Google Keep (Google Takeout)

1. Open [Google Takeout](https://takeout.google.com/), then select **Deselect all**.
2. Select **Keep**, choose **Next step**, and create a `.zip` export.
3. In Ditto, choose **Google Keep (Google Takeout)** and upload the Takeout ZIP. You can also pick the extracted `Takeout/Keep` folder.

Each Keep note becomes a memory. Google's export includes note text, lists, attachments, colors, pinned or archived state, collaborators, and labels; Ditto imports the supported note content from the JSON files. See [Google's Keep export guide](https://support.google.com/keep/answer/10017039?hl=en).

## Apple Notes (folder)

Apple Notes on current macOS can export individual notes as Markdown.

1. On Mac, open a note and choose **File → Export as → Markdown**.
2. Save the notes you want to move into one folder.
3. In Ditto, choose **Apple Notes (folder)** and pick that folder, or upload a ZIP of it.

Apple does not currently document a bulk Markdown export. Repeat the export for each note you want to import. PDF exports are not accepted by this source. See the [Apple Notes export guide](https://support.apple.com/en-gb/guide/notes/not201900c07/mac).

## What Ditto creates

For conversation exports, Ditto pairs each user and assistant turn into a memory. For note sources, each note becomes a memory. Imported content is searchable in the destination graph and available to agents with access to that graph.

After previewing, confirm the import only if the destination and counts look right. Importing writes a permanent copy into that graph; there is no one-click undo for the whole batch.

## Troubleshooting

- **The ZIP is too large:** split it into archives under 200 MiB and import each one.
- **No notes were found:** folder imports accept `.md` and `.txt`; convert unsupported files first.
- **The provider changed its menu:** use the first-party link beside that source above, then return to **Settings → Import** with the resulting file.
- **You only need a few facts:** use **Paste into any LLM** instead of moving an entire history.
- **You chose the wrong destination:** reset before confirming, switch **Importing into**, and upload again.