Summarize any web page in one click — powered by LLM, streamed in a new tab.
TabGist is a Chrome extension (Manifest V3) that extracts the current tab's content and generates a concise summary using an LLM of your choice. Click the toolbar icon, and a new tab opens with the summary streamed in real time.
- One-click summarization — Click the toolbar icon on any web page
- Real-time streaming — Summary appears token by token as the LLM generates it
- Dual provider support
- Anthropic — Claude models via the Messages API
- OpenAI-compatible — OpenAI, LM Studio, Ollama, llama.cpp, OpenRouter, Groq, vLLM, and any
/v1/chat/completionsendpoint
- 7 built-in presets — One-click configuration for popular providers
- 8 output languages — Auto (follows page language), Korean, English, Japanese, Chinese, Spanish, French, German
- Dark mode — Follows your system preference
- Connection test — Verify your API settings before use
- Thinking timer — Real-time elapsed timer shown while waiting for the first token
- Stats display — Thinking time, total time, and tokens/second shown after each summary
- Truncation warning — Alert when output is cut off due to max_tokens limit
- Custom system prompt — Override the default prompt to customize output format
max_completion_tokensoption — Support for models that requiremax_completion_tokensinstead ofmax_tokens- Action buttons — Regenerate, copy, open original, close
- Clone this repo
- Open
chrome://extensionsin Chrome - Enable Developer mode (top right)
- Click Load unpacked and select the
TabGistfolder - Click the TabGist icon in the toolbar to get started
- Right-click the TabGist icon → Options (or go to
chrome://extensions→ TabGist → Details → Extension options) - Select a Provider (Anthropic or OpenAI-compatible)
- Enter your API Key (leave empty for local servers like LM Studio / Ollama)
- Adjust Base URL, Model, Max Tokens, and System Prompt as needed — or use the preset dropdown
- (Optional) Enable Use
max_completion_tokensfor models that require it (e.g. o1, o3, gpt-5.4-nono) - Click Test Connection to verify
- Click Save
- Navigate to any web page (article, blog, wiki, etc.)
- Click the TabGist toolbar icon
- A new tab opens showing:
- Analyzing page... while content is extracted
- Generating summary... while waiting for the first token
- Streaming summary with a typing cursor
- Real-time timer while waiting for the first token
- Stats at the bottom when complete
- Warning if output was truncated
- Use the action buttons to regenerate, copy, open the original, or close
| Preset | Base URL | Default Model |
|---|---|---|
| Anthropic | https://api.anthropic.com |
claude-sonnet-4-6 |
| OpenAI | https://api.openai.com/v1 |
gpt-4o-mini |
| Z.AI | https://api.z.ai/api/paas/v4 |
glm-5.1 |
| LM Studio | http://localhost:1234/v1 |
— |
| llama.cpp server | http://localhost:8080/v1 |
— |
| Ollama | http://localhost:11434/v1 |
— |
| OpenRouter | https://openrouter.ai/api/v1 |
— |
| Setting | Behavior |
|---|---|
| Auto | Summarize in the same language as the source page |
| Specific language | Translate and summarize in the chosen language regardless of source |
TabGist/
├── manifest.json # Manifest V3 config
├── background.js # Service worker (orchestration)
├── content.js # Readability-based content extraction
├── providers/
│ ├── index.js # Common interface + language-aware prompts
│ ├── anthropic.js # Anthropic Messages API + SSE
│ └── openai.js # OpenAI-compatible /chat/completions + SSE
├── lib/
│ └── Readability.js # Mozilla Readability (vendored)
├── summary/
│ ├── summary.html # Summary result page
│ ├── summary.js # Streaming renderer + stats
│ └── summary.css # Styles with dark mode
├── options/
│ ├── options.html # Settings page
│ ├── options.js # Settings logic + presets + test
│ └── options.css # Settings styles
└── icons/ # 16/48/128 PNG icons
- Vanilla JavaScript (no build step, no framework)
- Mozilla Readability.js for content extraction
- CSS with custom properties (dark mode via
prefers-color-scheme) - Chrome Extension Manifest V3
chrome://,file://, and other restricted pages cannot be summarized- Pages with very little text content (< 50 characters) will show an error
- API keys are stored in
chrome.storage.local; other settings inchrome.storage.sync - Max Tokens default is 2048 — increase in settings if summaries are truncated
- A truncation warning will appear automatically when the output reaches the token limit
MIT