MyMemory Translation API
Free translation API with no key: machine translation plus a human translation memory across 100+ language pairs. 5,000 words/day anonymously. Tested.
Endpoint tested and returned HTTP 200 on 19 Aug 2026
What is the MyMemory Translation API?
MyMemory is a free translation API that combines machine translation with the world's largest translation memory of human-translated segments, supporting over 100 language pairs with no API key required.
MyMemory is distinctive because it searches a translation memory of professionally translated segments before falling back to machine translation. For common phrases you often get a human translation, which reads considerably better than raw MT.
The `match` score tells you which you got: 1.0 indicates an exact human match from the memory, while lower scores indicate fuzzy matches or machine output. Checking that field is the difference between a good integration and a naive one.
Quick facts
- Base URL
https://api.mymemory.translated.net- Authentication
- No key needed for anonymous use. Adding a valid email via the `de` parameter doubles the daily allowance.
- Rate limit
- 5,000 words per day anonymously; 50,000 per day with an email address supplied.
- Pricing
- Free at those volumes; paid plans for higher usage.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the MyMemory Translation API
Every request below was executed against the live API on 19 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Translate text between languages
GET https://api.mymemory.translated.net/get?q=hello&langpair=en|es
curl 'https://api.mymemory.translated.net/get?q=hello&langpair=en|es'const res = await fetch("https://api.mymemory.translated.net/get?q=hello&langpair=en|es");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.mymemory.translated.net/get?q=hello&langpair=en|es", timeout=20)
res.raise_for_status()
print(res.json()){
"responseData": {
"translatedText": "testvalue",
"match": 1
},
"quotaFinished": false,
"mtLangSupported": null,
"responseDetails": "",
"responseStatus": 200,
"responderId": null,
"exception_code": null,
"matches": [
{
"id": "437829924887230034",
"segment": "hello",
"translation": "testvalue",
"source": "en-GB",
"target": "es-ES",
"quality": "74",
"reference": null,
"usage-count": 4,
"subject": "All",
"created-by": "MateCat",
"last-updated-by": "MateCat",
"create-date": "2026-07-15 02:13:51",
"last-update-date": "2026-07-15 02:13:51",
"match": 1,
"penalty": 0
},
{
"id": "437829924865166059",
"segment": "hello",
"translation": "hello",
"source": "en-US",
"target": "es-ES",
"quality": 74,
"reference": null,
"usage-count": 2,
"subject": "",
"created-by": "MateCat",
"last-updated-by": "MateCat",
"create-date": "2026-04-27 23:56:23",
"last-update-date": "2026-04-27 23:56:23",
"match": 0.99,
"penalty": 0
},
{
"id": "437829924648688591",
"segment": "hello",
"translation": "Murciano",
"source": "en-GB",
"target": "es-ES",
"quality": 74,
"reference": null,
"usage-count": 4,
"subject": "",
"created-by": "MateCat",
"last-updated-by": "MateCat",
"create-date": "2024-11-13 20:04:57",
"last-update-date": "2024-11-13 20:04:57",
"match": 0.99,
"penalty": 0
}
]
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | Required | Text to translate. URL-encode it. hello |
langpair | string | Required | Source and target as `en|es`. en|es |
de | string | Optional | A valid email address, which raises the daily limit. you@example.com |
mt | integer | Optional | Set to 0 to return only human memory matches. 1 |
Response fields
responseData.translatedTextstring- The translated text.
responseData.matchnumber- Match quality, 1.0 meaning an exact human translation.
responseStatusinteger- 200 on success.
matchesarray- All candidate translations with quality scores and sources.
quotaFinishedboolean- True when the daily allowance is exhausted.
What you can build with the MyMemory Translation API
- Add translation to a multilingual site or app
- Localise user-generated content on the fly
- Pre-translate content for human review
- Look up professional translations of standard phrases
Common errors and how to fix them
quotaFinished: true
Daily word allowance exhausted.
Fix: Pass a valid email in the `de` parameter to raise the limit from 5,000 to 50,000 words per day.
Poor translation quality
You received machine output rather than a memory match.
Fix: Check `responseData.match` — below 1.0 means it is not an exact human translation.
403 or invalid langpair
Malformed language pair.
Fix: Use ISO codes separated by a pipe, e.g. en|es, and URL-encode the pipe if needed.
MyMemory Translation API — frequently asked questions
Is MyMemory translation free?
Yes, 5,000 words per day anonymously with no API key. Supplying a valid email in the `de` parameter raises that to 50,000 words per day.
What is the match field?
Translation quality. A value of 1.0 means an exact match from the human translation memory; lower values indicate a fuzzy match or machine translation.
How is this different from Google Translate?
MyMemory searches a large memory of professionally translated segments first, so common phrases often return a genuine human translation rather than machine output.
Can I get only human translations?
Yes, pass mt=0 to suppress machine translation and return only translation memory matches — though many queries will then return nothing.
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.
URL Encoder
Percent-encode text for URLs instantly. Switch between encodeURIComponent and encodeURI modes, see live output and copy the result. Free URL encoder.
Alternatives to MyMemory Translation API
If MyMemory Translation does not fit, these text analysis apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| LanguageTool | Free grammar and spell checking API with no key: detect spelling, grammar and style errors in 25+ languages with suggested corrections. Tested GET and POST. | No key | Yes | 19 Aug 2026 |
| PurgoMalum | Free profanity filter API with no key: remove or mask offensive words from text, with custom word lists and configurable replacement characters. Tested. | No key | Yes | 19 Aug 2026 |
| LibreTranslate | Free open-source translation API: self-hostable machine translation across 30+ languages with no data sent to commercial providers. Tested curl example. | No key | Yes | 20 Aug 2026 |
| EmojiHub | Free emoji API with no key: random or filtered emoji with names, categories, groups, HTML entity codes and Unicode code points. Tested curl example. | No key | No | 20 Aug 2026 |
| RhymeBrain | Free rhyming dictionary API with no key: rhymes scored and ranked, with syllable counts and frequency, plus portmanteau and word-info functions. Tested example included. | No key | Yes | 21 Aug 2026 |
| text-processing.com Sentiment | Free sentiment analysis API with no key: POST a block of text, get back a positive, negative or neutral label with probabilities for each class. Tested example included. | No key | No | 21 Aug 2026 |
MyMemory Translation is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 19 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.