Stack and organize your browser tabs like a kebab skewer.
Website · User Guide · Changelog · Privacy Policy · Terms of Service · Report Issue
TabKebab is a Chrome side-panel extension that tames tab chaos. Group, stash, sleep, and restore tabs across windows — manually or with AI. Zero dependencies, zero telemetry, everything stays local unless you opt in.
- Live tab list with favicon, title, URL, and active/discarded status
- Sub-views: All Tabs, By Domain, By Chrome Group, and a unified Groups editor
- Drag-and-drop tab reordering within and across groups
- Close, pin, discard, or move individual tabs from the side panel
- Tab count badges per window with color-coded thresholds (green / yellow / red)
- Duplicate detection with badge counter, periodic background scanning (every 60s), and bulk close with undo
- Empty pages cleanup — find and close blank tabs (about:blank, new tab pages) from the Duplicates view
- Global stats bar — always-visible bar showing Windows, Tabs, and Active/Kebab percentage
- Domain grouping — one-click to group all tabs by domain into Chrome native tab groups
- AI smart grouping — understands context (research, shopping, work, entertainment) and creates meaningful groups
- 4-phase pipeline: Snapshot → Solver → Planner → Executor with live progress per phase
- Custom groups — create, rename, recolor, and manage your own groups with three ways to add tabs: drag-and-drop, text search filter, or URL paste
- Collapsible section headers in the Groups sub-view
- Save full snapshots of every window, tab, and tab group layout
- Saved / Auto tabs — sessions view split into Saved (user-created) and Auto (automatic) sub-tabs for clean separation
- Restore with automatic deduplication — already-open tabs are skipped
- Restore modes: original windows, current window, or single new window
- Pipeline restore for large sessions (20+ tabs): batched creation → load → discard with two-phase progress tracking
- Auto-save on browser start and at configurable intervals (default 24h), with retention policy
- Per-session export as JSON for sharing or backup
- Rename and delete sessions from the panel
- Stash and close tabs by window, Chrome group, domain, or all at once
- Save to IndexedDB — no storage limits
- Lazy restore for large stashes: batched with per-batch discard to avoid overwhelming Chrome
- Two-phase progress bar: "Creating tabs..." then "Loading... X / Y ready" with animated stripe
- Restored badge on stashes already restored, with confirmation before re-restoring
- Favicon previews, source badges, tab count, and one-click restore or delete
- Per-stash export as JSON
- Three bookmark formats: By Windows, By Groups, By Domains
- Multiple destinations: Chrome Bookmarks, Local Storage, Google Drive, or all
- Auto-bookmark on stash — automatically create bookmarks when stashing
- Compressed export — compact JSON to save space on Drive
- HTML bookmark page — browsable, searchable HTML uploaded to Google Drive with:
- Tab navigation (Windows / Groups / Domains)
- Clickable pills for quick-jump to any group
- Live search with highlighted matches
- Dark/light mode support
- Responsive layout
- Discard tabs to free memory while keeping them in the tab strip
- Per-domain keep-awake exceptions — protect email, calendars, AI tools
- AI-assisted classification suggests which domains to protect
- Sleep by domain, group, window, or everything at once
- Auto-kebab idle tabs after configurable hours (default: 3 hours)
- Time-bounded productivity sessions with live countdown timer
- 4 built-in profiles: Coding, Writing, Research, Meeting — each with preset allowed/blocked domains
- Profile-colored HUD — timer display glows in profile color (cyan, purple, green, blue)
- Distraction blocking with three modes:
- Strict Mode — only allowlisted sites accessible
- Curated Categories — block Social, Video, Gaming, News, Shopping, Entertainment
- AI Detection — AI categorizes unknown domains in real-time
- Flexible allowlist — whitelist domains, specific URLs, or entire Chrome tab groups
- Tab actions on start — Kebab, Stash, Group, or monitor-only
- Session reports — stats on duration, distractions blocked, focus tabs
- Focus history — review your last 50 sessions
- Preferences saved per profile — your category selections and settings remembered
- Keyboard shortcut — press
Fto start Focus Mode
- Multi-line textarea command bar with provider label showing the active AI model
- Type commands like "close YouTube tabs", "find my GitHub tabs", "group by project"
- AI interprets intent and executes tab operations
- Works with any configured AI provider
- 1–4 — switch between Windows, Tabs, Stash, and Sessions views
- F — start Focus Mode
- / — focus the AI command bar
- ? — toggle the help overlay
- Esc — close overlays, unfocus inputs, or dismiss settings
- Profile-scoped — each Chrome profile gets its own folder
- Folder structure:
TabKebab / {profile} / sessions, stashes, bookmarks, archive - Manual or automatic sync at configurable intervals
- Retention policy with auto-cleanup of old files
- Archive before overwrite — previous versions saved before updating
- Cross-profile settings import from other profiles on the same Google account
- HTML bookmark export alongside JSON
- OpenAI — GPT-4.1, GPT-5, o4-mini
- Anthropic Claude — Haiku, Sonnet, Opus
- Google Gemini — 2.5 Flash/Pro, 3.0 preview
- Chrome Built-in AI — Gemini Nano, on-device, no API key needed
- Custom endpoint — any OpenAI-compatible API (Ollama, LM Studio, Groq, Together AI)
- Encrypted API key storage with AES-GCM 256-bit and optional passphrase
- Response caching — LRU cache (200 entries, 24h expiry) to avoid redundant calls
- Request queue with concurrency control
- Full export/import of all data: sessions, stashes, groups, settings
- Individual exports for sessions and stashes
- Google Drive backup with subfolder organization
- JSON format throughout — human-readable, version-controllable
- Default view selection (Tabs, Windows, Stash, Sessions)
- Theme (System, Light, Dark)
- Tab count thresholds — configurable yellow/red warning levels
- Automation — auto-save interval, retention, auto-kebab, auto-stash
- Bookmark configuration — formats, destinations, compression, HTML export
- Drive sync — connection, auto-export toggles, sync interval, retention
- Keep-awake domains — manage the protected domain list
- Manifest V3 with ES modules throughout
- Side panel UI — zero external dependencies
- IndexedDB for stash storage (no size limits)
- Chrome APIs: tabs, tabGroups, windows, bookmarks, storage, identity, alarms, sidePanel
- Google Drive REST v3 with OAuth2 (
drive.filescope) - 4-phase grouping engine: snapshot → solver → planner → executor
- Adaptive batched operations — lazy mode for 20+ tabs (5/batch with delay and per-batch discard)
- AES-GCM 256-bit encryption for API keys with PBKDF2 key derivation
- Clone this repo:
git clone https://github.com/michelabboud/tabkebab-chrome-ext.git - Open
chrome://extensionsand enable Developer Mode - Click Load unpacked and select the cloned folder
- Click the TabKebab icon or pin it to open the side panel
See Google Drive Setup Guide for OAuth configuration.
- Open Settings in the side panel
- Scroll to the AI section (visible after connecting a provider)
- Select a provider, enter your API key, and choose a model
- The AI command bar and smart grouping features will activate
TabKebab/
manifest.json # Extension manifest (MV3)
service-worker.js # Background service worker & message hub
icons/ # Logo and icon assets (SVG + PNG)
core/
tabs-api.js # Chrome tabs/windows API wrapper
sessions.js # Session save/restore with v1→v2 migration
stash-db.js # IndexedDB stash storage
grouping.js # 4-phase grouping orchestrator
duplicates.js # Duplicate tab detection + empty pages
focus.js # Focus Mode engine: state, timer, blocking
focus-profiles.js # Built-in focus profiles
focus-blocklists.js # Curated distraction blocklists
nl-executor.js # Natural language command execution
settings.js # Settings schema and CRUD
storage.js # Storage abstraction layer
export-import.js # Full data export/import
drive-client.js # Google Drive REST API client
ai/ # AI provider abstraction
ai-client.js # Unified AI client
provider.js # Base provider class
provider-openai.js # OpenAI provider
provider-claude.js # Anthropic Claude provider
provider-gemini.js # Google Gemini provider
provider-chrome.js # Chrome Built-in AI provider
provider-custom.js # Custom endpoint provider
crypto.js # API key encryption
cache.js # Response LRU cache
queue.js # Request queue
prompts.js # AI prompt templates
engine/ # 4-phase grouping engine
snapshot.js # Phase 1: Capture tab state
solver.js # Phase 2: Domain-based solving
solver-ai.js # Phase 2 alt: AI-based solving
planner.js # Phase 3: Plan Chrome operations
executor.js # Phase 4: Execute tab moves/groups
types.js # Shared type definitions
sidepanel/
panel.html # Main side panel UI
panel.css # Styles
panel.js # View controller & navigation
components/
tab-list.js # Tab list + grouping controls
window-list.js # Windows view
session-manager.js # Sessions view
stash-list.js # Stash view
group-editor.js # Groups sub-view & editor
duplicate-finder.js # Duplicate detection UI + empty pages
focus-panel.js # Focus Mode UI: setup, timer, report, history
command-bar.js # AI command bar
drive-sync.js # Drive sync controls
settings-manager.js # Settings UI bindings
ai-settings.js # AI provider settings
confirm-dialog.js # Confirmation dialogs
toast.js # Toast notifications
Created by Michel Abboud.
This project was built with the assistance of AI (Claude by Anthropic). In the spirit of full transparency: architecture decisions, code implementation, icon/logo design, documentation, and commit messages were produced through human-AI collaboration. Every line of code was reviewed and approved by the author.
See LICENSE for details.