Chrome's Translator API: Add Free, Private Translation to Your Extension
The Chrome Translator API is a game-changer for extension developers. Shipping in Chrome 138, this built-in, on-device AI translation engine powered by Gemini Nano lets you add translation to any extension — no API keys, no per-request costs, no data leaving the user’s device.
If you build extensions for a global audience, the Chrome Translator API is the most impactful browser API released in years.
Why the Chrome Translator API Matters for Extension Developers
Most extensions that need translation today rely on Google Translate API, DeepL, or similar services. That means:
- API costs that scale with usage
- Privacy concerns — user text sent to third-party servers
- Network dependency — no internet, no translation
- Rate limits that break UX at scale
The Chrome Translator API eliminates all four. Translation runs locally on the user’s machine using Chrome’s built-in AI model. Your extension gets free, private, offline-capable translation out of the box.
Quick Start: 5 Minutes to Translation
1. Check Availability
if ('Translator' in self) {
// API available — Chrome 138+
}2. Create a Translator Instance
const translator = await Translator.create({
sourceLanguage: 'en',
targetLanguage: 'ja',
});3. Translate Text
const result = await translator.translate('Hello, world!');
console.log(result); // "こんにちは、世界!"That’s it. Three steps. No credentials, no billing dashboard, no SDK to install.
Handling Model Downloads
The translation model needs to download before first use (~varies by language pair). Handle this gracefully:
const translator = await Translator.create({
sourceLanguage: 'en',
targetLanguage: 'fr',
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Download: ${Math.round(e.loaded * 100)}%`);
});
},
});Pro tip: Check language pair availability before showing translation UI:
const canTranslate = await Translator.availability({
sourceLanguage: 'en',
targetLanguage: 'de',
});
// Returns: 'available', 'downloadable', or 'unavailable'Streaming Translation for Long Content
For longer texts — articles, emails, documentation — use streaming to show results progressively:
const stream = translator.translateStreaming(longArticleText);
let translated = '';
for await (const chunk of stream) {
translated = chunk; // Each chunk contains full translation so far
updateUI(translated);
}This keeps your extension responsive. Users see translation progress instead of staring at a spinner.
Real Extension Use Cases
Here’s where this API shines for extension developers:
| Use Case | Before (External API) | After (Translator API) |
|---|---|---|
| Review translator | $20+/mo API costs | Free |
| Email composer | Privacy policy headaches | Zero data transmitted |
| Content reader | Fails offline | Works anywhere |
| Social media tool | Rate-limited at scale | No limits |
| Accessibility helper | Complex OAuth setup | Zero config |
Example: Translate Selected Text
A common extension pattern — user selects text, extension translates it:
// content-script.js
document.addEventListener('mouseup', async () => {
const selected = window.getSelection().toString().trim();
if (!selected || !('Translator' in self)) return;
const translator = await Translator.create({
sourceLanguage: 'en',
targetLanguage: navigator.language.split('-')[0],
});
const translated = await translator.translate(selected);
showTooltip(translated);
});Requirements and Limitations
Be transparent with your users about system requirements:
- Chrome 138+ (desktop only — Windows, macOS, Linux, ChromeOS)
- Hardware: 4GB+ VRAM (GPU) or 16GB+ RAM with 4+ CPU cores
- Storage: Initial model download requires unmetered connection
- 50+ languages supported via BCP 47 codes
- Not available in Web Workers or on mobile (yet)
Graceful Fallback Pattern
Always include a fallback for unsupported browsers:
async function translateText(text, targetLang) {
if ('Translator' in self) {
const availability = await Translator.availability({
sourceLanguage: 'en',
targetLanguage: targetLang,
});
if (availability !== 'unavailable') {
const translator = await Translator.create({
sourceLanguage: 'en',
targetLanguage: targetLang,
});
return translator.translate(text);
}
}
// Fallback to your existing translation service
return fallbackTranslate(text, targetLang);
}SEO Impact: Why Multilingual Extensions Win
Extensions that support multiple languages see measurably better outcomes:
- Broader reach: 75% of internet users don’t speak English natively
- Higher ratings: Localized extensions average 0.3–0.5 stars higher on Chrome Web Store
- More installs: Multilingual listings appear in more regional search results
- Better retention: Users stay longer when the experience speaks their language
The Translator API makes it trivial to add this capability. No translation budget. No managing language files. Real-time, on-demand translation powered by Chrome itself.
What’s Next
The Translator API is part of Chrome’s broader Built-in AI initiative, being standardized through the W3C WebML Working Group. Expect:
- Mobile support in future Chrome releases
- More language pairs
- Other browsers adopting the standard
- Integration with the Language Detector API for auto-detection
Start building now. Extensions that adopt the Chrome Translator API early will have a competitive edge as browser AI becomes the norm. If you’re new to extension development, check out our Chrome extension development fundamentals guide. Already building? Make sure your listing is optimized with our Chrome Web Store listing optimization guide.
Get More Installs for Your Extension
Building a great extension is step one. Getting it discovered is step two. AppBooster helps Chrome extension developers grow through peer reviews, visibility tools, and a community of builders. Get started free →
Share this article
Build better extensions with free tools
Icon generator, MV3 converter, review exporter, and more — no signup needed.
Related Articles
Building Accessible Chrome Extensions: Keyboard, Screen Reader, and WCAG Compliance
26% of US adults have disabilities. Make your Chrome extension accessible with focus traps, ARIA, keyboard nav, and WCAG 2.1 AA compliance.
I Built the Same Chrome Extension With 5 Different Frameworks. Here's What Actually Happened.
WXT vs Plasmo vs CRXJS vs Extension.js vs Bedframe. Real benchmarks, honest opinions, and the framework with 12K stars that's quietly dying.
5 Best Email Marketing Services to Grow Your Chrome Extension (2026)
Compare the top email marketing platforms for SaaS and Chrome extension developers. MailerLite, Mailchimp, Brevo, ActiveCampaign, and Drip reviewed.