Your tabs are a mess. One click fixes that.
gTabs uses any LLM to intelligently organize your Chrome tabs into color-coded groups. Review editable suggestions, apply with one click, and undo if needed.
🧩 Chrome Extension · ✅ Manifest V3 · 🧪 195 passing tests · 📦 Zero runtime deps · 🟦 TypeScript
- One-click Organize All — AI groups every tab in your window by topic
- Ungrouped Only mode — only touches tabs not already in a group
- Suggestion-first UX — review and edit before anything is applied
- Undo — instantly restores the previous tab arrangement
- Zero-LLM Fast Routing — routes new tabs into existing groups via domain affinity, no API calls
- Domain rules — hard-wire
github.com → Dev, always, skipping the LLM entirely - Learning from history — stores the past 50 groupings to inform future prompts
- Merge mode — protects existing groups; only organizes new ungrouped tabs
- Duplicate detection — finds tabs with the same URL across your window
- Focus Group — collapses all groups except your current one
- Sort Groups — alphabetically sorts groups by domain
- Clear Groups — ungroup everything in the current window and clear stale suggestion cards
- 7 LLM providers — Groq, Grok (xAI), OpenRouter, Anthropic, OpenAI, Ollama, Chrome Built-in AI
- Free tier friendly — works with Groq (free), OpenRouter (free models), Grok ($25 free credit)
- Test Connection — verify your config before using
- Export / Import — backup all settings, rules, and affinity data
- Cost tracking — token usage and estimated cost per provider
- Auto-pin Web Apps — pins Gmail, Calendar, Jira, Spotify and similar to the left
- Auto-organize — automatically groups tabs when the threshold is reached
- Keyboard shortcuts —
Cmd+Shift+Gto organize,Cmd+Shift+Zto undo
- Go to Releases and download
gtabs-extension.zipfrom the latest release - Unzip it anywhere on your machine
- Open
chrome://extensions - Enable Developer mode (toggle top-right)
- Click Load unpacked → select the unzipped folder
- Pin gTabs to your toolbar
Note
You'll need to repeat steps 3–5 after browser updates if the extension gets disabled. The Chrome Store version updates automatically.
git clone https://github.com/vaddisrinivas/gtabs.git
cd gtabs
npm install
npm run build- Click the gTabs icon → ⚙️ Settings
- Pick a provider:
| Provider | Cost | Setup |
|---|---|---|
| Groq | Free (rate limited) | Get key — no credit card |
| Grok (xAI) | $25 free credit | Get key |
| OpenRouter | Free models available | Get key |
| Ollama | Free (local) | Install — no key needed |
| Chrome AI | Free (local) | Requires Chrome origin trial |
| Anthropic | Paid | Get key |
| OpenAI | Paid | Get key |
- Paste your API key → pick a model → Test
- Return to the popup → ✨ Organize All
User clicks "Organize All"
│
├─ Domain rules applied instantly (no LLM)
│
├─ Remaining tabs sent to LLM with:
│ ├─ Affinity map (github.com → "Dev")
│ ├─ History patterns ("5x grouped SO as Dev")
│ └─ Prompt: "Group these into max N groups, return JSON"
│
├─ Response parsed → editable suggestion cards shown
│
└─ User reviews → Apply → chrome.tabs.group()
└─ History updated, affinity learned, costs tracked
flowchart LR
UI["Popup / Options"] --> BG["Background service worker"]
BG --> ST["chrome.storage"]
BG --> LLM["LLM provider adapter"]
BG --> TG["chrome.tabs + tabGroups"]
ST --> H["History / affinity / undo"]
| File | Role |
|---|---|
background.ts |
Service worker — orchestration, message router, auto-trigger + auto-apply |
popup.ts/html |
Action popup — organize, undo, duplicates, focus, sort, clear groups |
options.ts/html |
Settings page — provider, rules, sliders, export |
llm.ts |
Provider-agnostic LLM client |
grouper.ts |
Prompt builder, JSON parser, domain rules, duplicate detection |
storage.ts |
chrome.storage wrapper — settings, affinity, history, costs |
npm install # install dev deps
npm test # run 195 tests
npm run test:watch # watch mode
npm run build # build → dist/
npm run dev # watch + rebuild on change| Shortcut | Action |
|---|---|
Cmd+Shift+G / Ctrl+Shift+G |
Organize all tabs |
Cmd+Shift+Z / Ctrl+Shift+Z |
Undo last grouping |
PRs welcome. Run npm test before submitting. Zero runtime dependencies — keep it that way.
MIT
