Chrome tab manager that snapshots and restores your tabs — including tab groups, pinned tabs, and incognito tabs.
Too many tabs open? SnapTabs saves your entire browser session with one click so you can close everything and restore it later. Unlike other tab managers, SnapTabs preserves tab group names and colors, captures incognito tabs, and supports live recording of browsing sessions.
Alt+Shift+S to snapshot all tabs instantly| Main View | Session Detail | Settings |
|---|---|---|
Install SnapTabs from the Chrome Web Store
git clone https://github.com/threatner/SnapTabs.git
cd snaptabs
npm install
npm run build
Then load the extension in Chrome:
chrome://extensions.output/chrome-mv3 directorynpm run dev # Start dev server with hot reload
npm run build # Production build
npm run zip # Package for distribution
npm test # Run unit tests
npm run test:watch # Run unit tests in watch mode
npm run test:coverage # Run unit tests with coverage
npm run test:e2e # Run E2E tests (requires build first)
npm run test:e2e:debug # Run E2E tests in debug mode
Popup (Svelte UI) ──sendMessage──► Background (Service Worker)
│
Chrome APIs
(tabs, windows,
storage, tabGroups)
All tab-creating operations go through the background service worker. The popup sends messages and receives responses — it never calls chrome.tabs.create() directly, because the popup closes the instant Chrome creates or focuses a tab.
Data is stored locally using chrome.storage.local (persistent) and chrome.storage.session (ephemeral). Nothing is sent to external servers.
src/
├── assets/ # SVG icon source
├── components/ # Svelte UI components
├── entrypoints/
│ ├── background.ts # Service worker (message handler, events)
│ └── popup/ # Extension popup (Svelte app)
├── lib/
│ ├── types.ts # Interfaces, constants, helpers
│ ├── storage.ts # Chrome storage CRUD
│ └── tabs.ts # Tab capture/restore logic
└── public/
└── icon/ # Extension icons (16, 32, 48, 128 PNG)
tests/ # Unit tests (Vitest)
├── setup.ts # Chrome API mocks
├── types.test.ts
├── storage.test.ts
└── tabs.test.ts
e2e/ # E2E tests (Playwright)
├── playwright.config.ts
├── fixtures/ # Browser + extension launch fixture
├── helpers/ # Storage seeding utilities
└── tests/ # Test specs (9 files, 54 tests)
| Permission | Why |
|---|---|
tabs |
Query and create tabs for snapshot and restore |
tabGroups |
Read and recreate tab group names, colors, and state |
storage |
Persist sessions and settings locally |
contextMenus |
Right-click "Save all tabs" option |
See CONTRIBUTING.md.
SnapTabs stores all data locally on your device. No data is sent to external servers. See PRIVACY.md for details.