LibreTranslate API
Free open-source translation API: self-hostable machine translation across 30+ languages with no data sent to commercial providers. Tested curl example.
Endpoint tested and returned HTTP 200 on 2026-08-20
What is the LibreTranslate API?
LibreTranslate is a free, open-source machine translation API supporting more than 30 languages. The public instance offers limited free access, and because it is fully self-hostable, you can run translation entirely on your own infrastructure.
LibreTranslate is the only serious open-source translation API, built on the Argos Translate engine. The public instance is rate-limited and increasingly requires a key, but the software itself is AGPL and runs anywhere.
Self-hosting is the real value proposition. If you are translating anything sensitive — internal documents, customer messages, medical or legal text — running LibreTranslate locally means the content never leaves your infrastructure, which no commercial translation API can offer.
Quick facts
- Base URL
https://libretranslate.com- Authentication
- The /languages endpoint is open. Translation on the public instance is rate-limited and may require a free key; self-hosted instances have no such limits.
- Rate limit
- Tight on the public instance — roughly 20 requests per minute. Unlimited when self-hosted.
- Pricing
- Free and open source (AGPL). The hosted instance sells API keys for higher limits.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the LibreTranslate API
Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.
1. List supported languages
GET https://libretranslate.com/languages
curl 'https://libretranslate.com/languages'const res = await fetch("https://libretranslate.com/languages");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://libretranslate.com/languages", timeout=20)
res.raise_for_status()
print(res.json())[
{
"code": "en",
"name": "English",
"targets": [
"ar",
"az",
"bg",
"bn",
"ca",
"cs",
"da",
"de",
"el",
"en",
"eo",
"es",
"et",
"eu",
"fa",
"fi",
"fr",
"ga",
"gl",
"he",
"hi",
"hu",
"id",
"it",
"ja",
"ko",
"ky",
"lt",
"lv",
"ms",
"nb",
"nl",
"pt-BR",
"pl",
"pt",
"ro",
"ru",
"sk",
"sl",
"sq",
"sr",
"sv",
"sw",
"th",
"tl",
"tr",
"uk",
"ur",
"vi",
"zh-Hans",
"zh-Hant"
]
},
{
"code": "sq",
"name": "Albanian",
"targets": [
"ar",
"az",
"bg",
"bn",
"ca",
"cs",
"da",
"de",
"el",
"en",
"eo",
"es",
"et",
"eu",
"fa",
"fi",
"fr",
"ga",
"gl",
"he",
"hi",
"hu",
"id",
"it",
"ja",
"ko",
"ky",
"lt",
"lv",
"ms",
"nb",
"nl",
"pt-BR",
"pl",
"pt",
"ro",
"ru",
"sk",
"sl",
"sq",
"sr",
"sv",
"sw",
"th",
"tl",
"tr",
"uk",
"ur",
"vi",
"zh-Hans",
"zh-Hant"
]
},
{
"code": "ar",
"name": "Arabic",
"targets": [
"ar",
"az",
"bg",
"bn",
"ca",
"cs",
"da",
"de",
"el",
"en",
"eo",
"es"Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
languages | path | Optional | All supported languages and their targets. languages |
translate | path | Optional | POST endpoint for translation. translate |
q | string | Optional | Text to translate, in the POST body. Hello world |
source / target | string | Optional | Language codes, or `auto` for source detection. en |
format | string | Optional | text or html — html preserves markup. text |
Response fields
[].codestring- Language code such as en or es.
[].namestring- Language name in English.
[].targetsarray- Which languages this one can translate into.
(translate) translatedTextstring- The translated output.
(translate) detectedLanguageobject- Detected source when using auto.
What you can build with the LibreTranslate API
- Translate sensitive content without sending it to a third party
- Add multilingual support to a self-hosted application
- Build privacy-conscious translation features
- Avoid per-character billing by self-hosting
Common errors and how to fix them
429 or 403 on the public instance
Public translation is tightly limited and may need a key.
Fix: Self-host — it is the intended deployment model and removes all limits.
Lower quality than commercial engines
Argos Translate is smaller than Google or DeepL models.
Fix: Acceptable for many uses, but evaluate on your own content before committing.
HTML markup mangled
The default format is plain text.
Fix: Pass format=html to preserve tags during translation.
LibreTranslate API — frequently asked questions
Is LibreTranslate free?
The software is free and open source under the AGPL. The public hosted instance is rate-limited and increasingly requires a key, but self-hosting is unlimited and free.
Why self-host a translation API?
Privacy. Translated text never leaves your infrastructure, which matters for internal documents, customer messages or regulated content — something no commercial translation API can offer.
How does translation quality compare with Google Translate?
Lower. It uses the smaller open Argos Translate models. Quality is acceptable for many purposes but you should evaluate it on your own content first.
Can it translate HTML without breaking the markup?
Yes, pass format=html and it preserves tags while translating the text content.
Tools that pair with this API
Word Counter
Count words, characters, sentences, paragraphs and estimated reading time instantly. Free online word counter for essays, blogs and social media.
Character Counter
Count characters with and without spaces in real time and check limits for Twitter/X, Instagram captions, meta descriptions and SMS messages.
HTML Formatter
Format HTML online with clean, consistent indentation. This HTML formatter handles void elements and preserves pre, script and style exactly. Free and private.
LibreTranslate is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.