Skip to main content
Self-Hosted AI Apps

LibreTranslate: Your Private Translation API (No Google Tax)

· · 5 min read

Here’s the thing: every time you use Google Translate, you’re sending your text to Google’s servers. Doesn’t matter if it’s a grocery list or confidential business docs — it all goes to the cloud. LibreTranslate fixes that problem by giving you a full translation API that runs entirely on your hardware. No subscriptions, no API limits, no privacy creep.

I’ve been running this in my homelab for three months now, and honestly, I’m shocked more people aren’t doing it. It’s a self-hosted machine translation engine that supports 30+ languages, integrates with anything that speaks REST API, and deploys in under ten minutes with Docker. Your text never leaves your network.

Why LibreTranslate Actually Wins

Let me be direct: LibreTranslate isn’t going to outthink Google or DeepL on translation quality. But here’s what matters — it’s good enough for 95% of use cases, and it’s running on your hardware for free.

The real wins are privacy, cost, and control. No monthly bills. No API quotas kicking in when you exceed some arbitrary limit. No terms of service that let a corporation train AI models on your documents. If you’re translating customer emails, internal docs, or anything even slightly sensitive, you should absolutely be running your own.

It uses Argos Translate models under the hood — open source, lightweight, and genuinely decent. I’ve run it on a Raspberry Pi 4 and my main homelab box. Translation takes a second or two per sentence, which is plenty fast for batch processing or casual use.

Bottom line: If you’re paying for translation API calls, you’re leaving money on the table.

The Install (It’s Stupidly Easy)

Honestly, the hardest part is deciding where to run it. Docker Compose handles the rest.

version: '3.8'
services:
  libretranslate:
    image: libretranslate/libretranslate:latest
    ports:
      - "5000:5000"
    environment:
      - LT_LOAD_ONLY=en,es,fr,de,it,pt,ru,ja,zh,ar
    volumes:
      - ./models:/home/user/.local/share/argos-translate/packages
    restart: unless-stopped

That’s it. Save that as docker-compose.yml, run docker compose up -d, and you’ve got a translation API listening on localhost:5000.

The LT_LOAD_ONLY variable is the smart move — it pre-loads only the languages you actually use instead of downloading all 30+. Saves disk space and startup time. Pick your languages and paste that list in.

First startup takes a few minutes while it downloads the language models. Then it’s ready. Hit http://localhost:5000 in your browser and you’ll see a clean web UI for testing.

Putting It to Work: Real Integrations

The web UI is fine for quick translations, but the real power is the REST API. You can wire this into Home Assistant, Proxmox alerts, notification systems, or any automation that needs translation.

Here’s a simple curl example:

curl -X POST "http://localhost:5000/translate" 
  -H "Content-Type: application/json" 
  -d '{
    "q": "Hello, how are you?",
    "source_language": "en",
    "target_language": "es"
  }'

Returns: {"translatedText": "Hola, ¿cómo estás?"}

I’ve integrated this with Home Assistant to translate incoming smart home notifications into Spanish for my partner. Automation rules send the text to LibreTranslate, get back the translated version, and pass it to the text-to-speech engine. Zero latency, zero cost, all local.

You can also pair it with Traefik if you want HTTPS reverse proxy in front of it (you probably should). Just add standard Traefik labels and you’re routing translation requests through your homelab’s encrypted gateway.

Pro tip: If you’re running n8n or Node-RED, LibreTranslate is a perfect node to drop into automation workflows. Need to translate every incoming email? Build it in five minutes.

Resource Reality Check

Let’s talk hardware. LibreTranslate isn’t a resource hog, but it’s not featherweight either. Each language model takes 100-300MB of RAM depending on which pair you’re loading.

On my main box (Ryzen 5, 32GB RAM): sub-second translations. On a Pi 4: a couple seconds per request, totally usable. If you’re running it on a shared Proxmox node with five other VMs, you’ll feel it, so spin up a container or LXC with at least 2GB reserved.

Disk space: maybe 1-2GB total for a practical set of 10-12 language pairs. Nothing insane.

CPU is where you’ll notice contention — translation is CPU-bound. If you’re hammering it with hundreds of concurrent requests, you’ll see slowdown. For normal homelab use (a few requests per minute), it’s invisible.

The Things Nobody Mentions

Translation quality is genuinely good for common languages (English, Spanish, French, German, etc.). It drops off a bit for less common pairs, but it’s still usable. Not Google-level, but nobody’s paying for LibreTranslate.

One annoying thing: if you restart the container, language models have to reload from disk. Not a big deal if you set restart: unless-stopped, but worth knowing if you’re tweaking configs frequently.

Also, the web UI is minimal. It works, but it’s not beautiful. That’s fine — you’re probably not showing it to clients. If you need a prettier frontend, community forks exist, but honestly, curl or integrations are the real use case.

Real talk: If you need professional-grade translation for a billion-word corpus, hire a translator or use DeepL. LibreTranslate is for homelabbers who want privacy and control, not for production translation services.

Privacy: The Actual Point

Every translation request stays on your network. Nothing hits Google, Bing, or anyone else’s cloud. If you’re in healthcare, legal, or any regulated industry, that matters enormously.

Your server logs will have the text (standard container logs), so if you’re concerned about that, rotate them or disable them entirely with Docker’s logging driver.

Compare this to Google Translate’s free tier, which explicitly reserves the right to use your text for model training. LibreTranslate? Your data is yours.

That’s the killer feature. Everything else is a bonus.

Final Thought

LibreTranslate is one of those quiet homelab wins — not flashy, but immediately useful and impossible to regret installing. Spend ten minutes setting it up, forget about it, and start building automations that were annoying before because they needed a cloud API call.

If you’re already running Docker and care even slightly about privacy, there’s no reason not to have this running. It’s free, it works, and it plays nice with everything else in your stack.

Go deploy it. You’ll thank yourself in a week when you integrate it into something cool.

Explore LibreTranslate in our AI Homelab Toolkit.

Share this article