Exportal
Comparison

How Exportal compares to other chat exporters

Most chat exporters save a conversation to a file. Exportal is a bridge: the exported conversation lands inside your VS Code workspace and is attached to Claude Code as an @-mention, so the point is continuing the conversation rather than archiving it. It also runs in the other direction, sending a Claude Code session back to the web chat.

That is the whole difference, and it is also the whole cost: a plain exporter is one browser extension, Exportal is two pieces that have to be paired. If you only want a saved copy of a chat, a plain exporter is the simpler tool and you should use one.

Capability by capability

What the two kinds of tool actually do, not which one is better.

Capability A typical chat exporter Exportal
Saves the conversation as Markdown Yes Yes
Where the file ends up Your downloads folder Your VS Code workspace, under .exportal/
Attaches the chat to Claude Code No Yes, as an @-mention, with the panel focused
Works editor to web chat as well No Yes, through the clipboard
Imports the official provider export ZIP Usually not Yes, including multi-file exports
Downloads Claude Design project assets No Yes, into a sibling folder
Appears in Claude Code's /resume No Opt-in, and labelled experimental
Redacts secrets before writing Varies On by default, opt-out is explicit
Sends your conversation to a server Varies, check each one Never. Loopback only, no account, no telemetry
Source you can read Varies MIT, the whole repository
Pieces you have to install One browser extension Two: a VS Code extension and a browser companion

"A typical chat exporter" is a generalisation about the category, not a claim about any specific product. Extensions change, so check the current behaviour of whichever one you are comparing against, especially on the two rows that matter for your data: where the conversation is sent, and whether secrets are redacted before anything is written.

The alternatives you are actually choosing between

Other exporters are not the real competition. These three are.

Copying and pasting by hand

Nothing to install, and for a short chat it is the right answer. Two things break quietly as the conversation grows. What you copy off the page is what the page renders, so collapsed thinking blocks and tool calls do not come along. And both claude.ai and ChatGPT truncate a paste over roughly 100K characters without telling you, which means the failure mode on a long conversation is a silent one: the model answers confidently from a conversation that lost its middle.

Claude Code's own Session history

If your conversation started as a Claude Code cloud session on the web, you do not need Exportal at all. Claude Code downloads it itself: Session history, then the Web tab. Anthropic's documentation is explicit about the limit, though: only cloud sessions started with a GitHub repository appear there, it needs a Claude.ai subscription rather than a Console account, and changes are not synced back.

So it covers sessions that were already Claude Code. It does not cover an ordinary chat at claude.ai/chat, a Claude Design project, or anything at all from ChatGPT. That gap is the one Exportal exists for. If your work lives inside cloud sessions with a repo attached, use the native path.

MCP

MCP is the usual answer when someone asks how to bridge claude.ai and Claude Code, and for its own question it is the right one. It gives a model access to tools and data, your repository, a database, an internal API, and both claude.ai and Claude Code can speak it, so both sides reach the same systems.

What MCP does not do is move a conversation. It shares capabilities, not context: an MCP server can let Claude Code read your repo, but it cannot hand it the reasoning you and Claude already did in a web chat. The two solve different problems and nothing stops you from using both.

When you should not use Exportal

The honest list, so you do not install two things to find out:

  • You only want an archive of your chats. The official export from claude.ai or ChatGPT already does that, for free, with everything included. Exportal can read that ZIP, but it is not why it exists.
  • You do not use VS Code. Half of Exportal is a VS Code extension, and the bridge lives inside it. There is a CLI for terminal use, but the one-click flow needs the editor.
  • You do not use Claude Code. Exportal still writes a clean Markdown file you can use with any tool, but the @-mention step, which is the reason for the whole design, does nothing for you.
  • You want automatic two-way sync. Exportal will not do this, by decision rather than by omission: continuous sync would mean a service watching your conversations, and that contradicts the local-first guarantee. You move a conversation when you decide to.
  • You use a provider other than claude.ai or ChatGPT. Those two are what is supported today.

What it costs you

Two extensions instead of one, and a one-time pairing. In exchange, the export button writes into your project instead of your downloads folder.

The pairing exists because the browser extension has to reach VS Code, and the only thing on your machine that can accept that is a local HTTP server inside the extension. It listens on 127.0.0.1 in a fixed port range, every request carries a 256-bit bearer token, and nothing else can talk to it. That is the price of not having a server in the middle: a server would need no pairing, and it would also need your conversations.

The way back, from Claude Code to the web chat, is a clipboard paste that you do yourself. No provider offers a write API, so any tool that claims a fully automatic round trip is either automating the UI or sending your text somewhere. Exportal does neither.

Questions people ask when comparing

Why two extensions instead of one?

A browser extension cannot write to your filesystem, and a VS Code extension cannot see the chat you have open. The bridge is what joins them, and it needs one half on each side. A single extension could only do this by sending the conversation through a server, which is exactly what Exportal is built to avoid.

Does reading the internal API risk my account?

Exportal reads conversations you already have access to, through the same internal endpoints the site's own frontend uses, with the session already in your browser. It does not scrape the DOM, automate the UI, or work around rate limits. The official ZIP import is always available as a path that touches no internal API at all.

Is Exportal an MCP server, or a replacement for one?

Neither. MCP connects a model to tools and data, so claude.ai and Claude Code can reach the same repository or database. Exportal moves the conversation itself into your workspace. They solve different problems and work fine together: MCP shares capabilities, Exportal carries the context you already built.

Can I use it purely as an exporter and ignore the Claude Code part?

Yes. The result is an ordinary Markdown file in your workspace, and the auto-attach step can be turned off with the exportal.autoAttachToClaudeCode setting. You lose the reason the tool was built, but nothing breaks.

What happens to Exportal if a provider changes its internal API?

Responses are parsed defensively and unknown block types are skipped rather than failing the whole import, which is a lesson that cost a full release to learn. If a structural change does break something, the official ZIP import keeps working while it is fixed, because it does not depend on the internal API.

Related