A free browser extension for Chrome, Edge and Firefox that exports your ChatGPT, Claude, Gemini, DeepSeek, Grok, Perplexity, Copilot, Mistral Le Chat, Meta AI, Kimi, Doubao, Qwen, Qianwen, Yuanbao and Z.ai conversations to PDF, Word, HTML, a long image, Markdown, plain text, JSON, CSV or Excel, images included.
See the codeA free browser extension for Chrome, Edge and Firefox that exports your ChatGPT, Claude, Gemini, DeepSeek, Grok, Perplexity, Copilot, Mistral Le Chat, Meta AI, Kimi, Doubao, Qwen, Qianwen, Yuanbao and Z.ai conversations to PDF, Word, HTML, a long image, Markdown, plain text, JSON, CSV or Excel, images included, so you can keep a copy, share it, cite it, carry it on in another AI, or drop it straight into a GitHub repo, a Notion page or a Google Doc. Everything happens locally, in your browser.
Most ChatGPT export tools scrape the page's DOM. They scroll through the conversation, grab whatever text is currently rendered, and hope nothing gets missed. That approach is fragile: ChatGPT virtualizes long conversations (it only keeps a portion of messages in the DOM at once), so scroll-based scrapers routinely drop messages or get the order wrong, especially on longer chats.
AI Exporter takes a different approach. It talks to the same conversation API that the ChatGPT web app itself uses, paginating through the full message history and reconstructing the actual conversation tree. ChatGPT stores branches (regenerated replies, edited messages) and this walks the correct path through them using each message's parent pointer. The result is a complete, correctly ordered export, no matter how long the conversation is or how many times you regenerated a response.
On claude.ai it works the same way: it asks Claude's own conversation API for the whole conversation, every branch included, and follows the branch you're currently viewing. On gemini.google.com it reads the conversation through the same internal API the Gemini web app uses, ten turns at a time, so long chats come out complete without any scrolling either.
DeepSeek, Grok and Perplexity are read the same way, through each site's own API: DeepSeek's message history and Grok's conversation tree, following the branch and the reply you're looking at, and Perplexity's thread, fifty questions at a time.
Microsoft Copilot, Kimi, Doubao, Qwen, Qianwen (Tongyi), Tencent Yuanbao and Z.ai (GLM) are also read through the API their own web apps use, with the sign-in you already have on the site. Mistral Le Chat and Meta AI have no such API that an extension can use, so there AI Exporter reads the conversation from the page itself: keep the whole chat loaded (scroll to its top once on a very long one) before exporting, and Save many chats isn't offered on those two sites.
chatgpt.com), Claude (claude.ai), Gemini (gemini.google.com), DeepSeek (chat.deepseek.com), Grok (grok.com), Perplexity (www.perplexity.ai), Microsoft Copilot (copilot.microsoft.com), Mistral Le Chat (chat.mistral.ai), Meta AI (www.meta.ai), Kimi (www.kimi.com), Doubao (www.doubao.com), Qwen (chat.qwen.ai), Qianwen (www.qianwen.com), Tencent Yuanbao (yuanbao.tencent.com) and Z.ai (chat.z.ai). AI Exporter runs on these sites and nowhere else, and it only reads a conversation when you export, copy or save it..docx), a single self-contained web page (.html), a long image (.png), Markdown (.md), plain text (.txt), JSON, CSV, or Excel (.xlsx). Word and HTML files keep the code's syntax colors, tables, links, formulas and the chat's images, all inside the one file, and the web page of a longer chat opens with a table of contents of its questions.images/ folder. It's opt-in, see Images.$...$ and $$...$$ in Markdown, which Obsidian, GitHub, Typora and VS Code show as math. Each site's own way of marking math is understood, so a price like "$5" stays a price.time and model fields of their own, and Markdown files get created, updated and models properties for note apps.conversations.json is unpacked, so even an export of several gigabytes of pictures opens.Install it from the Chrome Web Store.
Edge runs Chrome extensions: open the Chrome Web Store page in Edge, click Allow extensions from other stores when Edge asks, then Add to Chrome. To load it from source, follow the Chrome steps below on edge://extensions.
To run the latest code, or to use it in Firefox:
git clone https://github.com/GrantTotinov/AIExporter.git
cd AIExporter
npm install
npm run build:chrome # or: npm run build:firefox
This produces a dist/ folder with the built extension.chrome://extensions, turn on Developer mode (top right corner), click Load unpacked, and select the dist/ folder.about:debugging#/runtime/this-firefox, click Load Temporary Add-on…, and select dist/manifest.json. Firefox removes temporary add-ons when it restarts, so load it again after a restart. If Firefox asks for access to the chat sites (chatgpt.com, claude.ai, gemini.google.com and the rest), allow it; the extension can't read conversations without it.The AI Exporter icon should now show up in your toolbar. If you don't see it, click the extensions button next to the address bar and pin it.
Any time you pull new changes, rebuild and then reload the extension (the reload icon on chrome://extensions, or Reload on about:debugging), and refresh any open chat tabs. The browser doesn't pick up rebuilt files on its own.
Files are named after the site, the conversation, and the date, for example claude-export-trip-ideas-2026-10-02.pdf. To name them another way, pick a style under Settings → Saving files → File names: the chat's title alone, the date and title, or a pattern of your own made of {title}, {site}, {date} and {time}, such as {date} {title}.
Click Settings at the top of the popup. The settings are grouped into Language & appearance, Saving files, Automatic backup, Keyboard shortcuts, Chat contents, PDF documents, GitHub and Notion, and the search box finds any of them by name. Point at the ? next to a setting to see what it does, with a tip. Every change is saved as you make it, and Restore default settings at the bottom of the page puts everything back the way it was after installing.
By default, images are left out and exports are text-only; any text in the same message is kept. To include them, open Settings → Chat contents and turn on Include pictures. After that:
images/ folder together so the image links keep working.Copy to clipboard always stays text-only.
Open Settings → PDF documents to pick the text size, paper size (A4, Letter, or Legal), page direction, and margins, and to turn on page numbers, a table of contents, or a line of your own text on every page (for example "Prepared by Jane Doe").
Turn on Settings → Automatic backup, then pick how often (every hour, day or week), where (your Downloads folder or a GitHub repository) and the file type (a web page, Markdown, plain text, JSON, CSV or Excel).
AI Exporter backup/<site>/, named after the day it began; when the chat goes on, the file is saved again over its old copy. The files are taken off the browser's list of downloads, so a big first backup doesn't fill it. If the browser is set to ask where to save every file, the backup turns itself off and says why: turn that question off in the browser's download settings, or back up to GitHub.AI Exporter can commit an export directly into a repo instead of downloading it to disk.
github.com/login/device. Enter the code there and approve access.exports/ folder at the root of whichever repo you choose. With image bundling enabled, selected images are saved in a ZIP with the Markdown file and its images/ folder. The popup shows whether the repo is public or private, and asks again before saving into a public one.This uses GitHub's OAuth device flow, the same mechanism CLI tools like the GitHub CLI use to sign in. No password or personal access token ever touches the extension, just a short-lived code you type into GitHub's own site. Your access token is stored locally in your browser and never leaves your machine except to talk to api.github.com.
Images aren't copied to Notion: its API only embeds pictures from a public web address.
repo access to create files, since GitHub's Contents API doesn't offer a narrower "just let me write files" scope. If that's more than you're comfortable granting, stick to the local export formats.Bug reports, ideas, and pull requests are welcome. Contributing.md explains how to get started, and contributions are made under the Contributor License Agreement. Everyone taking part in the project is expected to follow the Code of Conduct.
Ha1baraA11
AI Exporter is free and independently maintained. If it's useful to you, starring the repo or buying me a coffee helps keep it going: buymeacoffee.com/granttotinov.
Questions, bugs, or feature requests: open an issue on this repo, or email granttotinov604@gmail.com directly.
AI Exporter is free to use, study, modify, and share for personal and other noncommercial purposes under the PolyForm Noncommercial License 1.0.0. Commercial use, such as selling it, offering a modified version as a paid product or service, or building a competing paid product on it, requires written permission; see NOTICE.md.
The fonts in public/fonts keep their own licenses: DejaVu (see DEJAVU-LICENSE.txt), Droid Sans Fallback (Apache License 2.0, see DROID-NOTICE.txt) and Noto Sans (SIL Open Font License 1.1, see NOTO-LICENSE.txt). Complex scripts are shaped with HarfBuzz (MIT, see public/licenses/HARFBUZZ-LICENSE.txt).
A free browser extension for Chrome, Edge and Firefox that exports your ChatGPT, Claude, Gemini, DeepSeek, Grok, Perplexity, Copilot, Mistral Le Chat, Meta AI, Kimi, Doubao, Qwen, Qianwen, Yuanbao and Z.ai conversations to PDF, Word, HTML, a long image, Markdown, plain text, JSON, CSV or Excel, images included.
See the codeA free browser extension for Chrome, Edge and Firefox that exports your ChatGPT, Claude, Gemini, DeepSeek, Grok, Perplexity, Copilot, Mistral Le Chat, Meta AI, Kimi, Doubao, Qwen, Qianwen, Yuanbao and Z.ai conversations to PDF, Word, HTML, a long image, Markdown, plain text, JSON, CSV or Excel, images included, so you can keep a copy, share it, cite it, carry it on in another AI, or drop it straight into a GitHub repo, a Notion page or a Google Doc. Everything happens locally, in your browser.
Most ChatGPT export tools scrape the page's DOM. They scroll through the conversation, grab whatever text is currently rendered, and hope nothing gets missed. That approach is fragile: ChatGPT virtualizes long conversations (it only keeps a portion of messages in the DOM at once), so scroll-based scrapers routinely drop messages or get the order wrong, especially on longer chats.
AI Exporter takes a different approach. It talks to the same conversation API that the ChatGPT web app itself uses, paginating through the full message history and reconstructing the actual conversation tree. ChatGPT stores branches (regenerated replies, edited messages) and this walks the correct path through them using each message's parent pointer. The result is a complete, correctly ordered export, no matter how long the conversation is or how many times you regenerated a response.
On claude.ai it works the same way: it asks Claude's own conversation API for the whole conversation, every branch included, and follows the branch you're currently viewing. On gemini.google.com it reads the conversation through the same internal API the Gemini web app uses, ten turns at a time, so long chats come out complete without any scrolling either.
DeepSeek, Grok and Perplexity are read the same way, through each site's own API: DeepSeek's message history and Grok's conversation tree, following the branch and the reply you're looking at, and Perplexity's thread, fifty questions at a time.
Microsoft Copilot, Kimi, Doubao, Qwen, Qianwen (Tongyi), Tencent Yuanbao and Z.ai (GLM) are also read through the API their own web apps use, with the sign-in you already have on the site. Mistral Le Chat and Meta AI have no such API that an extension can use, so there AI Exporter reads the conversation from the page itself: keep the whole chat loaded (scroll to its top once on a very long one) before exporting, and Save many chats isn't offered on those two sites.
chatgpt.com), Claude (claude.ai), Gemini (gemini.google.com), DeepSeek (chat.deepseek.com), Grok (grok.com), Perplexity (www.perplexity.ai), Microsoft Copilot (copilot.microsoft.com), Mistral Le Chat (chat.mistral.ai), Meta AI (www.meta.ai), Kimi (www.kimi.com), Doubao (www.doubao.com), Qwen (chat.qwen.ai), Qianwen (www.qianwen.com), Tencent Yuanbao (yuanbao.tencent.com) and Z.ai (chat.z.ai). AI Exporter runs on these sites and nowhere else, and it only reads a conversation when you export, copy or save it..docx), a single self-contained web page (.html), a long image (.png), Markdown (.md), plain text (.txt), JSON, CSV, or Excel (.xlsx). Word and HTML files keep the code's syntax colors, tables, links, formulas and the chat's images, all inside the one file, and the web page of a longer chat opens with a table of contents of its questions.images/ folder. It's opt-in, see Images.$...$ and $$...$$ in Markdown, which Obsidian, GitHub, Typora and VS Code show as math. Each site's own way of marking math is understood, so a price like "$5" stays a price.time and model fields of their own, and Markdown files get created, updated and models properties for note apps.conversations.json is unpacked, so even an export of several gigabytes of pictures opens.Install it from the Chrome Web Store.
Edge runs Chrome extensions: open the Chrome Web Store page in Edge, click Allow extensions from other stores when Edge asks, then Add to Chrome. To load it from source, follow the Chrome steps below on edge://extensions.
To run the latest code, or to use it in Firefox:
git clone https://github.com/GrantTotinov/AIExporter.git
cd AIExporter
npm install
npm run build:chrome # or: npm run build:firefox
This produces a dist/ folder with the built extension.chrome://extensions, turn on Developer mode (top right corner), click Load unpacked, and select the dist/ folder.about:debugging#/runtime/this-firefox, click Load Temporary Add-on…, and select dist/manifest.json. Firefox removes temporary add-ons when it restarts, so load it again after a restart. If Firefox asks for access to the chat sites (chatgpt.com, claude.ai, gemini.google.com and the rest), allow it; the extension can't read conversations without it.The AI Exporter icon should now show up in your toolbar. If you don't see it, click the extensions button next to the address bar and pin it.
Any time you pull new changes, rebuild and then reload the extension (the reload icon on chrome://extensions, or Reload on about:debugging), and refresh any open chat tabs. The browser doesn't pick up rebuilt files on its own.
Files are named after the site, the conversation, and the date, for example claude-export-trip-ideas-2026-10-02.pdf. To name them another way, pick a style under Settings → Saving files → File names: the chat's title alone, the date and title, or a pattern of your own made of {title}, {site}, {date} and {time}, such as {date} {title}.
Click Settings at the top of the popup. The settings are grouped into Language & appearance, Saving files, Automatic backup, Keyboard shortcuts, Chat contents, PDF documents, GitHub and Notion, and the search box finds any of them by name. Point at the ? next to a setting to see what it does, with a tip. Every change is saved as you make it, and Restore default settings at the bottom of the page puts everything back the way it was after installing.
By default, images are left out and exports are text-only; any text in the same message is kept. To include them, open Settings → Chat contents and turn on Include pictures. After that:
images/ folder together so the image links keep working.Copy to clipboard always stays text-only.
Open Settings → PDF documents to pick the text size, paper size (A4, Letter, or Legal), page direction, and margins, and to turn on page numbers, a table of contents, or a line of your own text on every page (for example "Prepared by Jane Doe").
Turn on Settings → Automatic backup, then pick how often (every hour, day or week), where (your Downloads folder or a GitHub repository) and the file type (a web page, Markdown, plain text, JSON, CSV or Excel).
AI Exporter backup/<site>/, named after the day it began; when the chat goes on, the file is saved again over its old copy. The files are taken off the browser's list of downloads, so a big first backup doesn't fill it. If the browser is set to ask where to save every file, the backup turns itself off and says why: turn that question off in the browser's download settings, or back up to GitHub.AI Exporter can commit an export directly into a repo instead of downloading it to disk.
github.com/login/device. Enter the code there and approve access.exports/ folder at the root of whichever repo you choose. With image bundling enabled, selected images are saved in a ZIP with the Markdown file and its images/ folder. The popup shows whether the repo is public or private, and asks again before saving into a public one.This uses GitHub's OAuth device flow, the same mechanism CLI tools like the GitHub CLI use to sign in. No password or personal access token ever touches the extension, just a short-lived code you type into GitHub's own site. Your access token is stored locally in your browser and never leaves your machine except to talk to api.github.com.
Images aren't copied to Notion: its API only embeds pictures from a public web address.
repo access to create files, since GitHub's Contents API doesn't offer a narrower "just let me write files" scope. If that's more than you're comfortable granting, stick to the local export formats.Bug reports, ideas, and pull requests are welcome. Contributing.md explains how to get started, and contributions are made under the Contributor License Agreement. Everyone taking part in the project is expected to follow the Code of Conduct.
Ha1baraA11
AI Exporter is free and independently maintained. If it's useful to you, starring the repo or buying me a coffee helps keep it going: buymeacoffee.com/granttotinov.
Questions, bugs, or feature requests: open an issue on this repo, or email granttotinov604@gmail.com directly.
AI Exporter is free to use, study, modify, and share for personal and other noncommercial purposes under the PolyForm Noncommercial License 1.0.0. Commercial use, such as selling it, offering a modified version as a paid product or service, or building a competing paid product on it, requires written permission; see NOTICE.md.
The fonts in public/fonts keep their own licenses: DejaVu (see DEJAVU-LICENSE.txt), Droid Sans Fallback (Apache License 2.0, see DROID-NOTICE.txt) and Noto Sans (SIL Open Font License 1.1, see NOTO-LICENSE.txt). Complex scripts are shaped with HarfBuzz (MIT, see public/licenses/HARFBUZZ-LICENSE.txt).