Tab Manager v2
Tab Manager v2 turns crowded browser sessions into a searchable workspace. Find tabs across windows, move matching tabs in bulk, manage native tab groups where supported by the browser, and clean up duplicates without bouncing between browser windows.

Install
Quick Start
- Open Tab Manager v2 from the browser toolbar, or open it in its own tab/window for a larger view.
- Press
/ to search all open tabs, Command+K on macOS or Alt+K on Windows/Linux for the command palette, and ? for shortcut help. > remains a palette alias. These palette shortcuts work only inside Tab Manager.
- Right-click a tab, window header, or group for its actions. Select matching tabs in full view to move, group, close, copy, or export them together.
- Lite popup mode keeps quick search and tab actions. Open full Tab Manager for organization, Settings, and shortcut help.
Why People Use It
- Find open tabs across all windows from one search box, with optional browser history search.
- Move, group, or close matching tabs in bulk instead of handling them one at a time.
- Manage browser-native tab groups directly where supported by the browser, including rename, recolor, collapse, and ungroup actions.
- Clean up duplicate tabs quickly, with an option to ignore URL hashes when checking.
- Stay on the keyboard with shortcuts, the command palette, and built-in shortcut help.
- Tune the interface with theme, tab width, font size, toolbar visibility, URL display, and more.
- Use Firefox container-aware workflows when the browser exposes those APIs.
Useful Shortcuts
| Action |
Shortcut |
| Focus tab search |
/ |
| Open command palette |
Command+K (macOS), Alt+K (Windows/Linux), or > |
| Move focus |
h, j, k, l or arrow keys |
| Select focused tab |
x or Space |
| Open selected tabs in a new window |
Shift+N |
| Create a new tab group from selected tabs |
Alt+Shift+G |
| Toggle theme |
Ctrl+I |
| Open settings |
Ctrl+, |
| Show keyboard shortcut help |
? |
Shortcut behavior can vary slightly by platform and browser. Use the in-app shortcut help for the full list.
What’s New in 3.0
- A dedicated command palette with contextual actions, searchable window/group destinations, and clear recovery when a move fails.
- Right-click menus for tabs, windows, groups, and the full-view workspace, plus a compact dock for selected tabs.
- Beginning/End drop targets on window and group headers, including collapsed groups. Whole-group moves preserve names and colors and stay distinct from merging tabs into another group.
- Selectable tab details with full-value copying, expandable long titles and URLs, and independent Title line limit and URL line limit settings.
- Copy selected titles, URLs, or both; copy CSV, spreadsheet TSV, JSON, or Markdown; and download CSV, TSV, JSON, or Markdown. Selection stays available after copying or exporting.
- One searchable Settings page with sticky section headers and shared live previews. Choose Modern/Classic, theme, contrast, layout, and tab details in one place.
- One Escape resets ordinary search. Opening the palette preserves the search list, scroll, and caller focus. Lite mode stays focused on quick actions, with full-view routes for larger tasks.
Browser Support
| Browser |
Status |
Notes |
| Chrome |
Supported |
Full core workflow, including tab group integration |
| Edge |
Supported |
Chromium-based behavior; feature availability follows exposed browser APIs |
| Firefox |
Supported |
Core workflow plus Firefox-specific container support |
| Safari |
Available for macOS 14+ |
Search, close, reload, pin, copy, export, and settings; see Safari scope below |
Privacy and Permissions
Tab Manager v2 uses browser APIs to read and organize your current tabs, windows, and optional history search results. Its core tab and window management stays in your browser, and the extension does not add analytics or tracking.
tabs: read, move, group, select, and close tabs and windows
storage: save settings and UI state
management: look up installed extension metadata when showing chrome-extension:// tabs
history: support the optional “Include browser history in results” setting
tabGroups: read and manage native tab groups on supported browsers
contextualIdentities and cookies: enable Firefox container-related features
User preferences are stored in browser sync storage when available, with a local storage fallback. See privacy_policy.md for the privacy policy.
FAQ
Does it work with Safari?
Yes. The Safari version is available free from the Mac App Store for macOS 14 or later. Open the installed app, enable Tab Manager v2 in Safari Settings → Extensions for your profile, and allow website access to show titles and URLs.
Safari exposes normal windows in the current profile and active tab groups only. Inactive groups and private windows are excluded. Moving/reordering tabs, editing Safari tab groups, and browsing-history search are unavailable. Search, duplicate cleanup, bulk close/reload/pin, copying, exports, settings, and keyboard navigation are available.
With “Show tab icons” on, Safari loads icons from websites you have allowed. Settings offers “Allow website access” when permission is missing. Unavailable icons use the same neutral placeholder as other browsers. See the Safari setup guide and privacy policy.
Does it work with browser tab groups?
Yes, where supported by the browser. Tab Manager v2 lets you manage native tab groups directly without leaving the extension.
Can I rename windows?
Custom window names would only exist inside this extension and would duplicate browser-native grouping features. The current window title area is kept focused on window activation and summary, while labels belong to browser tab groups. If you want named buckets of tabs, use built-in tab groups and rename them from Tab Manager v2 where supported by the browser.
Where are my settings stored?
Settings are stored in browser sync storage when the browser supports it. If sync storage is unavailable, Tab Manager v2 falls back to local storage so the extension still works.
Do all features work the same way in every browser?
No. Core tab actions work across Chrome, Edge, Firefox, and Safari for macOS, but some features depend on browser-specific APIs. Examples include Firefox containers and browser tab groups.
Development
Prerequisites
Install dependencies
pnpm install
Run the extension in development mode
pnpm start
This writes unpacked extension builds to:
packages/extension/build/build_chrome
packages/extension/build/build_firefox
Load the appropriate folder as an unpacked extension in your target browser.
Try the website demo locally
pnpm dev:demo
Open http://127.0.0.1:3002/demo/ for the interactive demo, or
http://127.0.0.1:3002/ for the current website. Set DEMO_PORT to use a different port.
For access from other devices on your local network, run
DEMO_HOST=0.0.0.0 pnpm dev:demo and use your computer’s LAN IP address.
The demo reuses the real extension UI with an isolated in-memory browser adapter.
Sample tabs, groups, and history stay in memory; refresh, workspace changes, or
Start over restore the sample data. Demo configuration stays in this browser
tab’s session storage across refresh, navigation, and workspace changes.
Start over also resets demo configuration. The demo has its own theme, saved with
its session settings. Website theme and language stay in local storage. The grouped workspace picker offers 13 cases:
everyday use, duplicates, mixed tab states, many or uneven windows, many/few/no
groups, a crowded workspace, a single 240-tab window, one tab, an empty workspace,
and an opt-in 1,500-tab workspace across 50 windows. This last case exercises the
simulated interface, not native browser memory usage. Preset links use
/demo/?scenario=stress (or another preset ID) and survive refresh. No extension
installation is required.
Selected tabs can move to a window’s beginning or end through Window actions,
the command palette, or window-header drop targets. Use a destination tab’s menu
to move before or after it. With focus inside a window card, try
Alt/Option + Shift + ↑/↓ for beginning/end or ←/→ for before/after a focused
tab. Press ? for all shortcuts, including Vim sequences. Whole selected groups
keep their names and colors; moving part of a group detaches those tabs.
pnpm build:demo
The standalone static output is packages/extension/build/build_demo/. It can
be served at /demo/ or another subdirectory. Extension builds stay separate.
Build the main website and demo
pnpm build:site
This builds one deployable website in dist/site/: the marketing pages and
assets from docs/, with the interactive demo at /demo/, the privacy policy
at /privacy/, and help at /support/. All pages share the main page’s header,
navigation, styles, theme, and language controller. Website theme
and language persist when switching pages or resetting a sample workspace;
the embedded extension has its own independent theme and displays its UI in English.
The shared Install link returns to the website’s install buttons.
The content-page HTML templates use a shared-header marker; the site build and
demo dev server render that marker from the main page’s header markup.
Generated bundles stay out of source control. CI builds this folder and uploads
it as the website-preview artifact.
To preview the production build locally:
python3 -m http.server 3002 --bind 0.0.0.0 --directory dist/site
Stop pnpm dev:demo first if it already uses port 3002, or choose another port.
The root vercel.json installs the workspace dependencies (including build
tools), sets the site build command and output folder, and
redirects /demo, /privacy, and /support to their trailing-slash routes so
relative assets resolve correctly. Vercel’s
Root Directory must be the repository root, with framework Other;
a project rooted at docs/ needs that setting changed before deployment.
pnpm can find the root build script from docs/, but Vercel still resolves
the output folder relative to its configured Root Directory.
Building locally does not deploy or publish the site.
Browser activation, reloads, focus, and history are simulated. Firefox
containers and browser toolbar integration require the installed extension.
Copy actions use the clipboard with sample URLs. See the page’s What can I
try? disclosure for the supported workflows.
Run tests
Run the default local test pipeline:
pnpm test
This runs the extension unit tests plus the Chromium Playwright integration suite.
Run only the extension unit tests:
pnpm run test:unit
Run the Chromium Playwright integration suite, including the required Chrome extension build:
pnpm run test:integration
Watch a sped-up end-to-end suite run: Integration test video.
Run the Playwright suite directly against an existing Chrome build:
pnpm run test:integration:run
Run the Firefox-specific coverage used in CI:
pnpm --filter tab-manager-v2 test:firefox
pnpm --filter integration-test-firefox test:firefox
Build production bundles
pnpm build
This outputs packaged browser builds under packages/extension/build/.
Release reports
The website’s Release reports footer link opens /reports/: interactive
release history charts, version comparisons, and typed test/build evidence.
All 19 historical records since v2.6.0 remain byte-for-byte preserved. Report
JSON and the release inventory live in Git; packages and large raw evidence live
on GitHub releases. Every website environment reads committed data at build time,
and browser interactions make no GitHub data requests. Shared links pin captures.
pnpm build:site
pnpm preview:release-media
pnpm performance:preview
The website report preview opens at http://127.0.0.1:8777/reports/; the offline
metrics viewer uses http://127.0.0.1:8780/. See
storage and visualization and the
local release commands. Release preparation is
local, verification/publication runs in CI after approval, and Vercel uses the
existing Git integration. No additional Vercel token or bot release PR is needed.
Repository Layout
packages/extension: main extension source, assets, build scripts, and unit tests
packages/integration_test: Playwright-based integration and visual regression tests
packages/integration_test_firefox: Firefox-specific integration coverage
Release Notes
Thanks
The default favicon is made by Lyolya from Flaticon and is licensed under Creative Commons BY 3.0.
The shared website header keeps appearance at the physical top right. Through
1050 px, its menu opens the existing links and language selector; without that
script the links remain visible. The same header is used by the overview, demo,
support, and privacy routes. Website controls do not change extension behavior.
评论