Translate English, Spanish, and Hindi in any direction - live, in your browser, fully offline after the model loads once
Runs entirely in your browser
The translation model (~250 MB) downloads once from a public CDN, then is cached locally and runs offline. No text is ever sent to a server — there is no server. The first translation is slow while the model loads; every one after that is fast.
Preparing…
As-is, no warranty. These apps are free under their listed license and run entirely in your browser. Use at your own risk — don't blame me if your PC catches fire, your dog runs away, or the math turns out wrong. Verify anything that actually matters. None of this is professional financial, medical, legal, or engineering advice.
This is a translator for three languages - English, Spanish, and Hindi - that works in every direction between them, including the pairs people forget about: Spanish to Hindi and Hindi to Spanish, translated directly rather than by quietly routing through English first.
What makes it different from the translation box you are used to: there is no backend. The actual translation model runs inside your browser tab. The first time you use it, a model file (~250 MB) downloads from a public CDN and is cached by your browser. After that, translation runs locally - offline, private, and with no API key, login, or rate limit. Whatever you type stays on your device because there is nowhere else for it to go.
The very first translation is slow - that is the one-time model download, shown as a progress bar. Every translation after that is fast.
The engine is M2M-100 (Xenova/m2m100_418M), a 418-million-parameter sequence-to-sequence translation model from Meta. The “M2M” stands for many-to-many: unlike older translation systems that are trained one language pair at a time and pivot everything through English, M2M-100 was trained to translate directly between 100 languages. That is why Spanish to Hindi here is a single direct translation, not two hops with English in the middle (which is where meaning usually gets lost).
The model runs through transformers.js, which executes the ONNX-exported weights using ONNX Runtime Web - WebAssembly under the hood, with WebGPU where available. The weights are quantized to keep the download to a few hundred megabytes instead of well over a gigabyte. The library and the model are both pulled from the jsDelivr CDN at runtime, so nothing is bundled into the site and your browser caches them after the first visit.
Source detection (the “Detect language” option) is deliberately simple because it only ever has to choose between three languages: any Devanagari characters mean Hindi; otherwise it scores the text for Spanish-specific accents and common words against English ones. For short or ambiguous phrases, picking the source language explicitly is more reliable.
This is the whole reason the app exists. Mainstream translation services send your text to their servers, where it can be logged, retained, and used as training data. For a quick word that is fine. For a private message, a draft you are not ready to share, or anything sensitive, it is not.
Here, the model is downloaded to your machine and runs there. The network is used exactly once - to fetch the model files - and never again for the translation itself. You can confirm it: load the page once, turn off your Wi-Fi, and keep translating.
I built this for the same reason every tool here exists: I needed it, and I wanted it to be mine - no login, no logging, no asterisk. Running a translation model client-side is also a small proof of a bigger point I keep making on this site: a surprising amount of “AI” no longer needs a server. A few hundred megabytes of model, ONNX Runtime, and a browser tab is enough to translate between three languages privately on the device in your hand.
For informational purposes only. Not financial, medical, or legal advice. You are solely responsible for how you use these tools.