See and switch to every open tab across all your Chromium browsers — from one place, in real time.
Install SyncTabs in every Chromium browser you use. The popup instantly shows:
- Your current browser's tabs — all windows, all tabs, with favicons
- Every other browser's tabs — grouped by browser name
- Tabs from closed browsers — their last session is always visible
- One click on any remote tab opens it in your current browser
No account. No subscription. The current release line is local-first and keeps sync on your own machine.
| Feature | Local Mode (default, zero setup) | Sync Mode (with Companion app) |
|---|---|---|
| View & switch your own tabs | ✅ | ✅ |
| Tabs survive browser close | ✅ | ✅ |
| Tabs grouped by window | ✅ | ✅ |
| Active + pinned tab indicators | ✅ | ✅ |
| See tabs from other browsers | ❌ | ✅ |
| Real-time sync across browsers | ❌ | ✅ |
| "Last seen" for offline browsers | ❌ | ✅ |
| Click to open remote tab here | ❌ | ✅ |
From browser stores (recommended — auto-updates)
| Browser | Store |
|---|---|
| Google Chrome | Chrome Web Store (coming soon) |
| Microsoft Edge | Edge Add-ons (coming soon) |
| Brave / Vivaldi / Opera | Use the Chrome Web Store link |
Or sideload manually (no store needed):
- Download this repo → unzip
- Go to
chrome://extensionsin your browser - Enable Developer mode (top-right toggle)
- Click Load unpacked → select the
extension/folder - Pin the SyncTabs icon to your toolbar
Repeat in every browser where you want tabs visible.
The Companion is a lightweight background app (~10 MB). It runs a local WebSocket server on 127.0.0.1 (default port 9234, configurable to another localhost port). It never connects to the internet.
Download from GitHub Releases:
| Platform | File |
|---|---|
| Windows | synctabs-companion-windows-amd64.exe |
| macOS (Apple Silicon) | synctabs-companion-darwin-arm64 |
| macOS (Intel) | synctabs-companion-darwin-amd64 |
| Linux (x64) | synctabs-companion-linux-amd64 |
| Linux (.deb) | synctabs-companion_<version>_amd64.deb |
- Download
synctabs-companion-windows-amd64.exe - Double-click to run — a tray icon appears in your taskbar
- Right-click the tray icon → Start with Windows to auto-start on login
Windows may show a SmartScreen warning on first run (unsigned binary). Click More info → Run anyway.
# Make executable
chmod +x synctabs-companion-darwin-arm64
# Remove quarantine (required for unsigned apps)
xattr -d com.apple.quarantine synctabs-companion-darwin-arm64
# Run
./synctabs-companion-darwin-arm64A tray icon appears in your menu bar. Right-click → Start with Login to auto-start.
# Option A: .deb package (Ubuntu/Debian)
sudo dpkg -i synctabs-companion_<version>_amd64.deb
synctabs-companion &
# Option B: Binary
chmod +x synctabs-companion-linux-amd64
./synctabs-companion-linux-amd64 &If you're working on the extension or companion code, you can run the Node.js development server instead:
Requires Node.js 24 LTS.
# Windows
start-server.bat
# macOS / Linux
./start-server.shThis will:
- Check for Node.js installation
- Install dependencies (
npm install) - Start the server on
localhost:9234
Press Ctrl+C to stop.
Note: The dev server is only for local development. Production builds and release artifacts come from the Go companion app, not from packaged Node binaries.
The extension needs permission to talk to 127.0.0.1:
- Click the SyncTabs icon → open popup
- Click Settings (gear icon)
- Click Grant localhost permission
- Confirm in the browser prompt
The extension auto-detects the Companion within a few seconds. The status dot turns green.
- The extension works in Local Mode on Chromebook.
- Sync Mode is not currently supported as a normal Chromebook install path, because there is no ChromeOS companion build in this repo.
- Some Linux-enabled Chromebooks may be able to run the Linux companion experimentally, but that is not an officially supported setup.
- A Chromebook-friendly sync option is planned for a future release line.
Click the toolbar icon to open it.
- Header — your browser name · connection status dot (🟢 syncing · 🟡 offline/cached · ⚫ local only)
- This Browser — your current windows and tabs (collapsible)
- Remote Browsers — one card per other browser, with online/offline badge + last-seen time
- Click any remote tab to open it here
- Hover a remote tab for a Send Tab button (pushes it to that browser)
Right-click the tray icon for:
| Menu Item | Action |
|---|---|
| Status | Live count of connected browsers |
| Open Data Folder | Browse saved tab data |
| View Logs | Open log file in Notepad |
| Restart Server | Restart the WebSocket server |
| Start with Windows | Toggle auto-start on login |
| Settings... | Note: configure via extension options |
| Quit | Stop the Companion |
Open via gear icon in the popup, or right-click toolbar icon → Options.
- Enable / disable sync
- Server URL (default
ws://127.0.0.1:9234, customizable to another localhost port) - Grant localhost permission
- Test Connection
- Clear cached remote tab data
Browser A (Chrome) SyncTabs Companion Browser B (Edge)
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Extension │◄───WS───│ 127.0.0.1:<port> │───WS───►│ Extension │
│ (background.js)│ │ │ │ (background.js)│
└─────────────────┘ │ tabs.json │ └─────────────────┘
│ (persists last │
Browser C (Brave) │ session even │
┌─────────────────┐ │ when closed) │
│ Extension │◄───WS───│ │
└─────────────────┘ └──────────────────┘
- Each browser extension maintains a WebSocket connection to the Companion
- Tab changes are pushed in real-time to all other connected browsers
- The Companion persists tab data so closed-browser sessions remain visible
- Everything is
127.0.0.1only — nothing leaves your machine - The extension only accepts
ws://127.0.0.1:<port>server URLs for the current release line
| Permission | Why |
|---|---|
tabs |
Read your open tabs to display them |
storage |
Save tab snapshots locally |
alarms |
Periodic heartbeat to stay connected |
http://127.0.0.1/* |
Optional — only when sync is enabled |
Full details: PRIVACY.md
Status dot is grey (LOCAL mode) No Companion running. Install and start it, then grant localhost permission in the extension settings.
Status dot is yellow (offline/cached) Companion was detected before but is not running now. Start the Companion and click Test Connection in settings.
Companion shows SmartScreen warning (Windows) The binary is unsigned. Click More info → Run anyway. The source code is fully public for review.
Extension shows wrong browser name (e.g. "Google Chrome" for Brave) Browser detection uses the user-agent. Some browsers hide their identity. Each browser still has a unique ID and syncs correctly.
Port already in use
Another app is using the selected localhost port. Edit %APPDATA%\SyncTabs\config.json and change the port value. Set the same value in extension Settings → Server URL.
Tabs not updating in real time Chromium service workers can be suspended when idle. The extension reconnects automatically. If tabs seem stale, click the refresh button in the popup.
Can I use this on a Chromebook? The extension works in local-only mode. Cross-browser sync on Chromebook is not officially supported yet because there is no ChromeOS companion build.
The Companion stores data at:
| Platform | Path |
|---|---|
| Windows | %APPDATA%\SyncTabs\data\ |
| macOS | ~/Library/Application Support/SyncTabs/data/ |
| Linux | ~/.local/share/SyncTabs/data/ |
Files:
tabs.json— last known tabs for each browserpending-tabs.json— tabs queued for offline deliverysynctabs-companion.log— application log../config.json— port, log level, data folder, auto-start
Extension-synctabs/
├── extension/ # Browser extension (all browsers)
│ ├── manifest.json
│ ├── background.js # Service worker: tab monitoring + WebSocket
│ ├── popup.html/js/css # Main UI
│ ├── options.html/js # Settings page
│ └── icons/
├── companion/ # Go companion app (replaces old Node.js server)
│ ├── main.go
│ ├── config/ # Config loading + persistence
│ ├── server/ # WebSocket + HTTP server
│ ├── tray/ # System tray icon + menu
│ ├── startup/ # OS auto-start registration
│ └── logger/
├── PRIVACY.md
└── README.md
Requires Go 1.21+.
cd companion
# Windows
GOOS=windows GOARCH=amd64 go build -ldflags "-H windowsgui" -o synctabs-companion-windows-amd64.exe .
# macOS (Apple Silicon)
GOOS=darwin GOARCH=arm64 go build -o synctabs-companion-darwin-arm64 .
# macOS (Intel)
GOOS=darwin GOARCH=amd64 go build -o synctabs-companion-darwin-amd64 .
# Linux
GOOS=linux GOARCH=amd64 go build -o synctabs-companion-linux-amd64 .macOS and Linux builds require CGo and must be compiled on the target OS (or via GitHub Actions).
- Keep the current release line local-first and store-compliant.
- Add stronger localhost companion hardening.
- Explore optional cloud sync and WebRTC relay modes for future releases.
- Add a Chromebook-friendly sync path that does not depend on a native companion install.
MIT — see LICENSE
Developed by Harsh Vasudeva