mrkeyoor.com_
Tue 01 Sept 17:43 UTC
Self-Hostedevaluationupdated 30 Aug 2026

LibreTranslate review

LibreTranslate is a self-hosted machine-translation API and web interface powered by the open-source Argos Translate engine. It lets an organization translate text and files without sending requests to Google, Azure, or another proprietary translation service.

+33 / 1dstars / 7d
Verdict

Our LibreTranslate run installed 90 packages in 39 seconds, but 2 language-detection tests each exceeded 120 seconds and pip-audit found 12 known vulnerabilities. Use it when data control and a self-hosted REST surface matter enough to justify model management, pair-by-pair quality checks, and dependency remediation. Choose a managed API when your team cannot own those tasks or needs dependable quality across unfamiliar languages immediately.

We ran it

Lab card: what happened when we ran LibreTranslateScreenshot of LibreTranslate (libretranslate.com)
Install✓ · 39s90 packages · 449 MB
Build✓ · 4s
Tests✗ · 265s13 passed · 0 failed · 2 errors of 15 (pytest)
Known vulns12(pip-audit)
Repo215 files~3,768 lines of source · 2.8 MB · 4 CI workflows

Answers from our run

Does LibreTranslate build from source?

Dependencies installed in 39 seconds (90 packages), and the build succeeded in 4 seconds. We cloned commit 4ef1333 into a clean Debian container with 3 CPUs and no project-specific setup.

Do LibreTranslate's tests pass?

Yes: 13 of 15 passed when we ran the project's own test command (pytest), with 2 collection errors. Some failures need services or credentials a bare container does not have.

Does LibreTranslate have known vulnerabilities in its dependencies?

pip-audit flagged 12 known advisories in the dependency tree at the time of our run.

Who should not use LibreTranslate?

Teams that require consistently strong output across short words, names, and every language pair: open issues 828 and 971 document wrong single-word output and incorrect Chinese detection.

What are the alternatives to LibreTranslate?

Argos Translate, EasyNMT, Transformers. Our LibreTranslate run installed 90 packages in 39 seconds, but 2 language-detection tests each exceeded 120 seconds and pip-audit found 12 known vulnerabilities.

Setup3/539-second install, then model downloads and production setup remain
Docs4/5Python, Docker, Gunicorn, keys, models, and API routes are covered
Community5/516,230 stars with current pushes and issue activity
Maturity3/5v1.9.6 is active, but tests timed out and audit found 12 issues

Discussed on

  1. hnShow HN: LibreTranslate – Open-source neural machine translation API216 points
  2. hnLibreTranslate63 points
  3. hnLibreTranslate – “Building the coolest translation software ”36 points
  4. hnLibreTranslate – FOSS Translation API17 points
  5. hnLibreTranslate: FOSS Machine Translation API, self-hosted4 points

Who it’s for

Teams that need a translation API inside their own network or cloud account.
Products that can validate quality for a known set of language pairs.
Operators comfortable managing model downloads, rate limits, workers, and updates.
Developers who want a familiar REST interface over Argos Translate.

Who it’s NOT for

Teams that require consistently strong output across short words, names, and every language pair: open issues 828 and 971 document wrong single-word output and incorrect Chinese detection.
Organizations unable to comply with AGPL-3.0 obligations for a modified network service.
Operators expecting a tiny stateless container: language models must be downloaded and persisted, and the docs recommend --load-only to limit what starts.
Buyers who require a clean dependency audit at commit 4ef1333: pip-audit reported 12 known vulnerabilities in our installed environment.
Anyone who treats automatic detection as settled: our two detection tests each exceeded the 120-second timeout.

Setup reality

Our sandbox installed 90 packages in 39 seconds and used 449 MB. The build passed in 4 seconds. Tests failed after 265 seconds: 13 passed and 2 language-detection cases timed out out of 15. Pip-audit reported 12 known vulnerabilities.

Python 3.8 or newer is documented, with Docker, Compose, Gunicorn, Kubernetes, Helm, and a CUDA image as deployment choices. Runtime also needs Argos language models; offline images must bake them in, while normal containers can download them on first start.

Loading all available languages is the default. --load-only reduces startup work, and model directories need persistent volumes in disposable containers. Production docs recommend Gunicorn or Docker, with rate limits and optional API keys configured separately.

A REST API keeps translation under your control

LibreTranslate wraps Argos Translate in a Flask service with a web interface and documented HTTP endpoints. Applications can submit text for translation, ask which languages are installed, and request language detection without calling Google or Azure. The server can run offline once its packages and model files are present. That is the reason to choose it: translation data stays on infrastructure you control, subject to whatever logging, network, and access rules you configure around the service.

The API shape is easier to integrate than a raw model library. A client sends source and target codes, text, and optional settings, then receives translated text and detection details. Self-hosted API keys can grant per-user request or character allowances when rate limits are enabled. Keys are off by default, so an internet-facing deployment needs deliberate authentication, request limiting, TLS termination, and monitoring rather than a bare process bound to a public port.

Language models determine disk use and translation quality

