🎬 Lingarr: A Smarter Way to Translate Subtitles Automatically
In today’s world of global video content—from YouTube channels to international streaming platforms—subtitles play a vital role in connecting creators and audiences across different languages. Yet for anyone who has tried to translate subtitles manually, the process often feels tedious, inconsistent, and time-consuming.
If you’ve ever asked yourself:
“
“Why is subtitle translation still so complicated?”
Then Lingarr might be exactly the tool you’ve been looking for. Designed with simplicity, automation, and flexibility in mind, Lingarr is an open-source application that lets you translate subtitles into multiple languages effortlessly, using your choice of powerful translation engines.
Whether you’re a self-hosted media enthusiast, a localization team, or an independent content creator, Lingarr brings professional-grade subtitle translation to your fingertips.
1. What Is Lingarr?
Lingarr is an open-source subtitle translation system built on top of modern translation technologies. It automatically converts subtitle files from one language to another using a wide range of translation services such as LibreTranslate, DeepL, OpenAI, Anthropic, Gemini, DeepSeek, Google, Bing, Yandex, and Azure.
In simple terms, Lingarr acts as a centralized translation hub for your media library.
Once installed, it can automatically detect, translate, and save subtitles in your preferred target language—without requiring constant manual work.
It’s built to serve everyone—from small personal media servers to large content automation pipelines.
2. Why Lingarr Matters
In a world flooded with multilingual video content, the ability to generate accurate, natural subtitles is essential. Lingarr stands out because it offers:
🌍 Multiple Translation Engine Support
Lingarr doesn’t lock you into one service. Instead, it lets you choose from a range of translation APIs, depending on your accuracy needs, privacy preferences, or cost considerations:
| Translation Service | Key Feature |
|---|---|
| LibreTranslate | Fully open-source, privacy-friendly, can be hosted locally |
| LocalAI | Runs local large language models compatible with OpenAI API format |
| DeepL | Commercial-grade accuracy and fluency (except for pt-BR) |
| Anthropic (Claude) | Advanced natural-language translation powered by contextual understanding |
| OpenAI (GPT Models) | Ideal for nuanced, context-aware translations |
| DeepSeek | High-performance model optimized for Chinese and multilingual accuracy |
| Gemini (Google) | Multimodal intelligence for cross-language adaptation |
| Google Translate / Bing / Yandex / Azure | Traditional translation services with broad language coverage |
Such flexibility makes Lingarr highly adaptable to different workflows—whether you value cost efficiency, offline operation, or AI-enhanced translation quality.
3. How to Deploy Lingarr
Lingarr can be deployed in two primary ways: via Docker Compose or using Docker CLI.
Both methods are simple and allow quick integration into your existing server setup.
3.1 Deploying with Docker Compose
If you’re already using Docker Compose, setting up Lingarr takes only a few lines of configuration.
Add this section to your docker-compose.yml file:
services:
lingarr:
image: lingarr/lingarr:latest
container_name: lingarr
restart: unless-stopped
environment:
- ASPNETCORE_URLS=http://+:9876
ports:
- "9876:9876"
volumes:
- /path/to/media/movies:/movies
- /path/to/media/tv:/tv
- /path/to/config:/app/config
networks:
- lingarr
networks:
lingarr:
external: true
Then run:
docker compose up -d
Lingarr will start automatically on port 9876.
“
💡 Tip:
If your media directory has deeply nested subfolders, check the official Wiki for mapping recommendations to ensure Lingarr can scan all files correctly.
3.2 Deploying with Docker CLI
Prefer using command-line tools directly? The setup is just as easy:
docker run -d \
--name lingarr \
--restart unless-stopped \
-p 9876:9876 \
-e ASPNETCORE_URLS=http://+:9876 \
-v /path/to/media/movies:/movies \
-v /path/to/media/tv:/tv \
-v /path/to/config:/app/config \
--network lingarr \
lingarr/lingarr:latest
Once running, you can access Lingarr’s interface at http://your-server-ip:9876.
4. Essential Environment Variables
Lingarr’s behavior is controlled entirely through environment variables, allowing you to customize ports, databases, concurrency, and integration options.
| Variable | Description |
|---|---|
ASPNETCORE_URLS |
Internal listening address inside the container (default http://+:9876) |
MAX_CONCURRENT_JOBS |
Number of simultaneous translation jobs (default 1) |
DB_CONNECTION |
Database type: mysql or sqlite |
DB_HOST |
MySQL database hostname |
DB_PORT |
MySQL port (default 3306) |
DB_DATABASE |
Name of the Lingarr database |
DB_USERNAME / DB_PASSWORD |
Credentials for database authentication |
DB_HANGFIRE_SQLITE_PATH |
Path for Hangfire task database (when using SQLite) |
You can define these variables directly in your Docker Compose file or through .env files for persistent configuration.
5. Integration with Radarr and Sonarr
Lingarr can be seamlessly integrated with Radarr and Sonarr, the popular automation tools for managing movie and TV libraries.
When connected, Lingarr automatically detects new video content and starts translating subtitles immediately.
Radarr Integration
| Variable | Description |
|---|---|
RADARR_URL |
Base API URL for Radarr (e.g., http://localhost:7878) |
RADARR_API_KEY |
API key from your Radarr instance |
Sonarr Integration
| Variable | Description |
|---|---|
SONARR_URL |
Base API URL for Sonarr (e.g., http://localhost:8989) |
SONARR_API_KEY |
API key from your Sonarr instance |
This integration ensures your subtitle translations stay synchronized automatically whenever new media is added or updated.
6. Configuring Translation Services
Lingarr’s most powerful feature is its support for multiple translation engines.
You can switch between them by setting a single variable — SERVICE_TYPE.
6.1 General Translation Settings
| Variable | Description |
|---|---|
SERVICE_TYPE |
The translation service type (e.g., libretranslate, openai, deepl, etc.) |
SOURCE_LANGUAGES |
JSON array of source languages |
TARGET_LANGUAGES |
JSON array of target languages |
Example format:
[{"name":"English","code":"en"},{"name":"Dutch","code":"nl"}]
This structure allows flexible multilingual translation pipelines.
6.2 Supported Translation Engines and Variables
| Service | Key Variables | Example |
|---|---|---|
| LibreTranslate | LIBRE_TRANSLATE_URL, LIBRE_TRANSLATE_API_KEY |
https://libretranslate.com |
| OpenAI | OPENAI_MODEL, OPENAI_API_KEY, AI_PROMPT |
gpt-4, sk-xxxx |
| Anthropic (Claude) | ANTHROPIC_MODEL, ANTHROPIC_API_KEY, ANTHROPIC_VERSION |
claude-2 |
| Gemini | GEMINI_MODEL, GEMINI_API_KEY |
gemini-2.0-flash |
| DeepSeek | DEEPSEEK_MODEL, DEEPSEEK_API_KEY |
deepseek-chat |
| LocalAI | LOCAL_AI_MODEL, LOCAL_AI_API_KEY, LOCAL_AI_ENDPOINT |
http://localhost:8080 |
| DeepL | DEEPL_API_KEY |
private API key required |
With this modular setup, Lingarr can adapt to virtually any translation infrastructure—from cloud-based AI models to completely offline deployments.
7. Optional: Running LibreTranslate Locally
If you prefer using an open-source, self-hosted translation engine, LibreTranslate can be deployed easily alongside Lingarr.
Docker Compose Example
LibreTranslate:
container_name: LibreTranslate
image: libretranslate/libretranslate:latest
restart: unless-stopped
environment:
- LT_LOAD_ONLY=en,nl # Replace with your preferred language codes
ports:
- 5000:5000
volumes:
- /path/to/config:/home/libretranslate/.local/share/argos-translate
networks:
- lingarr
healthcheck:
test: ["CMD-SHELL", "./venv/bin/python scripts/healthcheck.py"]
Docker CLI Example
docker run -d \
--name LibreTranslate \
-p 5000:5000 \
-v /path/to/libretranslate/db:/app/db \
-v /path/to/libretranslate/local:/home/libretranslate/.local \
libretranslate/libretranslate \
--disable-web-ui \
--load-only=en,nl
This approach ensures full control over your translation pipeline and eliminates external API dependencies.
8. API Access for Developers
Lingarr also exposes a RESTful API, enabling deeper automation and system integration.
Through the API, developers can:
-
Trigger subtitle translation tasks -
Query translation status and progress -
Manage translation queues and logs
You can find full endpoint documentation, including a Swagger definition, at:
👉 https://lingarr.com/docs/api
This makes Lingarr ideal for use in custom content pipelines, CI/CD environments, or automated localization workflows.
9. Frequently Asked Questions (FAQ)
❓ 1. Can Lingarr run locally?
Yes. Lingarr is fully containerized and runs anywhere Docker is supported—on a NAS, a local workstation, or a cloud VPS.
❓ 2. What subtitle formats are supported?
Lingarr supports standard formats such as .srt, .ass, and .vtt, ensuring compatibility with most media players and streaming platforms.
❓ 3. Can I use multiple translation engines at once?
You can configure multiple services, but it’s recommended to enable only one SERVICE_TYPE per instance to maintain stability and predictable output.
❓ 4. How can I speed up translation?
Increase the MAX_CONCURRENT_JOBS variable to allow parallel translation tasks.
However, make sure to respect your API rate limits to avoid throttling.
❓ 5. Do I need a database?
Lingarr works out of the box with SQLite.
For multi-server or high-availability setups, you can switch to MySQL by updating the DB_CONNECTION and related credentials.
10. How to Contribute
Lingarr is a community-driven open-source project, and contributions of all kinds are welcome—bug reports, feature ideas, documentation improvements, or direct code submissions.
Special thanks to the open-source ecosystem and contributors such as AlexPoint, Lucide, and the selfh.st and r/selfhosted communities for their ongoing support.
11. Final Thoughts
Lingarr isn’t just another subtitle converter—it represents a new generation of automation tools that blend AI precision with open-source flexibility.
For content creators, it saves hours of manual translation work.
For developers, it provides a programmable API that integrates into any workflow.
For viewers, it breaks down language barriers, making global content more accessible than ever.
If you’ve ever wanted a system that “just understands your subtitle workflow,”
Lingarr might be the missing piece in your automation stack.

