Cross-browser extension for migrating tabs, groups, and bookmarks between browsers.
Supported Browsers • Features • Installation • Usage • Development
| Browser | Export | Import | Group System |
|---|---|---|---|
| Chrome | Yes | Yes | Tab Groups |
| Edge | Yes | Yes | Tab Groups |
| Brave | Yes | Yes | Tab Groups |
| Opera | Yes | Yes | Workspaces |
| Firefox | Yes | Yes | Tab Groups (139+) |
| Safari | Yes | Yes | Tab Groups |
| Vivaldi | Yes | Limited | Tab Stacks |
- Universal Export: Export tabs, groups, and bookmarks to a browser-agnostic JSON format
- Universal Import: Import JSON with automatic browser-specific mapping
- Granular Control: Select exactly what to export (Tabs, Groups, Bookmarks)
- Export Filters: Filter by domain, regex, or scope (all windows/current window)
- Smart Mapping: Automatically maps tab groups to workspaces (and vice versa)
- Progress Tracking: Real-time progress bar with cancel support
- Safe Import: Lazy loading and tab discarding to prevent memory/network issues
Tab Groups:
- Groups to Groups (Chrome, Edge, Brave, Firefox)
- Groups to Workspaces (Chrome → Opera)
- Workspaces to Groups (Opera → Chrome)
- Flatten (ignore grouping)
- Windows (each group → new window)
Bookmarks:
- Merge (keep existing, add new)
- Replace (full migration)
- Import to folder (safe backup)
-
Clone this repository:
git clone https://github.com/rennerdo30/chromium-tab-migrator.git
-
Load the extension in your browser:
Chrome/Edge/Brave:
- Go to
chrome://extensions/(oredge://extensions/,brave://extensions/) - Enable "Developer mode"
- Click "Load unpacked"
- Select the
chromium-tab-migratorfolder
Firefox:
- Go to
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on"
- Select the
manifest.jsonfile
Opera:
- Go to
opera://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
chromium-tab-migratorfolder
- Go to
- Click the extension icon in your browser toolbar
- Select what to export: Tabs, Groups, Bookmarks
- Configure optional filters (domains, pinned only, etc.)
- Choose scope: All Windows or Current Window
- Click "Export JSON"
- Save the file
- Click the extension icon
- Switch to "Import" tab
- Select a previously exported JSON file
- Choose your import strategy:
- How to handle groups (map to groups/workspaces/windows)
- How to handle bookmarks (merge/replace/folder)
- Configure options (preserve pinned, skip duplicates, etc.)
- Click "Import"
chromium-tab-migrator/
├── manifest.json # Extension manifest (V3)
├── popup/
│ ├── popup.html # Extension popup UI
│ ├── popup.css # Styles
│ └── popup.js # Popup logic
├── background/
│ └── service-worker.js # Background service worker
├── lib/
│ ├── logger.js # Structured logging
│ ├── browser-detect.js # Browser capability detection
│ ├── exporter.js # Export functionality
│ ├── importer.js # Import orchestrator
│ └── adapters/ # Browser-specific adapters
│ ├── chrome-adapter.js
│ ├── firefox-adapter.js
│ ├── safari-adapter.js
│ ├── opera-adapter.js
│ ├── bookmarks-adapter.js
│ └── fallback-adapter.js
└── icons/
├── logo.svg # Source logo
├── icon-16.png
├── icon-48.png
└── icon-128.png
The extension uses a universal JSON format (v1.0) that captures:
- Source browser and version
- Windows with grouped and ungrouped tabs
- Tab metadata (URL, title, pinned state, favicon)
- Group metadata (title, color, collapsed state)
- Bookmarks (full tree structure)
The extension automatically detects the current browser and its capabilities:
- Tab Groups support
- Workspace support (Opera)
- Color/collapse support
- Available APIs
MIT License - see LICENSE for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request