A privacy-focused browser extension that translates web pages using local LLMs (Ollama or LMStudio). Your data never leaves your machine.
- ๐ 100% Private - All translations happen on your local machine via Ollama or LMStudio
- ๐ฏ Smart Prioritization - Visible content and headings are translated first
- ๐ Many Languages - Supports many many languages :3
You need one of these running locally:
With a translation-capable model loaded (e.g. TranslateGemma, tencent.hunyuan-mt, qwen3, etc.)
- Go to
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on
- Select the
manifest.jsonfile
- Go to
chrome://extensions - Enable Developer mode
- Click Load unpacked
- Select the extension folder
Coming Soon: Extension in Chrome Web Store and Firefox Add-ons
- Click the extension icon
- Select a model from the dropdown
- Choose your target language
- Click Translate Page
The extension will:
- Extract all visible text from the page
- Prioritize headings and visible content
- Translate in batches with progress percentage
- Auto-translate new content (infinite scroll)
This extension is designed to be privacy-focused:
- โ
Only connects to
localhost- no external network requests - โ No analytics or tracking
- โ No data collection
- โ
Minimal permissions (only
localhosthost permissions)
Click Advanced Settings to configure:
| Setting | Description |
|---|---|
| Provider | Auto-detect, Ollama only, or LMStudio only |
| URLs | Custom endpoints for Ollama/LMStudio |
| Max tokens/items per batch | Control batch sizes |
| Temperature | Model creativity (lower = more consistent) |
| Request Format (work in progress) | Default JSON, Hunyuan-MT, Simple, or Custom |
| Show Glow | Toggle visual indicator on translated text |
โโโ manifest.json # Extension manifest (MV3)
โโโ background.js # Background script (LLM API, settings)
โโโ content.js # Content script (DOM manipulation)
โโโ popup/
โ โโโ popup.html # Popup UI
โ โโโ popup.css # Styles (Everforest Dark theme)
โ โโโ popup.js # Popup logic
โโโ icons/ # Extension icons
The codebase is intentionally simple with no build step or dependencies:
- Pure vanilla JavaScript
- No external libraries
- No bundler required
- Works directly in the browser
Enable the "Enable debug logging" checkbox in the extension's Options page (Output Settings section), then click Save.
To view the logs, go to about:debugging#/runtime/this-firefox, find Local LLM Translator and click Inspect โ debug messages with [Background] prefix will appear in the Console tab.
Alternatively, you can toggle debug directly from the Inspect console:
// Enable
browser.storage.local.get('settings').then(r => {
const s = { ...r.settings, debug: true };
browser.storage.local.set({ settings: s }).then(() => console.log('Debug enabled'));
});
// Disable
browser.storage.local.get('settings').then(r => {
const s = { ...r.settings, debug: false };
browser.storage.local.set({ settings: s }).then(() => console.log('Debug disabled'));
});MIT
