English | 中文
Open-source, privacy-first browser translation extension. Bring your own LLM key. Zero relay, zero telemetry.
Existing translation extensions either lock LLM access behind paywalls, route your text through their servers, or hide the prompts that drive translation quality. BrowserTranslate is the opposite of all three.
- Bring your own key — works with any OpenAI-compatible API: OpenAI, DeepSeek, Moonshot, Groq, SiliconFlow, OpenRouter, local Ollama, LM Studio, vLLM
- Need Anthropic or Gemini? Run any OpenAI-compatible proxy (LiteLLM, OpenRouter, etc.) and point Base URL at it.
- Zero relay — your text goes directly from your browser to the provider you configured. We have no server.
- Zero telemetry — no analytics, no error reporting, no remote logging
- Open prompts — every translation prompt is editable. Tune for academic / casual / technical / your-own-style
- Auto status check on popup open — endpoint + model reachability is pinged automatically and shown as a status indicator
- Selection-based translation with floating icon (or hotkey-only mode)
- Streaming output via Server-Sent Events
- Cloud / Local provider modes — pick a preset (OpenAI, DeepSeek, Moonshot, Zhipu GLM, Qwen, SiliconFlow, OpenRouter, Mistral; China / International endpoints where applicable) or enter a custom OpenAI-compatible endpoint; local servers need no API key
- Remembers each provider's key + model — switching providers restores them, no re-typing
- 4 built-in prompt templates + unlimited custom templates
- Auto status check on popup open (pings endpoint and model availability)
- Dictionary mode — the model automatically decides whether a selection is a word/term to define or text to translate, in one streaming pass; dictionary results show the term's formal translation, pronunciation, part of speech, senses, and an example
- Settings export / import (Settings → Data) — save your config as JSON, import it on another device; API keys excluded by default (opt-in to include them)
- Translation cache (configurable TTL)
- Translation history with search
- Light / dark theme (follows system)
- UI available in 8 languages (Simplified/Traditional Chinese, English, Japanese, Korean, Spanish, French, German); auto-detects browser locale
- Download the latest
.zipfrom Releases - Unzip
- Open
chrome://extensions→ enable Developer mode → "Load unpacked" → select the unzipped folder
Chrome Web Store listing pending.
- Click the extension icon — the popup opens as the quick config panel.
- Choose a provider type:
- Cloud — pick a provider preset (presets auto-fill the Base URL; multi-region providers offer a China / International endpoint choice) or Custom to enter any OpenAI-compatible Base URL, then fill API Key and Model.
- Local — enter your local Base URL (e.g.
http://localhost:11434/v1) and Model. No API key needed.
- Click Apply config to apply. The status indicator auto-pings on popup open and after Apply — green means endpoint and model are reachable.
- Select text on any webpage → click the blue icon (or press Alt+T) → see the translation.
Advanced settings (prompt templates, history, theme, UI language) live in the full settings page — accessible via the ⚙ icon at the top-right of the popup.
pnpm install
pnpm dev # start dev build, watches src/, output in .output/
pnpm test # run tests in watch mode
pnpm build # production buildLoad .output/chrome-mv3-dev/ (dev) or .output/chrome-mv3/ (prod) as an unpacked extension.
GPL-3.0. See LICENSE.
This license is chosen deliberately: derivative works must remain open-source, preventing the closed-source paywalled forks that motivated this project.