Make long ChatGPT conversations feel light again.
A tiny, privacy-first Chrome extension that trims rendering work from long chats
and hides heavy MCP, connector, and tool-call embeds.
Website · Install · Features · Privacy · Contribute
Important
GPT Delagger is an independent, unofficial project. It is not affiliated with or endorsed by OpenAI.
Long ChatGPT threads can become expensive to lay out and repaint. Tool calls can add animated frames, sandboxed apps, status cards, and other UI that stays mounted after you are done with it. GPT Delagger reduces that browser-side work without changing or deleting the conversation stored by ChatGPT.
| Feature | What it changes | |
|---|---|---|
| ⚡ | Lightweight rendering | Uses content-visibility: auto so off-screen messages skip layout and paint work. |
| ✂️ | Reversible chat trimming | Hides old turns so the browser skips their layout and paint, and reveals them on demand. Keep anywhere from 0 to 100 recent turns visible. |
| 🧩 | Heavy embed blocking | Hides MCP apps, connector cards, tool-run UI, failure fallbacks, and image-generation loading frames. |
| 📌 | Keep newest embed | Optional: only the latest tool embed stays visible; when a newer one streams in, they swap before paint. |
| 🎯 | Zap mode | Point at stubborn UI, widen or narrow the selection, and save a reversible custom hide rule. |
| 🏎️ | Instant UI | Removes transitions and smooth scrolling that can make overloaded pages feel slower. |
| 🪶 | Optional blur removal | Disables expensive backdrop blur on weaker GPUs. |
Every optimization can be switched off instantly. Nothing is removed from the page: hidden turns and embeds stay in the DOM and are revealed by dropping an attribute. GPT Delagger does not delete server-side messages.
Important
Up to v1.5.1 the trimmer physically detached old turns from the DOM. ChatGPT is React, and React keeps references to the nodes it rendered — so detaching them could make React throw while reconciling, tearing down the tree and leaving a page that still looked fine but ignored clicks. Since v1.6.0 nothing is detached. See the changelog.
On the included 141-turn offline fixture, GPT Delagger's default settings take 693 of 835 thread elements out of the browser's layout and paint work, leaving 142 rendered.
| State | Turns rendered | Elements rendered |
|---|---|---|
| GPT Delagger off | 141 | 831 |
| Default settings | 26 | 142 |
That is 111 old turns plus the tool embeds hidden — about 83% fewer elements for the browser to lay out and paint. All of them remain in the DOM, where React still owns them and pays its own reconciliation cost, exactly as it does without the extension.
Note
Measured with test/mock.html on v1.6.0, counting elements inside a hidden subtree. This fixture demonstrates how much the browser stops rendering; it is not an FPS or latency claim, and hidden elements still occupy memory.
Note
A Chrome Web Store listing is being prepared but is not published yet. Until it is live, installation requires Chrome or Edge's Developer mode. This manual route is intended for people who are comfortable loading an unpacked extension.
- Download the latest
gpt-delagger-v*.zipfrom Releases. You can compare it with the accompanying.sha256file. - Extract the ZIP to a permanent folder.
- Open
chrome://extensions(oredge://extensions). - Enable Developer mode.
- Choose Load unpacked and select the extracted folder.
- Pin the ⚡ icon and open its control panel from a ChatGPT conversation.
git clone https://github.com/throwingogo-hub/chatgpt-delagger.gitThen load the cloned folder with the same Load unpacked flow above.
When updating an unpacked installation, pull or replace the files, click Reload on chrome://extensions, and reload open ChatGPT tabs. Popup setting changes apply live after the content script is active.
Choose how many recent turns stay visible. Older turns are hidden before paint, so the browser skips their layout and paint while they stay in the page. Show more, Show all, or disabling trimming reveals them again. A value of 0 hides every turn until you reveal some.
The blocker targets known tool UI rather than hiding arbitrary prose. It handles native connector headers, sandboxed app iframes, tool-role messages, compact run-status cards, connector failure UI, separators, and large image-generation loading frames. Completed images and ordinary answers are preserved.
With Keep newest embed on, the most recent tool embed stays on screen while everything older is hidden. When a newer embed streams in, the two swap in the same before-paint pass, so you always see the tool call that is currently relevant without paying to render the rest.
Open the popup and choose Pick an element to hide:
- Hover an element to preview the selection.
- Press ↑ to widen the selection or ↓ to narrow it.
- Click to save the generated selector.
- Press Esc to cancel.
Saved selectors appear under Custom hide rules. Delete a line to restore its matches. The generator refuses selectors that would hide too much of the page.
GPT Delagger has no analytics, no network requests, no remote code, and no external dependencies.
| Access | Why it is needed |
|---|---|
storage |
Syncs your toggles, trim count, and custom hide rules through Chrome. |
chatgpt.com / chat.openai.com |
Runs the local content script only on ChatGPT pages. |
Your conversations never leave the browser through this extension. See SECURITY.md for vulnerability reporting.
This extension targets browser rendering cost: scrolling, repainting, hover effects, and how much of the page must be laid out and painted. Hidden turns stay in the DOM, so they still cost memory and React still reconciles them. Typing may also improve, but ChatGPT's own React state updates still contribute to input latency. For extremely large conversations, a fresh chat remains the most effective reset.
ChatGPT's markup changes regularly. GPT Delagger uses conservative heuristics and regression fixtures, but a site update can temporarily break a detector. If that happens, use Zap mode and open a bug report.
There is no build step and no package install.
node test/logic-smoke.mjsFor an offline visual fixture, open test/mock.html in a browser. It creates a large fake conversation with tool cards and exposes window.__gptdelag for manual checks.
manifest.json Chrome Manifest V3 configuration
content.js Rendering, trimming, blocker, and Zap-mode engine
popup/ Extension control panel
icons/ Extension icons
test/mock.html Offline long-chat fixture
test/logic-smoke.mjs Zero-dependency regression checks
Contributions are welcome. Start with CONTRIBUTING.md, especially if you can provide a minimal DOM fixture for a ChatGPT markup change.
Release tags are packaged automatically. CI runs the zero-dependency smoke suite and checks that the published ZIP contains only the extension runtime files.
If GPT Delagger makes a long conversation usable again, please star the repository. Stars help other people find it. Bug reports, detector fixtures, and small focused pull requests are equally valuable.
MIT © 2026 GPT Delagger contributors.
