A Manifest V3 Chrome extension for Arc (and other Chromium browsers) that discards inactive tabs from memory. Fixes the problem of Arc keeping dozens of tabs rendered and eating RAM.
Supported on any OS, on any Chromium-based browser — Arc, Chrome, Edge, Brave, etc. It's a plain Chromium extension with no platform-specific code; written with the macOS Arc use case in mind, but nothing ties it to that platform or browser.
Implemented, not yet published (and doesn't need to be — see below).
Works the same way in any Chromium-based browser — just swap the address for your browser's extensions page:
| Browser | Extensions page |
|---|---|
| Arc | arc://extensions |
| Chrome | chrome://extensions |
| Edge | edge://extensions |
| Brave | brave://extensions |
- Open that page.
- Toggle on Developer Mode (top right).
- Click Load Unpacked and select this
glutton/folder. - The extension appears in the list; click its Details → Extension options to open the settings page.
No Chrome Web Store account, review, or fee is needed — "Load Unpacked" is a permanent install, not a temporary dev mode. It survives browser restarts and updates as long as this folder stays at the same path. After editing any file, hit the reload icon on the extension's card on the extensions page to pick up the changes.
- Idle timeout — minutes of inactivity before a tab becomes eligible for discard.
- Domain whitelist — tabs on these domains are never discarded.
- Discard pinned tabs — checkbox, off by default. When enabled, pinned tabs are also eligible for discard on the timer.
- Free memory now — button that forces an immediate sweep over all tabs, ignoring the idle timeout (whitelist and the pinned checkbox are still respected).
See docs/ARCHITECTURE.md for how it works internally.
The discard/filter rules and settings parsing live in lib/ as plain
functions with no chrome.* calls, so they run in Node without a browser:
npm test
Uses Node's built-in test runner (node --test) — no dependencies to install.
Manifest V3, chrome.tabs, chrome.alarms, chrome.storage.local. Plain JS,
no build step, no dependencies.