•
7 min read

ChatGPT-EX

Table of Contents

πŸ‘‹ Introduction

ChatGPT-EX is an Electron wrapper for ChatGPT that runs ChatGPT in its own desktop window instead of a browser tab. It is a fork of jfscoertzen/ChatGPT-client.

ChatGPT-EX is partially vibe-coded with OpenCode: OpenAI GPT-5.5 πŸ€–

The goal is simple: keep the official ChatGPT web experience, but add the desktop behavior I want day to day: quick refresh, a tray icon, local exports, print support and a few quality-of-life controls around the app window.

The original unofficial ChatGPT-client application was made only for Linux, because of the lack of an official ChatGPT app.

More information is available on a blog post of the author: ChatGPT Desktop Client for Linux

I liked the idea also for Windows, so I added a Windows build, even though an official ChatGPT app already exists.

The application loads https://chatgpt.com directly. Prints, Markdown and PDF exports are generated from the conversation that is already rendered in the window, then saved locally through Electron. No extra OpenAI API calls are made for exporting or printing.

This project is currently built with Electron 43 and packaged with electron-builder.

❗ Build Requirements

  • Node.js 24
  • npm is used for dependency management.
  • Linux builds produce AppImage and Debian packages.
  • Windows builds produce an NSIS installer and a portable executable.
npm install
npm start

Build packages with:

npm run build:linux
npm run build:win

✨ Features

  • Dedicated desktop window - ChatGPT opens as a standalone Electron app.
  • Bottom-right action buttons - Refresh, Print, Markdown export, and PDF export are available inside the app window in a compact 2x2 layout.
  • Local Markdown export - Saves the currently rendered chat as chatgpt-export-YYYY-MM-DDTHH-MM-SS.md.
  • Local HTML export - Saves the currently rendered chat as chatgpt-export-YYYY-MM-DDTHH-MM-SS.html.
  • Local PDF export - Saves the currently rendered chat as chatgpt-export-YYYY-MM-DDTHH-MM-SS.pdf using Electron’s local printToPDF support.
  • Print - Prints the currently rendered chat.
  • Export preferences - Choose a default export folder, toggle timestamps, toggle User/Assistant role headings, choose PDF page size, and optionally save exports without a dialog.
  • Export/print notifications - Shows a temporary in-window confirmation after successful Markdown export, PDF export, or print.
  • Drag-and-drop uploads - Drop images/files into the app window to add them to the ChatGPT prompt.
  • Compatibility Mode - Optional Chrome-like user agent mode for site compatibility, with platform-specific Windows and Linux user agents.
  • Voice/Microphone privacy setting - Microphone/recording access is disabled by default and can be enabled from the tray settings.
  • System tray integration - Closing the window can hide it to the tray instead of quitting the app.
  • Tray settings - Toggle close-to-tray, start minimized, always-on-top behavior, Compatibility Mode, and Voice/Microphone Access.
  • Browsing-data cleanup - Clear cookies, cache, local storage, IndexedDB, and service worker data from the tray menu.
  • Native edit context menu - Right-click for cut, copy, paste, and select all.
  • F5 reload shortcut - Reload ChatGPT without leaving the app.
  • Spell checking disabled - Prevents the embedded browser spellchecker from interfering with typing.
  • Developer Tools - tray action or F12 toggles Chromium DevTools in a detached window.
  • Remember Window Size and Position - restore the last normal window bounds.

πŸ–ΌοΈ Screenshot

ChatGPT-EX Screenshot

πŸ“ Changes

v1.7.0
- Added "File > Select Messages..." to export or print selected messages instead of the full rendered conversation.
- Selecting a user message also selects its following assistant reply. Either can be deselected individually for prompt-only or answer-only exports.
- Added Select All, Clear, Done, Edit Selection, and Cancel controls. Done retains the selection; Cancel or switching chats restores full-conversation exports.
- Message selection checkboxes appear above the chat content and scroll naturally with their messages without covering the text.
- Selected messages are exported in conversation order across Markdown, HTML, PDF, and print. Selection is temporary and applies to currently rendered messages.
- Updated Electron to "43.7.9".

v1.6.0
- Restored Markdown, HTML, PDF, and print exports after changes to ChatGPT's conversation markup, including assistant replies.
- Exports now use the currently displayed chat after switching conversations without reloading the page.
- Removed non-message labels such as β€œChatGPT said:” from exports and preserved paragraph breaks in replies.
- Fixed multiline code blocks in Markdown exports by using proper fenced code blocks instead of inline backticks. Code containing backticks is handled correctly in HTML, PDF, and print output too.

v1.5.0
- Added a native menu bar with File, Settings, View, and Help menus.
- Moved application and export preferences from the nested tray menu to the Settings menu.
- Added File menu history controls: Back "Alt+Left" and Forward "Alt+Right".
- Added an updated application screenshot to the documentation.
- Restricted in-app navigation to ChatGPT, OpenAI authentication, and official Google, Microsoft, and Apple sign-in pages.
- Opens other links in the default browser while preserving approved ChatGPT and identity-provider popup flows in ChatGPT-EX.

v1.4.0
- Exports and print jobs now use the active ChatGPT conversation title.
- Added "Settings > Remember Window Size and Position" to restore the last normal window bounds. The setting is off by default and ignores saved positions outside connected displays.
- ChatGPT links that request a new tab, including "Branch in a new chat", now stay in ChatGPT-EX.
- Preserved line breaks in code blocks across Markdown, HTML, PDF, and print exports.
- External destinations opened from ChatGPT continue to use the default browser.
- Updated and pinned Electron to "43.1.0".
- Updated packaged desktop metadata for Linux.

πŸ“₯ Downloads

Windows

Linux

πŸ’» Source

πŸ›οΈ License

MIT License

Copyright (c) 2026 Stephan Coertzen
Copyright (c) 2026 BrainByteZ

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Profile Picture
Comments πŸ’¬