Argos language packages are separate from the 449 MB environment our lab installed. LibreTranslate loads all available languages by default, while --load-only en,es,fr limits the set. The build-from-source guide says normal images download models on first run; an offline image can include them at build time. Disposable containers should mount the model directories or they will fetch the same files again after replacement.

Not every source and target combination has a direct model. The supported-languages guide says LibreTranslate may pivot through another language, usually English, when a direct pair is unavailable. That expands reach at the cost of another inference step and another chance to lose meaning. Before deployment, select the actual pairs your product needs, record the installed model versions, and test representative names, short labels, sentences, formatting, and domain terms for each direction.

What happened when we ran it

Our sandbox cloned commit 4ef1333 and installed 90 packages in 39 seconds. Dependencies occupied 449 MB after installation, while the checkout itself was 2.8 MB with 215 files and about 3,768 lines of source. The build completed in 4 seconds. Repository signals included 4 CI workflow files, a Compose file, no Dockerfile at the root, and no top-level tests directory. Pip-audit reported 12 known vulnerabilities.

The test command exited with code 1 after 265 seconds. Pytest reported 13 passed tests and 2 setup or collection errors out of 15, with 11 warnings. Both errors came from test_api_detect_language.py; each exceeded pytest-timeout's 120-second limit. The log does not say why detection stalled, so we will not assign a cause to models, networking, CPU, or test setup. It only establishes that commit 4ef1333 did not finish its suite in our fresh container.

The coverage summary in that run reported 50 percent across 1,517 measured statements, but coverage was not the failing gate. The two 120-second detector timeouts were. We did not start a production Gunicorn service, download every language model, measure translation latency, or score translations against a reference corpus. The 39-second install and 4-second build should not be read as time to a fully populated translation endpoint.

Production uses Gunicorn or Docker, not the basic server

The official installation guide supports Python 3.8 or newer and opens the basic service on port 5000. For production, it recommends Gunicorn or Docker to avoid memory leaks. The repository also carries Compose, Kubernetes, Helm, and CUDA routes. CUDA guidance names a 12.4.1 environment, so GPU operators need compatible NVIDIA drivers and container support rather than assuming any CUDA host will work.

Model storage and worker layout deserve a deployment test. Gunicorn can run multiple processes, while shared storage, API-key data, translation caches, and downloaded models need consistent paths. The configuration surface includes thread count, request limits, character limits, Prometheus metrics, file-translation switches, URL prefixes, and an under-attack mode. Environment variables mirror command arguments with an LT_ prefix, which makes container configuration practical but also creates enough knobs to document and pin.

Detection and short text need their own acceptance set

Open issue 971 shows a Chinese sentence submitted with source: auto and reported as Korean at 86 percent confidence. That is one submitted example, not a general accuracy benchmark, yet it matches the part of our suite that timed out: detection deserves direct scrutiny. If the caller already knows the source language from account settings or document metadata, passing it explicitly avoids making detection another dependency in the request path.

Issue 828 reports a wrong answer with low confidence for single-word translation. Other open reports concern particular proper nouns, capitalization, and language pairs. Neural translation quality changes with model and context, so an endpoint returning HTTP 200 does not prove the result is usable. A product should keep a reviewed corpus for its real inputs and rerun it whenever LibreTranslate, Argos, or any installed language package changes.

AGPL licensing fits an open service better than a closed modification

LibreTranslate uses AGPL-3.0, while the project also publishes trademark guidelines. Organizations that modify the server and provide it over a network should obtain legal advice about source-sharing duties before deployment. Using the unmodified service internally may be straightforward, but the license is materially different from permissive alternatives such as MIT or Apache-2.0. Branding rights are a separate question from code rights.

GitHub showed 16,230 stars, 124 combined issues and pull requests, and a last push on August 23, 2026. Release v1.9.6 arrived on May 26 with a Turkish UI addition, while issue activity continued through August 27. The project is active and widely watched; those signals do not clear the 12 audit findings or the two detector timeouts. Pin the service, language packages, and deployment configuration, then make translation quality part of every upgrade review.

Alternatives

ProjectWhat it isPick it when
Argos TranslateThe offline neural translation library that powers LibreTranslate.pick this instead when you need an embedded Python library and can build the service layer yourself.
EasyNMTA Python interface over several neural machine-translation models.pick this instead when model choice matters more than LibreTranslate's ready web API and UI.
Transformers gh↗A general model library with translation pipelines and a large model catalog.pick this instead when you need to choose and tune a specific translation model rather than run a packaged service.

What people are saying

  1. [github-trending] LibreTranslate/LibreTranslate

Sources

  1. LibreTranslate repository and README
  2. LibreTranslate installation guide
  3. LibreTranslate supported languages
  4. LibreTranslate API key management
  5. Issue 971: incorrect automatic language detection
  6. Issue 828: single-word translation quality
  7. LibreTranslate v1.9.6 release

More self-hosted reviews

v2 · OpenShell · wigolo · Mindwtr · club-3090 · reclip · the whole board →