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 2026-08-19
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 2026-08-19, 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.
MyMemory Translation is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.