LingoBlend

Browser Extension Privacy: On-Device vs Server Translation

On-device translation keeps page text on your machine. What that actually means, why most extensions send text to a server instead, and how to check yours.

How-toNikola Artukov12 min read

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 goesStays on your machineSent to the provider, plus whichever third parties they use
What a breach or subpoena could exposeNothing about what you readA log of text you read and when
First useOne-time language-pack downloadNothing to set up
LatencyLocal, no round tripNetwork round trip per request
Works offlineYes, after the downloadNo
Language coverageLimited to what the browser supportsTypically 50 to 130+ languages
Browser supportDesktop Chrome and Chromium browsers, recent versionsAny browser, any platform
MobileNot availableWorks wherever extensions do
Quality ceilingSmall model, tuned for speed and sizeLarge models, generally stronger on long-form text
Cost to the developerZero per translationPer-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:

  1. 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 activeTab shows 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.
  2. 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.
  3. 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, use chrome://net-export to log all network activity to a file while you reproduce the behaviour, then read the log in the NetLog viewer.
  4. 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 read manifest.json and look at host_permissions and any remote hosts listed. Bundled code is often minified, but domain strings survive minification intact.
  5. 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.
CheckWhere to do itWhat a locally-translating extension looks like
PermissionsInstall prompt, chrome://extensionsNarrow by default, broad access requested only when you enable the feature
Store disclosurePrivacy practices tab on the listingDeclares little or no data collection, matching the description
Service worker trafficchrome://extensions → "service worker" → NetworkTraffic only when you deliberately save or sign in
Full network logchrome://net-exportNo steady background chatter while you read
Bundle contentsProfile extensions folderNo analytics domains, no third-party translation host
Offline testAirplane mode, fresh textStill 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.

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 (escogidoescoger), and Pro is bought in the mobile app rather than the extension.

Frequently asked questions

Does Chrome's built-in translator send pages to Google?

No. The Translator API available from Chrome 138 runs a model that has been downloaded to your device, and inference happens locally. The download itself is a network request, like any software update, but translating text afterwards is not. The simplest confirmation is to disconnect from the network and translate something new; if it still works, nothing is being sent.

How can I tell if a browser extension is sending my page text somewhere?

Open chrome://extensions, enable Developer mode, and click the extension's "service worker" link to open DevTools for the extension itself, then watch its Network tab while you browse. Background traffic does not show up in the page's own DevTools, which is why people miss it. For a complete record, capture everything with chrome://net-export. The five-second version is to turn the network off and see whether the feature still works.

Is server-side translation unsafe?

Not inherently. It is a normal engineering choice with real advantages: far wider language coverage, no hardware or browser-version requirement, mobile support, and usually better quality on long-form text. Plenty of reputable tools use it responsibly. The problem is only when a tool is vague about it, because then you cannot weigh the trade for yourself. Read the privacy policy, check the store disclosure, and decide knowingly.

Which browsers support on-device translation?

Desktop Chrome and Chromium-based browsers such as Edge, from version 138. It is not available on Chrome for Android or iOS, and Firefox and Safari have their own separate approaches to local translation that are not the same API. Since Chrome on Android supports no extensions at all, on-device extension translation is effectively a desktop-only capability today.

Does LingoBlend's extension send the pages I read to its servers?

No. Blending uses Chrome's on-device translator and the page text stays on your machine. The extension contains no analytics or telemetry. When you deliberately click "Save word", that single word and its translation are sent to your account so they reach the mobile app for review, and signing in is a network request. Nothing else leaves the device, and you can verify all of this with the network checks above.

Share this articleXLinkedInRedditEmail

Nikola Artukov

Builder of LingoBlend. Writes about reading as a way into a language — the methods, the research behind them, and the practical workflows that make them fit into an ordinary week.

More about the author

Related reading

Start learning a new language today

Join LingoBlend and turn any text into a personalized language lesson. Free to start, no credit card required.