BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

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
curl 'https://api.mymemory.translated.net/get?q=hello&langpair=en|es'
JavaScript (fetch)
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);
Python (requests)
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())
Response — HTTP 200
{
  "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

ParameterTypeRequiredDescription
qstringRequiredText to translate. URL-encode it. hello
langpairstringRequiredSource and target as `en|es`. en|es
destringOptionalA valid email address, which raises the daily limit. you@example.com
mtintegerOptionalSet 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

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.