Deutsche Version: README.de.md
Browser extension for exporting conversations from Claude, ChatGPT, Gemini, and Microsoft Copilot β as complete, standalone files that work without an account, without the platform, and without an internet connection.
Version: 1.8.2 Β· Browser: Chrome, Edge
| Platform | URL | Method | Notes |
|---|---|---|---|
| πΆ Claude | claude.ai | API + DOM fallback | Full feature set incl. Artifacts, Thinking, Tool Calls |
| π’ ChatGPT | chatgpt.com | DOM scraping | Text, code, tables β no interactive widgets |
| π΅ Gemini | gemini.google.com | DOM scraping | Text, code, tables |
| πͺ Microsoft Copilot | copilot.microsoft.com | DOM scraping | Text, code, tables |
| πͺ Microsoft Copilot M365 | m365.cloud.microsoft/chat | DOM scraping | Text, code, tables |
Note: Feature coverage varies by platform. Claude uses the official API and delivers structured data including all block types. For ChatGPT, Gemini, and Copilot, content is read from the rendered DOM β meaning text and code are reliably exported, while platform-specific content like Artifacts or interactive elements is not available.
Shared chats are platform-bound and exclude many recipients:
- ChatGPT Enterprise β a shared chat is only accessible to recipients in the same company account.
- Claude β shared chats do not show Artifacts and visual content if the recipient has no Claude account.
The export works for everyone β as a simple HTML, ZIP, Markdown, or PDF file, without an account, without login, independent of the platform.
Chats containing important decisions, code reviews, analyses, or research are preserved as standalone files β regardless of whether the account still exists, the subscription expires, or the platform shuts down.
Not just text: Artifacts (interactive React apps, diagrams, SVGs), generated files, code blocks with syntax highlighting, and tables are fully exported and remain functional in the export.
| Format | Ideal for |
|---|---|
| HTML | Sharing with colleagues, embedding in documentation, fully offline |
| ZIP | All files and Artifacts individually accessible, ready to use |
| Markdown | Obsidian, Notion, Confluence, Git repositories |
| Formal documentation, meetings, archiving |
- Download the ZIP and unpack it
- Open
chrome://extensions(oredge://extensions) - Enable Developer mode (toggle in the top right)
- Click Load unpacked
- Select the unpacked
ai-chat-exporterfolder - The extension icon appears in the toolbar
Important: The folder from which the extension was loaded must not be moved or deleted. Chrome loads the extension files directly from this directory β if it is removed, the extension will stop working and must be reinstalled.
After an update: Click the reload icon on the extensions page so that new context menu entries and permissions take effect.
- Open a chat on a supported platform
- Click the extension icon in the toolbar
- Choose a format: HTML, ZIP, Markdown, or PDF
- Click Export Chat β or Preview & Select for selective export
Right-click on the page β "Chat exportieren":
- Export as HTML
- Export as Markdown
- Export as ZIP
- Export as PDF
- Preview & Selectβ¦
The export starts immediately β no popup needed.
Opens a dedicated tab with the full conversation view:
- Checkboxes per message and per block (text, code, artifact, image, thinking, tool output, etc.)
- Everything selected by default
- Quick selection buttons:
- Select All / Deselect All β all messages and blocks
- Deselect All Prompts β deselect only your own questions
- Deselect Tool Output β deselect thinking, tool calls, web searches, etc.
- Choose format and click Export Selected
| Content type | Claude | ChatGPT | Gemini | Copilot |
|---|---|---|---|---|
| Text with formatting | β | β | β | β |
| Code blocks | β | β | β | β |
| Tables | β | β | β | β |
| Artifacts (React, HTML, SVG) | β interactive | β | β | β |
| Visualizer widgets | β | β | β | β |
| Thinking blocks | β | β | β | β |
| Tool calls / web search | β optional | β | β | β |
| Embedded images | β | β | β | β |
| Generated files | β | β | β | β |
| Timestamps & metadata | β | β | β | β |
The limitations for ChatGPT, Gemini, and Copilot are technical: these platforms do not provide an accessible API for retrieving chat histories, so content is read from the rendered DOM.
All processing happens locally in the browser. No data is sent to the developer, no analytics, no tracking.
These platforms are scraped from the already-rendered DOM β no network requests are made by the extension. The content is read from what the browser has already loaded and is processed entirely in memory.
Claude uses its official API to deliver complete and structured export data (including Artifacts, Thinking blocks, and generated files). This requires the extension to make authenticated requests to claude.ai on your behalf.
What is sent β and where:
All requests go exclusively to claude.ai. No data leaves your browser to any other destination.
| Request | Endpoint | Purpose |
|---|---|---|
| GET | /api/organizations/{orgId}/chat_conversations/{id}?tree=True&rendering_mode=messages&render_all_tools=true |
Fetch the full conversation data |
| GET | /api/bootstrap or /api/organizations |
Determine the organisation ID (only if not already known from an intercepted page request) |
| GET | /api/share/{id} |
Fetch shared conversations (no authentication required) |
| GET | Image URL on claude.ai |
Fetch embedded images as Base64 for self-contained exports (only when "Embed images" option is enabled) |
What is sent with each request:
The requests use the browser's existing session cookies for claude.ai β the same cookies that are sent with every normal page interaction. No additional credentials are read, stored, or forwarded by the extension.
What happens to the data:
claude.ai API β browser memory β local export file (HTML / ZIP / MD / PDF)
The conversation data is fetched into browser memory, converted into the export format, and written to a local file via the browser's download dialog. It is never uploaded, forwarded, or cached outside the current browser session. chrome.storage.session is used only to pass the data to the Preview & Select tab β it is automatically cleared when the browser is closed.
What the extension does not do:
- Does not read, store, or transmit your Claude API key or password
- Does not modify any conversations or send any write requests
- Does not collect usage data or statistics
- Does not load any external scripts or resources into the extension itself (vendor libraries are bundled locally and only embedded inside the sandboxed iframes of exported artifact files)
The extension activates only on the four supported domains and is completely inactive on all other sites.
ai-chat-exporter/
βββ manifest.json v1.8.2, permissions: activeTab, storage,
β downloads, contextMenus
βββ background.js Downloads, context menu, tab opening for PDF
βββ popup.html / popup.js UI, platform detection, export orchestration
βββ popup.css
βββ options.html / options.js Settings page (language selection)
βββ preview.html / preview.js Preview & Select (chrome.storage.session)
β Supports ?autoexport=<format> for direct export
β from the context menu
β
βββ platforms/
β βββ claude/
β β βββ injector.js Page context: fetch patch, org ID, auth API
β β βββ content.js Bridge + API normalisation + DOM fallback
β βββ chatgpt/
β β βββ injector.js Page context: fetch patch, conversation ID capture
β β βββ content.js DOM scraping (CodeMirror, tables as HTML sentinel)
β βββ gemini/
β β βββ content.js DOM scraping (Angular: user-query, model-response)
β βββ copilot/
β βββ content.js DOM scraping (Fluent UI: fai-UserMessage,
β fai-CopilotMessage, scriptor-component-code-block)
β
βββ scripts/
β βββ bundle-vendors.js Node.js generator: reads shared/vendor/* and
β writes shared/vendor.js (run after updating vendors)
β
βββ shared/
βββ i18n.js i18n runtime (en/de), t(), initI18n(), applyI18n()
βββ utils.js escHtml, escAttr, escSrcdoc, safeUrl,
β markdownToHtml, sanitizeFilename, formatFileSize
βββ vendor.js AUTO-GENERATED β bundled vendor libs as JS string
β constants (VENDOR_REACT, VENDOR_MERMAID, etc.)
βββ vendor/ Raw vendor files (source of truth for versions):
β βββ react.production.min.js React v18.2.0
β βββ react-dom.production.min.js ReactDOM v18.2.0
β βββ babel.min.js Babel Standalone v7.23.9
β βββ tailwind.min.css Tailwind CSS v2.2.19
β βββ Recharts.min.js Recharts v2.12.7
β βββ mermaid.min.js Mermaid v10.6.1
β βββ highlight.min.js highlight.js v11.9.0
β βββ highlight-dark.min.css highlight.js dark theme
βββ widget-css.js CSS variables + artifact/visualizer iframe builder
βββ html-template.js Export HTML template with copy button, dark mode,
β syntax highlighting (hljs), Mermaid placeholder
βββ exporters/
βββ html.js HTML & PDF exporter
βββ markdown.js Markdown exporter
βββ zip.js ZIP exporter (2-pass: artifacts, files, images)
- Create
platforms/<name>/content.js - Add to
manifest.jsonundercontent_scriptsandhost_permissions - Add to
background.jsβSUPPORTED_URLS - Add to
popup.jsβdetectPlatform()andplatformLabel() - Add badge mapping in
shared/exporters/html.js
Business Source License 1.1 β free for personal, non-commercial, and internal business use. Converts to Apache 2.0 on 2031-04-04. See LICENSE.md for details.

