On-device translation means the model that converts a word from one language to another runs inside your own browser, on your own machine, so the text being translated is never transmitted anywhere. For language-learning extensions this is new. Chrome's built-in Translator API became generally available in Chrome 138, and before that an extension that wanted to translate what you were reading had essentially one option: send it to a server and wait for the answer to come back.
That distinction is invisible from the outside. Two extensions can produce an identical highlighted word on an identical page while doing completely different things with your reading history. This article explains what actually differs, why it is worth caring about, and how to check for yourself rather than taking anyone's word for it.
What an extension has to do to translate a page#
Any extension that changes what words appear on a page needs page access. There is no clever way around this. To swap window for ventana, it has to read the DOM, find the text nodes, decide which ones to touch, and rewrite them. That requirement is the same for a click-to-translate reader, a subtitle tool, a popup dictionary, and a word-substitution extension. The five categories are laid out in the five real types of language learning extension, and every one of them needs to see the page.
So "this extension can read the pages I visit" is not a red flag on its own. It is the price of the entire category. The meaningful question is the next one.
Where the text goes next#
If the translation model lives on a server, the extension has to ship your text there. In practice what arrives at that server is more than a word. It is usually a chunk of surrounding sentence for context, often the page URL, a timestamp, an IP address, and whatever account identifier ties the request to you. Over a few months of ordinary browsing, that adds up to a plain-text record of a meaningful slice of what you read and when.
Most of your reading is boring and none of it is anyone's business, which is exactly the problem: the boring bulk is what makes the non-boring parts legible. A reading history contains job searches, medical symptom lookups, legal questions, financial trouble, relationship advice, and half-drafted messages. Nobody sets out to hand that over. They install a vocabulary tool.
None of which makes server-side translation illegitimate. The browser's own full-page translate button worked this way for years. Cloud models support far more languages, run on any browser and any device including phones, and are not gated on the user's hardware. A small team with no on-device option available was making an entirely reasonable call. The problem was never the choice, it was that users had no way to see which choice had been made for them.
What "on-device" actually means#
On-device means inference happens locally. The extension asks the browser to translate a string; the browser runs a translation model that has already been downloaded to your disk; the result comes back without a network round trip. Once the language pack is present, you can turn off Wi-Fi and it keeps working. That is the tell, and it is the one claim in this whole area that you can verify in about five seconds.
Two things are worth separating, because they get conflated constantly:
- On-device inference means the page text is not transmitted for translation.
- No telemetry means the extension is not transmitting anything else either.
An extension can do the first and still fail the second. Local translation plus an analytics SDK that reports every page you activated it on is not private in any sense a normal person means by the word. Both need to be true, and they are checked separately.
On-device and server-side, side by side#
| On-device (browser's built-in model) | Server-side (cloud API) | |
|---|---|---|
| Where page text goes | Stays on your machine | Sent to the provider, plus whichever third parties they use |
| What a breach or subpoena could expose | Nothing about what you read | A log of text you read and when |
| First use | One-time language-pack download | Nothing to set up |
| Latency | Local, no round trip | Network round trip per request |
| Works offline | Yes, after the download | No |
| Language coverage | Limited to what the browser supports | Typically 50 to 130+ languages |
| Browser support | Desktop Chrome and Chromium browsers, recent versions | Any browser, any platform |
| Mobile | Not available | Works wherever extensions do |
| Quality ceiling | Small model, tuned for speed and size | Large models, generally stronger on long-form text |
| Cost to the developer | Zero per translation | Per-character API billing, which is why usage caps exist |
The last row explains more product behaviour than any other. Extensions with monthly translation limits, waitlists, or a paid tier that unlocks "unlimited" usage almost always have a per-character bill behind them. On-device removes that bill, which is why a locally-translating tool can be unlimited and free without that being suspicious.
How to check any extension yourself#
You do not need to trust a privacy claim, including this article's. Extension code is shipped to your computer in readable form, and the browser gives you the tools to watch it work. Five checks, roughly in order of effort:
- Read the permission list before installing. Chrome states this plainly on the store listing and again in the install prompt. "Read and change all your data on all websites" is broad standing access. "Read and change your data on [one site]" is scoped. An extension using
activeTabshows no host warning at all at install and only gets access when you click it. An extension that requests broad access at runtime, when you first enable a feature, is doing the right thing: you can decline and keep the rest. - Check the Chrome Web Store privacy practices tab. Developers must declare what data the extension collects and certify how it is used. A declaration is not proof, but a mismatch between the declaration and the marketing copy is a real signal, and false declarations are a policy violation with a paper trail.
- Watch the network traffic. This is the decisive one, with a catch that trips people up. Requests made by a content script generally appear in the page's own DevTools Network panel, but requests made by the extension's background service worker do not. Go to
chrome://extensions, turn on Developer mode, and click the "service worker" link under the extension to open a DevTools window for the extension itself. Its Network tab is where the interesting traffic lives. For a complete capture that misses nothing, usechrome://net-exportto log all network activity to a file while you reproduce the behaviour, then read the log in the NetLog viewer. - Search the bundle for analytics. Extensions install unpacked into your browser profile directory, and you can read the files. Grep for
google-analytics,googletagmanager,mixpanel,segment,amplitude,posthog,sentry. Also readmanifest.jsonand look athost_permissionsand any remote hosts listed. Bundled code is often minified, but domain strings survive minification intact. - Turn the network off. Load a page, disconnect, and use the feature on text it has not seen before. Genuinely local translation keeps working. Server-side translation fails or hangs. Use fresh text, since a cached result will pass a test it should have failed.
| Check | Where to do it | What a locally-translating extension looks like |
|---|---|---|
| Permissions | Install prompt, chrome://extensions | Narrow by default, broad access requested only when you enable the feature |
| Store disclosure | Privacy practices tab on the listing | Declares little or no data collection, matching the description |
| Service worker traffic | chrome://extensions → "service worker" → Network | Traffic only when you deliberately save or sign in |
| Full network log | chrome://net-export | No steady background chatter while you read |
| Bundle contents | Profile extensions folder | No analytics domains, no third-party translation host |
| Offline test | Airplane mode, fresh text | Still works |
What on-device actually costs you#
Being honest about this is the point. On-device is not strictly better; it is a trade with a real bill attached.
Desktop only. Chrome's built-in translator is a desktop feature, and extensions barely exist on mobile anyway. If most of your reading happens on a phone, this whole approach is unavailable to you and a server-backed mobile app is the better tool.
A version floor. Chrome 138 or newer. Anyone on an older build, a locked-down work machine, or a Chromium fork that lags upstream gets nothing.
A download. The first time you use a language pair, the model has to come down. It is one-time and then it is offline forever, but it is not instant and it takes disk space.
Coverage gaps. The browser supports a specific list of language pairs and it is shorter than any cloud API's. When a pair is missing, it is simply missing. There is no graceful degradation unless the extension falls back to a server, at which point the privacy property is gone for that pair, and an extension doing that silently would be worse than one that never claimed it.
A smaller model. These models are built to be small and fast enough to run in a browser. On single words and short phrases, which is what a vocabulary tool needs, they are strong. On long, stylistically complex prose, a large cloud model will usually do better.
A note on the extension that made this idea popular#
Toucan is the reason anyone knows what on-page word substitution is. It swapped a handful of words on whatever page you loaded, with no session to start and nothing to schedule, and that zero-effort design was a genuine achievement that a lot of people who bounced off every other app quietly loved.
Its current state is worth knowing if you are choosing a tool today. The company wound down in 2023, and Babbel acquired the technology in September 2023 without any of the team joining (TechCrunch, 19 September 2023). It runs now as "Toucan by Babbel", free, with what used to be the paid features folded into the free tier. Its Chrome Web Store listing reports 200,000 users and was last updated in July 2025, while its own homepage still claims 750,000+, which is the clearest available indication that the install base has fallen a long way. The persistent reviewer complaints are consistent and structural: word-level swaps only, no sentence support, translations that miss agreement (a documented example: "on their primero solo excursion", where Spanish requires primera), and Chrome and Edge only.
On the privacy question specifically, the public evidence points toward Toucan having run a local dictionary rather than a live translation API. The team open-sourced aracari, pos-js and finch-graphql, which is the toolkit you build if you are doing text replacement and part-of-speech tagging in the browser. Treat that as strong inference from what they published, not as a documented statement. It is also a good illustration of the point above: a local dictionary buys you privacy and costs you grammar, because a dictionary has no way to know the noun that follows is feminine.
If you want the full comparison of what passive swapping does and does not give you, that is covered in the Toucan alternative piece.
How LingoBlend's extension is set up#
The LingoBlend extension blends pages using Chrome's built-in on-device translator, so page text never leaves your machine. It contains no analytics and no telemetry. The only things that ever leave the device are a word you explicitly choose to save and your sign-in, both of which you initiate.
The rest of the design follows from taking that seriously rather than just claiming it:
- Blending is off by default. Turning it on triggers Chrome's own permission prompt for page access. The install itself requests nothing broad, so you can install first and decide later. There is also a "Blend this page" button that handles the current tab only, granting nothing standing.
- It stays away from where you work. Off by default on Gmail, Google Docs, Drive, Notion, Slack, GitHub, GitLab, Overleaf, Figma, LinkedIn, WhatsApp Web, Teams, Outlook and Discord. It never touches what you are typing, form fields, or code blocks.
- Copying returns the original words. Blended text pastes as the source language, so nothing strange ends up in an email.
- It checks the page language rather than trusting the markup, and refuses to blend a page that is already in the language you are learning.
- It skips words it is not confident about rather than risk teaching you a wrong one.
The honest limits: desktop Chrome and Edge only, no mobile, no Firefox, no Safari. Chrome 138 or newer for blending, though right-click word saving works on any recent Chrome. Sixteen of the seventeen supported languages can blend; Serbian cannot, because Chrome's on-device translator does not support it, and Serbian learners get right-click saving only. First use downloads a language pack once from the popup, after which it works offline. Blending is free and unlimited, since there is no per-character bill to pass on. The one Pro feature is "Base form", which shows the dictionary form and a grammar note (escogido → escoger), and Pro is bought in the mobile app rather than the extension.