Last updated: April 29, 2026
Translator ("the Extension") is a browser extension that translates web page content and user-input text using user-configured OpenAI-compatible large language model (LLM) APIs. The Extension does not operate any backend servers, does not collect analytics or telemetry, and does not sell or share any user data with third parties.
The Extension stores the following data locally on your device:
| Data | Storage | Purpose | PII? |
|---|---|---|---|
| LLM provider settings (API keys, endpoints, custom headers, model preferences) | chrome.storage.sync | Authenticate with your configured LLM API | Yes — API keys are secrets |
| Language preferences & UI settings | chrome.storage.sync | Remember your translation preferences | No |
| Custom prompt templates | chrome.storage.sync | Personalize translation behavior | No |
| Translation results (cached) | IndexedDB (local) | Avoid redundant API calls; auto-deleted after 7 days | Potentially — reflects content you translated |
When you translate text, the following is sent only to the LLM API endpoint you configured:
Authorization request header for authentication.The Extension does not route your data through any intermediary servers. Network requests go directly from your browser to the API endpoint you specified.
By default, the Extension uses franc-min, a local-only N-gram language detection library that runs entirely in your browser. No network requests are made for language detection in this mode.
If you configure a remote language detection provider (e.g., Google Translate free endpoint or a custom API), the text to detect will be sent to that provider's endpoint. This is optional and only happens when you explicitly configure a remote detection provider.
The Extension does not share, sell, or transmit any data to any party other than the LLM API endpoints you configure. There are:
The Extension allows you to export and import your settings. Exported settings may contain API keys. You have the option to encrypt the export file with a passphrase (AES-256-GCM). Without a passphrase, API keys are stored in plaintext JSON. We recommend always using a passphrase when exporting settings.
| Permission | Justification |
|---|---|
storage | Store your settings and preferences in chrome.storage.sync |
activeTab | Access the content of the current tab when you trigger translation |
alarms | Schedule periodic cleanup of expired translation cache entries |
<all_urls> (host permission) | Run the content script on any page to translate visible paragraphs |
All bundled third-party libraries operate locally within the browser and do not make network requests or collect data:
The Extension is not directed at children under 13. We do not knowingly collect personal information from children under 13.
We may update this policy from time to time. Changes will be reflected in the "Last updated" date above. Continued use of the Extension after changes constitutes acceptance of the updated policy.
If you have questions about this privacy policy, please open an issue on our GitHub repository: