A Chrome extension that limits duplicate tabs per website and tracks your browsing time to help you stay focused.
- Set a max number of tabs per domain — duplicates are silently closed
- Cooldown Timer — Increasing a limit requires a 15-minute cooldown to prevent impulsive changes. Decreasing is instant
- Input Validation — Auto-cleans URLs (strips
https://,www., paths) and rejects invalid domains - Quick Add Presets — One-click add for ChatGPT and Claude
- Records active browsing time per website per day
- Idle Detection — Pauses tracking after 3 minutes of inactivity, resumes automatically
- Internal Page Filtering — Ignores
chrome://,chrome-extension://, and other browser pages - 90-Day Retention — Automatically cleans up data older than 3 months
- Time by Site — Bar chart showing top 15 sites by time spent
- Timeline — Color-coded visualization of your browsing activity across the day
- Stats Cards — Total active time, sites visited, and top site at a glance
- Date Navigation — Browse historical data day by day
- Hidden Domains — Hide irrelevant sites from stats (e.g. new tab page). Add manually or click "x" on any bar. Total active time still counts hidden domains so it reflects real screen time
- Device Labeling — Name each device (e.g. "Work Laptop", "Home Desktop") in Settings
- Device Filter — Dashboard dropdown to view data from a specific device or all devices combined
- Data from each device stays separate — no accidental merging
- Sync tracking data between computers using a private GitHub Gist
- Auto-Sync — Automatically syncs every 30 minutes when credentials are configured
- Also syncs on extension startup
- Manual sync available via the Dashboard "Sync" button
- Token and Gist ID fields are masked by default with show/hide toggles
- Download or clone this repository
- Open Chrome and go to
chrome://extensions/ - Enable Developer mode (top right toggle)
- Click Load unpacked and select the project folder
- Pin FocusTab to your toolbar for quick access
- Click the FocusTab icon in your toolbar
- Type a domain (e.g.
chatgpt.com) and click Add, or use the quick-add presets - Each site defaults to max 1 tab
- Use + / - to adjust — increasing has a 15-minute cooldown
- Click Dashboard in the popup
- View time-per-site charts and daily timeline
- Navigate between days using the arrows or date picker
- Click x on any site bar to hide it from stats
- Use the device filter dropdown to switch between devices
- Go to Dashboard > Settings
- Enter a Device Name (e.g. "Work Laptop")
- Create a GitHub Personal Access Token with only the
gistscope - Paste the token and click Save
- Click Sync on the Dashboard — a Gist ID is auto-generated on first sync
- On another computer: install the extension, enter the same token and Gist ID, then sync
| Permission | Purpose |
|---|---|
tabs |
Monitor tab URLs for limiting and time tracking |
storage |
Store settings, tracking data, and sync credentials locally |
idle |
Detect user inactivity to pause time tracking |
https://api.github.com/* |
Sync data via GitHub Gist API |
├── manifest.json # Extension configuration
├── background.js # Service worker: tab limiting, time tracking, sync, idle detection
├── popup.html/js/css # Toolbar popup: manage restricted domains
├── dashboard.html/js/css # Full-page dashboard: stats, charts, timeline, sync
├── settings.html/js/css # Settings page: device name, GitHub token, Gist ID
└── icons/ # Extension icons (16, 48, 128px)