Complete tab management in one extension: organize by domain AND remove duplicates with one click each.
- Organize by Domain: Groups tabs by domain automatically
- Organize by Category: Groups tabs by type (Development, Social Media, Shopping, etc.)
- Duplicate Removal: Remove duplicate tabs instantly
- Save to Bookmarks: Save all tabs into bookmark folders organized by group names
- Restore from Bookmarks: Restore tab groups from saved bookmark folders
- Smart Coloring: Each group gets a unique color
- One Click Operations: Simple, fast, no configuration needed
- Handles Special Cases: Groups localhost, private IPs intelligently
- Shows Tab Count: Each group shows how many tabs it contains
- Works Everywhere: Use in any Chrome profile, no debugging needed
-
Open Chrome Extensions Page
- Go to
chrome://extensions/ - Or click the three dots menu β Extensions β Manage Extensions
- Go to
-
Enable Developer Mode
- Toggle the "Developer mode" switch in the top right corner
-
Load the Extension
- Click "Load unpacked"
- Navigate to:
~~/workspace/chrome-tabs/chrome-extension - Click "Select"
-
Pin the Extension (Optional but recommended)
- Click the puzzle piece icon in Chrome's toolbar
- Find "Tab Organizer"
- Click the pin icon to keep it visible
- Click the Tab Organizer extension icon
- Click "Organize by Domain"
- All tabs automatically grouped by domain!
- Click the Tab Organizer extension icon
- Click "Organize by Category"
- All tabs automatically grouped by category (Development, Social Media, Shopping, etc.)!
- Click the Tab Organizer extension icon
- Click "Remove Duplicates"
- All duplicate URLs are removed (keeps the first occurrence)
- Organize your tabs first (by Domain or Category)
- Click the Tab Organizer extension icon
- Click "Save to Bookmarks"
- All tabs saved into bookmark folders matching your group names!
The bookmarks are saved in "Other Bookmarks" under a timestamped folder like "Tab Organizer - 2025-01-15 14:30". Each tab group becomes a folder, and ungrouped tabs go into an "Ungrouped Tabs" folder.
- Click the Tab Organizer extension icon
- Click "Restore from Bookmarks"
- Select a previously saved bookmark folder from the list
- Click "Restore"
- Tabs are restored and grouped automatically!
Smart Restore Features:
- If a group with the same name already exists, new tabs are added to that group
- Duplicate tabs (URLs already open) are automatically skipped
- New groups are created for groups that don't exist yet
- All restored tabs are created in the background (not stealing focus)
Using Existing Bookmark Folders:
The extension looks for bookmark folders in "Other Bookmarks" that start with "Tab Organizer -". To make your existing bookmark folders compatible:
- Move your bookmark folder to "Other Bookmarks"
- Rename the folder to start with "Tab Organizer -" (e.g., "Tab Organizer - My Work Tabs")
- Organize bookmarks inside into subfolders (each subfolder becomes a tab group)
- The subfolder names will be used as tab group names
Example structure:
Other Bookmarks
βββ Tab Organizer - My Work Tabs
βββ Development (15 bookmarks) β Creates "Development" group
βββ Documentation (8 bookmarks) β Creates "Documentation" group
βββ Shopping (5 bookmarks) β Creates "Shopping" group
- Click the Tab Organizer extension icon
- Click "Remove All Groups"
- All groups ungrouped (tabs remain open)
Organize by Domain:
- Scans all tabs in the current window
- Groups them by domain (e.g., github.com, acme.com)
- Creates colored tab groups with domain names and tab counts
- Sorts tabs alphabetically within each group
- Skips domains with only 1 tab (no need to group)
- Skips chrome:// internal pages
Organize by Category:
- Scans all tabs in the current window
- Categorizes tabs based on their domain and URL:
- Development: GitHub, GitLab, Stack Overflow, localhost, IP addresses
- Documentation: Documentation sites, API references, tutorials
- Social Media: Facebook, Twitter, LinkedIn, Reddit, etc.
- Communication: Slack, Discord, Gmail, Zoom, etc.
- Shopping: Amazon, eBay, shopping sites
- Productivity: Google Drive, Notion, Trello, etc.
- News & Media: News sites, Medium, blogs
- Entertainment: YouTube, Netflix, Spotify, etc.
- Finance: Banking, PayPal, crypto sites
- Cloud Services: AWS, Azure, Google Cloud, etc.
- Other: Everything else
- Creates colored tab groups with category names and tab counts
- Sorts tabs alphabetically within each category
- Skips categories with only 1 tab
Remove Duplicates:
- Scans all tabs in the current window
- Tracks URLs that have been seen
- Closes tabs with duplicate URLs (keeps the first one)
- Skips chrome:// internal pages
Save to Bookmarks:
- Scans all tabs in the current window
- Gets all tab groups and their names
- Creates a root bookmark folder with timestamp
- For each tab group:
- Creates a folder with the group name
- Saves all tabs in that group as bookmarks
- Ungrouped tabs are saved in "Ungrouped Tabs" folder
- All bookmarks saved under "Other Bookmarks"
Restore from Bookmarks:
- Lists all "Tab Organizer" bookmark folders
- User selects which folder to restore
- For each bookmark folder in the selected save:
- Checks if a group with that name already exists
- Filters out duplicate URLs (already open tabs)
- Creates new tabs for each bookmark
- If group exists: Adds tabs to existing group
- If group doesn't exist: Creates new group with that name
- All tabs created in background (not stealing focus)
After "Organize by Domain":
github.com (25)- All GitHub tabs in a blue groupacme.com (24)- All acme.com tabs in a red grouplocal-network (7)- All lab IPs (192.168.x.x) in a yellow group
After "Organize by Category":
Development (32)- GitHub, Stack Overflow, localhost tabs in a blue groupDocumentation (18)- All docs sites in a red groupSocial Media (12)- Twitter, LinkedIn, Reddit tabs in a yellow groupShopping (8)- Amazon, eBay tabs in a green group
After "Remove Duplicates":
- "Removed 15 duplicate tabs!" - All duplicate URLs closed
After "Save to Bookmarks":
- Bookmarks saved in "Other Bookmarks" β "Tab Organizer - 2025-01-15 14:30"
- Folder: "github.com (25)" with 25 bookmarks
- Folder: "acme.com (24)" with 24 bookmarks
- Folder: "Ungrouped Tabs" with 12 bookmarks
After "Restore from Bookmarks":
- "Restored 61 tabs! Created 2 new groups. Merged into 1 existing groups. Skipped 5 duplicates."
- Tab groups recreated with the same names as the bookmark folders
- Existing groups have new tabs added to them
- Duplicate tabs are not created
chrome-extension/
βββ src/
β βββ background/ # Service worker and feature logic
β β βββ background.js # Main service worker (message router)
β β βββ organizeTabs.js # Tab grouping logic
β β βββ removeDuplicateTabs.js
β β βββ removeAllGroups.js
β β βββ saveTabsToBookmarks.js
β β βββ restoreFromBookmarks.js
β β βββ *.test.js # Unit tests (colocated with source)
β βββ popup/ # Extension UI
β β βββ popup.html # Popup interface
β β βββ popup.js # Popup interaction logic
β β βββ popup.test.js
β βββ utils/ # Shared utilities
β βββ extractDomain.js
β βββ shouldSkipUrl.js
β βββ extractGroupBaseName.js
β βββ getOtherBookmarksId.js
β βββ getTabOrganizerBookmarkFolders.js
β βββ colorManager.js
β βββ *.test.js # Unit tests
βββ assets/ # Static resources
β βββ icon16.png
β βββ icon48.png
β βββ icon128.png
βββ e2e/ # End-to-end tests
βββ manifest.json # Extension configuration
βββ package.json
βββ README.md
The extension uses modular organization with feature-based directories:
- Location:
src/background/background.js(entry point for manifest.json) - Purpose: Routes messages from popup to appropriate handlers
- Dependencies: Imports feature modules from same directory and
../utils/
Pure business logic modules with Chrome API dependencies:
- organizeTabs.js - Groups tabs by domain or category
- removeDuplicateTabs.js - Closes duplicate URLs
- removeAllGroups.js - Ungroups all tabs
- saveTabsToBookmarks.js - Saves tab groups to bookmarks
- restoreFromBookmarks.js - Restores tabs from saved bookmarks
Each module exports a single async function and is tested with colocated .test.js files.
- popup.html - User interface with buttons and status display
- popup.js - Handles button clicks, sends messages to background worker
- popup.test.js - Tests UI interactions
Pure utility functions with no Chrome API dependencies:
- extractDomain.js - Extracts domain from URLs (handles localhost, IPs)
- shouldSkipUrl.js - Filters chrome://, chrome-extension://, about: URLs
- extractGroupBaseName.js - Extracts group name from grouped tabs
- getOtherBookmarksId.js - Gets the "Other Bookmarks" folder ID
- getTabOrganizerBookmarkFolders.js - Lists saved Tab Organizer bookmark folders
- colorManager.js - Manages tab group colors
Each utility is tested independently with colocated .test.js files.
Tests are colocated with their source files:
- Unit tests for utilities in
src/utils/*.test.js - Unit tests for features in
src/background/*.test.js - UI tests in
src/popup/popup.test.js - End-to-end tests in
e2e/directory
- Make sure Developer Mode is enabled
- Try reloading the extension (click the refresh icon on chrome://extensions/)
- Make sure you have tabs from at least 2 different domains
- Check the extension console for errors (click "service worker" link on chrome://extensions/)
- Edit domain grouping: Modify
extractDomain()insrc/utils/extractDomain.js - Edit category grouping: Modify
categorizeUrl()logic insrc/background/organizeTabs.js - Add new categories: Extend the categorization logic in
src/background/organizeTabs.js
- Go to
chrome://extensions/ - Find "Tab Organizer"
- Click "Remove"