{
  "data": {
    "a": {
      "slug": "libretranslate",
      "name": "LibreTranslate",
      "vendor": "LibreTranslate",
      "vendorUrl": "https://libretranslate.com",
      "kind": "http-api",
      "category": "translation",
      "summary": "Open-source machine translation API built on Argos Translate models.",
      "url": "https://www.anchorterminal.com/tools/libretranslate",
      "markdownUrl": "https://www.anchorterminal.com/tools/libretranslate.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/libretranslate.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/libretranslate.json",
      "dns": "libretranslate.grade.anchorterminal.com",
      "repo": "https://github.com/LibreTranslate/LibreTranslate",
      "license": "AGPL-3.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://libretranslate.com",
      "packages": [
        {
          "registry": "pypi",
          "name": "libretranslate"
        }
      ],
      "auth": "api-key",
      "authNotes": "`api_key` in the request body on libretranslate.com. A self-hosted server can run without keys or require them with `--api-keys`.",
      "pricing": "paid",
      "pricingNotes": "No free hosted tier. Pro is $29 a month with bursts of up to 80 calls a minute (about 20 sustained), Business $58 with bursts of 200 (about 50 sustained). Each call takes up to 2,000 characters. Both come with a 7-day money-back guarantee (https://portal.libretranslate.com). Self-hosting is free under AGPL-3.0 (https://github.com/LibreTranslate/LibreTranslate).",
      "priceSummary": "$29 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 16700,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.libretranslate.com",
      "openapi": "https://libretranslate.com/spec",
      "capabilities": [
        "translate.text",
        "translate.documents",
        "translate.detect"
      ],
      "tags": [
        "hosted",
        "open-source",
        "self-hosted",
        "openapi",
        "python",
        "card-required"
      ],
      "lastRelease": "2026-05-26",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 43.7,
        "grade": "E",
        "agentReady": false,
        "rank": 1244,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 12,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 65,
          "maintenance": 40,
          "payments": 40,
          "reliability": 35,
          "schema": 45,
          "security": 45,
          "transparency": 62
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": -3,
        "negativeNotes": [
          "-3, a security fix in no release. On 14 June 2026 commit 397fd22 added `--trust-forwarded-for`, fixing the X-Forwarded-For IP spoofing that let a caller dodge per-IP rate limits and bans (CVE-2026-57942, Medium 6.9, published by VulnCheck on 29 June 2026). The latest release, 1.9.6 of 26 May, predates it, and the 26 September fix keeping translated text out of the web page's URL is unreleased too. The CVE, a VulnCheck Medium whose fix is in no release, isn't counted again as an advisory. Charged until a release carries them (https://github.com/LibreTranslate/LibreTranslate/commit/397fd224080515d4001a1bc60c8fed53e3c56b6f).",
          "Not charged, CVE-2026-92803 (Medium 6.9, VulnCheck, 16 September 2026), the `download_file` route in LibreTranslate's own app.py without the access check through 1.9.6, still without the check on the main branch on 25 October. Unfixed Mediums that a third party such as VulnCheck published are left uncounted pending a ruling, as Plane's and Documenso's own-code records were (https://osv.dev/list?q=libretranslate)."
        ],
        "verdict": "Open source under AGPL-3.0 and self-hostable, so text can stay on your own network. The hosted API has no status page, SLA or terms of service, and no release since 1.9.6 in May 2026 carries a June fix for IP spoofing.",
        "bestFor": "Operators who must keep text on their own servers or want a fixed cost, and for light hosted use.",
        "strengths": [
          "Open source under AGPL-3.0, self-hosted with no text leaving your network",
          "Docs carry worked requests and responses and list error answers per operation",
          "Hosted privacy policy says texts aren't stored or logged",
          "Flat monthly price, no per-character metering",
          "Official MCP server with three tools, published on npm"
        ],
        "weaknesses": [
          "No status page, SLA or terms of service for the hosted API",
          "2,000 characters a call and about 20 calls a minute sustained on Pro",
          "No release since 1.9.6 on 2026-05-26, so the June IP-spoofing fix is unreleased",
          "No security.txt, SECURITY.md or disclosure policy",
          "No published machine-readable spec link outside the API host"
        ],
        "agentNotes": [
          "Split text into calls of 2,000 characters or fewer on the hosted service",
          "Pace to about 20 calls a minute on Pro, since repeated 429s turn into a 403 ban",
          "Pass `source=auto` to detect and translate in one call",
          "Set `format=html` for markup",
          "Behind a reverse proxy, run a build from the main branch with `--trust-forwarded-for` until a release carries it"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 43.7
          }
        ],
        "editorialScores": {
          "ergonomics": 65,
          "maintenance": 40,
          "payments": 40,
          "reliability": 35,
          "schema": 45,
          "security": 45,
          "transparency": 55
        },
        "provenanceScore": 69,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install libretranslate",
        "http": "curl -X POST https://libretranslate.com/translate \\\n  -d q=\"Your table is booked for seven.\" -d source=auto -d target=fr -d format=text \\\n  -d api_key=\"$LIBRETRANSLATE_API_KEY\""
      },
      "letme": {
        "capability": "https://letme.dev/translate.text",
        "tool": "https://letme.dev/libretranslate"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 29,
          "note": "2,000 characters a call, about 20 calls a minute sustained"
        },
        {
          "item": "Business plan",
          "unit": "month",
          "usd": 58,
          "note": "About 50 calls a minute sustained"
        }
      ],
      "provenance": {
        "legalEntity": "LibreTranslate",
        "domain": "libretranslate.com",
        "domainRegistered": "2020-12-20",
        "endpointOnVendorDomain": true,
        "terms": "",
        "privacy": "https://portal.libretranslate.com/privacy.html",
        "statusPage": "",
        "changelog": "https://github.com/LibreTranslate/LibreTranslate/releases",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "The privacy policy gives a St Petersburg, Florida address and names no company beyond LibreTranslate.",
          "We found no terms of service for the hosted API. Payments go through Stripe.",
          "libretranslate.com/.well-known/security.txt returns 404."
        ],
        "score": 69
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/libretranslate.json",
      "live": {
        "slug": "libretranslate",
        "probe": {
          "target": "https://libretranslate.com",
          "method": "get",
          "lastAt": "2026-11-07T19:22:16.454325346Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 246,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.97,
          "p50ms24h": 160,
          "p95ms24h": 245,
          "samples24h": 238,
          "samples30d": 7920,
          "days": [
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 251
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 249
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "LibreTranslate/LibreTranslate",
            "version": "v1.9.6",
            "released": "2026-05-26",
            "seenAt": "2026-11-06T23:39:47.000290649Z"
          },
          {
            "registry": "pypi",
            "name": "libretranslate",
            "version": "1.9.6",
            "released": "2026-05-26",
            "seenAt": "2026-11-06T23:39:46.786721554Z"
          }
        ],
        "githubStars": 17287,
        "pypiWeekly": 2041,
        "securityTxt": {
          "url": "https://libretranslate.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:08.426144656Z"
        },
        "domain": {
          "domain": "libretranslate.com",
          "registered": "2020-12-20",
          "source": "https://rdap.verisign.com/com/v1/domain/libretranslate.com",
          "checkedAt": "2026-11-01T14:27:18.928967376Z"
        },
        "pages": [
          {
            "url": "https://portal.libretranslate.com/privacy.html",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-11-07T14:17:05.468373165Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "52b049f96b7c"
          }
        ],
        "github": {
          "repo": "libretranslate/libretranslate",
          "checkedAt": "2026-11-02T09:00:38.932309395Z",
          "stars": 17250,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-26T03:14:14Z",
          "openIssues": 132,
          "openPRs": 0,
          "issuesOpened90d": 17,
          "issuesClosed90d": 10,
          "prsMerged90d": 3,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 47,
            "failure": 3,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-26T03:31:20Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 10,
            "medianDays": 0.1
          }
        },
        "updatedAt": "2026-11-07T19:22:16.454325346Z"
      }
    },
    "answer": "LibreTranslate scores 43.7 (E) on agent readiness against TranslatePlus's 39.7 (E), and leads in 5 of 7 scored categories. TranslatePlus leads on reliability and schema \u0026 documentation.",
    "b": {
      "slug": "translateplus",
      "name": "TranslatePlus",
      "vendor": "PetaBytes, Inc.",
      "vendorUrl": "https://translateplus.io",
      "kind": "http-api",
      "category": "translation",
      "summary": "TranslatePlus is a machine translation API from PetaBytes, Inc. for text, batches, HTML, emails, subtitles and i18n files in more than 100 languages, with language detection, priced per request.",
      "url": "https://www.anchorterminal.com/tools/translateplus",
      "markdownUrl": "https://www.anchorterminal.com/tools/translateplus.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/translateplus.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/translateplus.json",
      "dns": "translateplus.grade.anchorterminal.com",
      "repo": "https://github.com/translateplus/translateplus-js",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "translateplus-python"
        },
        {
          "registry": "npm",
          "name": "translateplus-js"
        }
      ],
      "auth": "api-key",
      "authNotes": "One API key per account from the dashboard at app.translateplus.io after a browser or Google OAuth signup, sent in the X-API-KEY header. The docs say the key carries full access to the account; keys can be revoked in the dashboard. No scopes.",
      "pricing": "freemium",
      "pricingNotes": "Free plan of 5,000 requests a month at 500 characters each, then $0.001 a request. Basic $49 a month (250,000 requests), Professional $99 (700,000) and Mega $299 (3,000,000), with 1,000 to 2,000 characters per request.",
      "priceSummary": "$0.001 / call",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in either llms.txt, the docs or the pricing page (checked 2026-11-06). Payments go through third-party processors.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 6,
        "pypiWeekly": 4,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.translateplus.io/",
      "llmsTxt": "https://translateplus.io/llms.txt",
      "capabilities": [
        "translate.text",
        "translate.documents",
        "translate.detect"
      ],
      "tags": [
        "hosted",
        "api-key",
        "freemium",
        "free-tier",
        "llms-txt",
        "python",
        "typescript",
        "java",
        "php",
        "batch",
        "async-jobs",
        "closed-source"
      ],
      "lastRelease": "2026-01-11",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 39.7,
        "grade": "E",
        "agentReady": false,
        "rank": 1335,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 15,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 61,
          "maintenance": 10,
          "payments": 30,
          "reliability": 45,
          "schema": 52,
          "security": 35,
          "transparency": 52
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": -3,
        "negativeNotes": [
          "Misleading claim (-3): llms.txt on translateplus.io, read 6 November 2026, lists a '99.9% uptime SLA' and 'SLA Guarantees', while the terms of service (last updated 18 December 2024) say TranslatePlus strives for 99.9% uptime 'but do not guarantee uninterrupted service'. https://translateplus.io/llms.txt and https://translateplus.io/terms-of-service"
        ],
        "verdict": "TranslatePlus has a simple key-in-header REST API with per-request prices from $0.0001, a 5,000-request free plan, batch, HTML, subtitle and i18n endpoints and documented 429 handling. Its changelog and SDKs haven't changed since January 2026 or earlier, the status page is stale, and llms.txt promises an SLA the terms disclaim.",
        "bestFor": "Low-cost per-request translation of short strings, HTML, emails, subtitles and i18n files for small projects.",
        "strengths": [
          "Per-request prices published, $0.001 after the free tier and down to $0.0001 on the $299 plan",
          "Free plan of 5,000 requests a month",
          "Endpoints for batch, HTML, email, subtitle and i18n file translation plus language detection",
          "429 responses with X-RateLimit headers and a documented wait-for-reset pattern",
          "Key sent in the X-API-KEY header, never the URL"
        ],
        "weaknesses": [
          "llms.txt claims a 99.9% uptime SLA and SOC 2 Type II, while the terms disclaim any uptime guarantee and no audit is named",
          "The changelog stops at December 2024 and the SDKs at January 2026",
          "The status page showed 'All systems unknown' and a last update of 22 January 2026",
          "One account key with full access, no scopes",
          "The terms name PetaBytes, Inc. but no address or governing law"
        ],
        "agentNotes": [
          "Send the key as X-API-KEY; there is no read-only or scoped key",
          "Use /v2/translate/batch for up to 100 texts instead of looping single calls",
          "Keep each text under the plan's per-request character limit (500 on Free, up to 2,000 on Mega)",
          "On 429 wait until X-RateLimit-Reset, then retry a few times at most",
          "Don't rely on an SLA; the terms don't guarantee uptime"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 39.7
          }
        ],
        "editorialScores": {
          "ergonomics": 61,
          "maintenance": 10,
          "payments": 30,
          "reliability": 45,
          "schema": 52,
          "security": 35,
          "transparency": 23
        },
        "provenanceScore": 81,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install translateplus-python",
        "http": "curl -X POST https://api.translateplus.io/v2/translate -H \"X-API-KEY: $TRANSLATEPLUS_API_KEY\" -H \"Content-Type: application/json\" -d '{\"text\":\"Hello\",\"source\":\"en\",\"target\":\"fr\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/translate.text",
        "tool": "https://letme.dev/translateplus"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Request after the free tier",
          "unit": "call",
          "usd": 0.001,
          "note": "Free plan, 500 characters per request"
        },
        {
          "item": "Basic plan",
          "unit": "month",
          "usd": 49,
          "note": "250,000 requests, 1,000 characters each"
        },
        {
          "item": "Mega plan",
          "unit": "month",
          "usd": 299,
          "note": "3,000,000 requests, 2,000 characters each"
        }
      ],
      "provenance": {
        "legalEntity": "PetaBytes, Inc.",
        "domain": "translateplus.io",
        "domainRegistered": "2023-01-30",
        "endpointOnVendorDomain": true,
        "terms": "https://translateplus.io/terms-of-service",
        "privacy": "https://translateplus.io/privacy-policy",
        "statusPage": "https://status.translateplus.io",
        "changelog": "https://docs.translateplus.io/guides/changelog",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms (last updated 18 December 2024) and the about page name PetaBytes, Inc., a US-based corporation, as operator and billing party. No address, state of incorporation or governing law is given.",
          "The home page names no legal entity, as the sweep noted; the terms and about page do.",
          "translateplus.io/.well-known/security.txt returns 404.",
          "RDAP gives translateplus.io a registration date of 30 January 2023.",
          "robots.txt on translateplus.io allows all agents; docs.translateplus.io disallows /api/ and /admin/, which weren't fetched."
        ],
        "score": 81
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/translateplus.json",
      "live": {
        "slug": "translateplus",
        "vendorStatus": {
          "page": "https://status.translateplus.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:53.407307635Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "translateplus/translateplus-js",
            "version": "v2.0.3",
            "released": "2026-01-11",
            "seenAt": "2026-11-07T00:12:43.487331Z"
          },
          {
            "registry": "npm",
            "name": "translateplus-js",
            "version": "2.0.1",
            "seenAt": "2026-11-07T00:12:43.099950457Z"
          },
          {
            "registry": "pypi",
            "name": "translateplus-python",
            "version": "2.0.7",
            "released": "2026-01-11",
            "seenAt": "2026-11-07T00:12:42.911714719Z"
          }
        ],
        "githubStars": 0,
        "npmWeekly": 6,
        "pypiWeekly": 4,
        "securityTxt": {
          "url": "https://translateplus.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:44.17894812Z"
        },
        "llmsTxt": {
          "url": "https://translateplus.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:10.649421836Z"
        },
        "pages": [
          {
            "url": "https://docs.translateplus.io/guides/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:08:22.717992878Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a0f0c5a14906"
          },
          {
            "url": "https://translateplus.io/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:22:21.573523178Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b272e83390f6"
          },
          {
            "url": "https://translateplus.io/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:22:23.795736869Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "298ba99dd1b5"
          }
        ],
        "updatedAt": "2026-11-07T16:01:44.17894812Z"
      }
    },
    "edges": [
      {
        "by": 30,
        "category": "maintenance",
        "leads": "libretranslate",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Last release v1.9.6 on 2026-05-26, 162 days before 4 November (10). No release in the 90 days from 6 August. The repository has 18 commits since then (web UI changes, the URL fix, Weblate translations, a Docker thread setting and a CI runner move), the latest on 25 October. VERSION still reads 1.9.6, and per-commit Docker images aren't releases. The official MCP server @libretranslate/mcp last tagged v1.0.2 on 17 May 2026 (0). Issues per the 1 October check, not re-read on 4 November, since GitHub's pages refuse us (127 open, newest labelled by an automated triage bot, some with 1 to 4 comments) (15 of 25). Current PyPI and Docker packages, no official client SDK (5 of 15). CI runs pytest on Python 3.8 to 3.14 plus Docker builds, with runners moved to Ubuntu 24.04 on 25 October (10).",
          "b": "The newest dated change found is translateplus-python 2.0.7 and translateplus-js 2.0.1 on 11 January 2026, about ten months before this check, and the API changelog stops at 9 December 2024 (0). No release or dated change in the last 90 days (0). Support by email and a support portal; the status page hasn't updated since January (3). SDKs exist for four languages but haven't changed since January (5). Weekly downloads of 4 (PyPI) and 6 (npm) (2). 0+0+3+5+2 = 10."
        },
        "scores": {
          "a": 40,
          "b": 10
        }
      },
      {
        "by": 10,
        "category": "reliability",
        "leads": "translateplus",
        "name": "Reliability",
        "reasons": {
          "a": "Read as the hosted API at libretranslate.com, since the listing is an http-api. No status page found (0). No readable incident history (5). Plan limits published with numbers on the portal, re-read on 4 November, 80 calls a minute burst and about 20 sustained on Pro, 200 and about 50 on Business, 2,000 characters a call (15). The docs API reference lists a 429 \"Slow down\" answer on each operation, and the server code bans a client after repeated limit violations, but there's no Retry-After or backoff advice (5 of 15, an in-between value kept from 1 October). No SLA (0). Release 1.9.6 is a stable release, not beta (10). Self-hosted, the package reading would score far higher, with CI across Python 3.8 to 3.14 and a 1.x release line.",
          "b": "Hosted lines. status.translateplus.io is the vendor's own page; on 6 November 2026 it showed 'All systems unknown' and a last update of 22 January 2026, with data loading by script (5). No incident history to read (5). The rate-limits guide gives 100,000 requests a minute and 100,000,000 an hour per key, while llms.txt gives 50 requests a second on the Free plan, so limits are published but inconsistent (10). 429 returns a JSON detail message, responses carry X-RateLimit-Limit, -Remaining and -Reset, and the guide shows waiting for the reset with capped retries (15). No SLA. The terms say TranslatePlus strives for 99.9% uptime 'but do not guarantee uninterrupted service' (0). API v2 is the current, non-beta version (10). 5+5+10+15+0+10 = 45."
        },
        "scores": {
          "a": 35,
          "b": 45
        }
      },
      {
        "by": 10,
        "category": "security",
        "leads": "libretranslate",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Model reading of the checklist, with training and retention in place of the least-privilege and injection lines. One API key per hosted plan, sent in the request body, with no scopes or rotation found. A self-hosted server can run keyless or require keys (10 of 30). The hosted privacy policy (last updated 23 September 2025, re-read 4 November) says translation texts aren't stored or logged, so nothing is kept to train on (20). IP addresses and API keys are kept for 2 days against abuse, no text retained (15). No usage log or per-call view found for the hosted plans (0). No SECURITY.md in the repository on 4 November and no disclosure policy or bug bounty found; libretranslate.com security.txt per the 30 September check, not re-read (0). Two VulnCheck CVEs in 2026, both Medium, are in the negative events. Self-hosting under AGPL-3.0 keeps all text on your own network.",
          "b": "One API key per account in the X-API-KEY header, which the docs say 'carries full access to your account's resources', and can be revoked in the dashboard (15). No scopes or read-only keys (5). Translations return the caller's own text, so little untrusted content (10). llms.txt claims request logging and an analytics dashboard, which we couldn't see without an account (5). translateplus.io/.well-known/security.txt returns 404 and no disclosure policy was found; llms.txt says 'SOC 2 compliant' and 'SOC 2 Type II certified infrastructure' with no report or auditor named (0). 15+5+10+5+0 = 35."
        },
        "scores": {
          "a": 45,
          "b": 35
        }
      },
      {
        "by": 10,
        "category": "payments",
        "leads": "libretranslate",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Flat monthly plans with published limits, $29 Pro and $58 Business, not per-unit pricing (10). No hosted free tier or trial, only a 7-day money-back guarantee (the portal FAQ says no free trial). We depart from the rubric and give the free line for the self-hosted server, which runs the same API free and with no card (20). An agent can `pip install libretranslate` and run a keyless server, but the hosted plans need a person at a Stripe checkout (10 of 20).",
          "b": "No x402, MPP or L402 (0). Per-request prices public, $0.001 a request after the free tier and $0.0001 to $0.0002 on the $49, $99 and $299 monthly plans (20). Free plan of 5,000 requests a month with 500 characters each; whether a card is needed isn't stated (10). A person signs up in a browser or with Google OAuth (0). 0+20+10+0 = 30."
        },
        "scores": {
          "a": 40,
          "b": 30
        }
      },
      {
        "by": 10,
        "category": "transparency",
        "leads": "libretranslate",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Open source under AGPL-3.0 (30). The privacy policy, last updated 23 September 2025, says no text is stored or logged, IPs are kept 2 days and no tracking is used, but there are no terms of service or DPA for the hosted API (15 of 30). No deprecation policy or dated notices found (0). We found no telemetry in the server code. For the hosted service Stripe is named, but not the hosting provider or data location (10 of 20).",
          "b": "Editorial half only. Closed service under terms last updated 18 December 2024 that name PetaBytes, Inc. as a US corporation but give no address, governing law or courts (10). The terms say translation requests aren't permanently stored 'unless required by law', the privacy policy says 'unless required for caching or service improvement purposes', and the terms allow using anonymised usage data to improve the service (8). API v1 is kept as legacy, with no dated deprecation notice (5). No subprocessor list or data location found (0). 10+8+5+0 = 23."
        },
        "scores": {
          "a": 62,
          "b": 52
        }
      },
      {
        "by": 7,
        "category": "schema",
        "leads": "translateplus",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "The Swagger 2.0 document the 1 October check read at libretranslate.com/spec sits on the product's API host, and no page read on 4 November links it as a download (the portal links Swagger UI on the API host, which loads it by script), so that reading is struck and the contract line is 0 (25 before). No llms.txt at docs.libretranslate.com (404 on 4 November) (0). The docs API reference at docs.libretranslate.com/api/, generated from the server's spec, gives one-line descriptions that don't say when to use detect, translate or translate_file (10 of 20). `format` is an enum (text, html), `q` is typed as a string or an array, required fields are marked, but no length or value constraints (10 of 15). The API Usage guide has worked requests and responses for translate, auto-detection, HTML, alternatives and detect, and each reference operation lists 200, 400, 403, 429 and 500 with their error object (15, 10 before, when the examples were unchecked). GitHub releases and tags, no CHANGELOG file (10 of 15).",
          "b": "No OpenAPI or other machine-readable contract found in the docs or either llms.txt (0). llms.txt on the site and on docs.translateplus.io (10). Endpoint pages say what each call does, with little on when to choose HTML, email or i18n jobs over plain text (10). Required fields and per-plan character limits per request are documented, without enums for language codes beyond a supported-languages call (10). Code examples in several languages and an error-handling guide with status codes (12). Versioned /v1 and /v2 paths and a changelog, whose newest entry is 2.0.0 on 9 December 2024 (10). 0+10+10+10+12+10 = 52."
        },
        "scores": {
          "a": 45,
          "b": 52
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "LibreTranslate",
        "b": "PetaBytes, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://libretranslate.com",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "AGPL-3.0",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-05-26",
        "b": "2026-01-11",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "2024-12-18",
        "name": "Terms last updated"
      },
      {
        "a": "2025-09-23",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "17k stars",
        "b": "6 npm/wk, 4 PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "4/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "LibreTranslate scores 43.7 (E) on agent readiness against TranslatePlus's 39.7 (E), and leads in 5 of 7 scored categories. TranslatePlus leads on reliability and schema \u0026 documentation.",
        "question": "Which is better for AI agents, LibreTranslate or TranslatePlus?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do LibreTranslate and TranslatePlus need an API key?"
      },
      {
        "answer": "LibreTranslate has a hosted endpoint at https://libretranslate.com. No hosted endpoint is listed for TranslatePlus.",
        "question": "Can an agent call LibreTranslate and TranslatePlus without installing anything?"
      },
      {
        "answer": "LibreTranslate is open source (AGPL-3.0). No open-source release is listed for TranslatePlus.",
        "question": "Are LibreTranslate and TranslatePlus open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 45 against 35",
          "Payments \u0026 pricing, 40 against 30",
          "Maintenance \u0026 community, 40 against 10",
          "Transparency \u0026 trust, 62 against 52"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "Open source"
        ],
        "goodFor": "Operators who must keep text on their own servers or want a fixed cost, and for light hosted use.",
        "slug": "libretranslate",
        "watchFor": "No status page, SLA or terms of service for the hosted API"
      },
      {
        "aheadOn": [
          "Reliability, 45 against 35",
          "Schema \u0026 documentation, 52 against 45"
        ],
        "also": null,
        "goodFor": "Low-cost per-request translation of short strings, HTML, emails, subtitles and i18n files for small projects.",
        "slug": "translateplus",
        "watchFor": "llms.txt claims a 99.9% uptime SLA and SOC 2 Type II, while the terms disclaim any uptime guarantee and no audit is named"
      }
    ],
    "history": {
      "libretranslate": [
        {
          "causes": [
            "evidence",
            "correction"
          ],
          "date": "2026-11-04",
          "delta": -6.2,
          "from": 49.9,
          "fromGrade": "D",
          "to": 43.7,
          "toGrade": "E"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 49.8,
          "fromGrade": "D",
          "to": 49.9,
          "toGrade": "D"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": 0,
          "from": 49.8,
          "fromGrade": "D",
          "to": 49.8,
          "toGrade": "D"
        }
      ],
      "translateplus": null
    },
    "job": {
      "capability": "translate.text",
      "name": "Translation"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-translate-vs-libretranslate.json",
        "title": "Amazon Translate vs LibreTranslate",
        "url": "https://www.anchorterminal.com/compare/amazon-translate-vs-libretranslate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-translate-vs-translateplus.json",
        "title": "Amazon Translate vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/amazon-translate-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-translator-vs-libretranslate.json",
        "title": "Azure Translator vs LibreTranslate",
        "url": "https://www.anchorterminal.com/compare/azure-translator-vs-libretranslate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-translator-vs-translateplus.json",
        "title": "Azure Translator vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/azure-translator-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-libretranslate.json",
        "title": "Crowdin vs LibreTranslate",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-libretranslate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crowdin-vs-translateplus.json",
        "title": "Crowdin vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/crowdin-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepl-api-vs-libretranslate.json",
        "title": "DeepL API vs LibreTranslate",
        "url": "https://www.anchorterminal.com/compare/deepl-api-vs-libretranslate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepl-api-vs-translateplus.json",
        "title": "DeepL API vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/deepl-api-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-cloud-translation-vs-libretranslate.json",
        "title": "Google Cloud Translation vs LibreTranslate",
        "url": "https://www.anchorterminal.com/compare/google-cloud-translation-vs-libretranslate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-cloud-translation-vs-translateplus.json",
        "title": "Google Cloud Translation vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/google-cloud-translation-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lara-translate-vs-libretranslate.json",
        "title": "Lara Translate API vs LibreTranslate",
        "url": "https://www.anchorterminal.com/compare/lara-translate-vs-libretranslate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lara-translate-vs-translateplus.json",
        "title": "Lara Translate API vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/lara-translate-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/libretranslate-vs-lingo-dev.json",
        "title": "LibreTranslate vs Lingo.dev",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-lingo-dev"
      },
      {
        "json": "https://www.anchorterminal.com/compare/libretranslate-vs-lingvanex.json",
        "title": "LibreTranslate vs Lingvanex Translation API",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-lingvanex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/libretranslate-vs-localazy.json",
        "title": "LibreTranslate vs Localazy",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-localazy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/libretranslate-vs-lokalise.json",
        "title": "LibreTranslate vs Lokalise",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-lokalise"
      },
      {
        "json": "https://www.anchorterminal.com/compare/libretranslate-vs-phrase.json",
        "title": "LibreTranslate vs Phrase",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-phrase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/libretranslate-vs-smartcat.json",
        "title": "LibreTranslate vs Smartcat",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-smartcat"
      },
      {
        "json": "https://www.anchorterminal.com/compare/libretranslate-vs-systran.json",
        "title": "LibreTranslate vs SYSTRAN Translate API",
        "url": "https://www.anchorterminal.com/compare/libretranslate-vs-systran"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lingo-dev-vs-translateplus.json",
        "title": "Lingo.dev vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/lingo-dev-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lingvanex-vs-translateplus.json",
        "title": "Lingvanex Translation API vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/lingvanex-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/localazy-vs-translateplus.json",
        "title": "Localazy vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/localazy-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lokalise-vs-translateplus.json",
        "title": "Lokalise vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/lokalise-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/phrase-vs-translateplus.json",
        "title": "Phrase vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/phrase-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/smartcat-vs-translateplus.json",
        "title": "Smartcat vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/smartcat-vs-translateplus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/systran-vs-translateplus.json",
        "title": "SYSTRAN Translate API vs TranslatePlus",
        "url": "https://www.anchorterminal.com/compare/systran-vs-translateplus"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 10,
        "edge": "translateplus",
        "key": "reliability",
        "libretranslate": 35,
        "name": "Reliability",
        "translateplus": 45,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 7,
        "edge": "translateplus",
        "key": "schema",
        "libretranslate": 45,
        "name": "Schema \u0026 documentation",
        "translateplus": 52,
        "weight": 13
      },
      {
        "by": 4,
        "edge": "libretranslate",
        "key": "ergonomics",
        "libretranslate": 65,
        "name": "Agent ergonomics",
        "translateplus": 61,
        "weight": 13
      },
      {
        "by": 10,
        "edge": "libretranslate",
        "key": "security",
        "libretranslate": 45,
        "name": "Security \u0026 auth",
        "translateplus": 35,
        "weight": 14
      },
      {
        "by": 10,
        "edge": "libretranslate",
        "key": "payments",
        "libretranslate": 40,
        "name": "Payments \u0026 pricing",
        "translateplus": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 30,
        "edge": "libretranslate",
        "key": "maintenance",
        "libretranslate": 40,
        "name": "Maintenance \u0026 community",
        "translateplus": 10,
        "weight": 7
      },
      {
        "by": 10,
        "edge": "libretranslate",
        "key": "transparency",
        "libretranslate": 62,
        "name": "Transparency \u0026 trust",
        "translateplus": 52,
        "weight": 7
      }
    ],
    "summary": "LibreTranslate scores 43.7 (E) on agent readiness against TranslatePlus's 39.7 (E), and leads in 5 of 7 scored categories. TranslatePlus leads on reliability and schema \u0026 documentation. Both do translation.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "libretranslate": "Open source under AGPL-3.0 and self-hostable, so text can stay on your own network. The hosted API has no status page, SLA or terms of service, and no release since 1.9.6 in May 2026 carries a June fix for IP spoofing.",
      "translateplus": "TranslatePlus has a simple key-in-header REST API with per-request prices from $0.0001, a 5,000-request free plan, batch, HTML, subtitle and i18n endpoints and documented 429 handling. Its changelog and SDKs haven't changed since January 2026 or earlier, the status page is stale, and llms.txt promises an SLA the terms disclaim."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/libretranslate-vs-translateplus",
    "json": "https://www.anchorterminal.com/compare/libretranslate-vs-translateplus.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/libretranslate-vs-translateplus.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/libretranslate-vs-translateplus.min.md"
  },
  "markdown": "LibreTranslate scores 43.7 (E) on agent readiness against TranslatePlus's 39.7 (E), and leads in 5 of 7 scored categories. TranslatePlus leads on reliability and schema \u0026 documentation. Both do translation.\n\n- LibreTranslate: grade E, 43.7/100, rank #1244 of 1510. Markdown https://www.anchorterminal.com/tools/libretranslate.md · JSON https://www.anchorterminal.com/api/v1/tools/libretranslate.json\n- TranslatePlus: grade E, 39.7/100, rank #1335 of 1510. Markdown https://www.anchorterminal.com/tools/translateplus.md · JSON https://www.anchorterminal.com/api/v1/tools/translateplus.json\n- Best machine translation APIs for AI agents: https://www.anchorterminal.com/best/translation/index.md\n- All 105 translation comparisons: https://www.anchorterminal.com/compare/translation/index.md\n\n## Which one, for what\n\n### LibreTranslate (E)\n\nGood for: Operators who must keep text on their own servers or want a fixed cost, and for light hosted use.\n\nAhead on:\n- Security \u0026 auth, 45 against 35\n- Payments \u0026 pricing, 40 against 30\n- Maintenance \u0026 community, 40 against 10\n- Transparency \u0026 trust, 62 against 52\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- Open source\n\nWatch for: No status page, SLA or terms of service for the hosted API\n\n### TranslatePlus (E)\n\nGood for: Low-cost per-request translation of short strings, HTML, emails, subtitles and i18n files for small projects.\n\nAhead on:\n- Reliability, 45 against 35\n- Schema \u0026 documentation, 52 against 45\n\nWatch for: llms.txt claims a 99.9% uptime SLA and SOC 2 Type II, while the terms disclaim any uptime guarantee and no audit is named\n\n\n## Why the edge\n\n### Maintenance \u0026 community: LibreTranslate +30\n\n- LibreTranslate (40): Last release v1.9.6 on 2026-05-26, 162 days before 4 November (10). No release in the 90 days from 6 August. The repository has 18 commits since then (web UI changes, the URL fix, Weblate translations, a Docker thread setting and a CI runner move), the latest on 25 October. VERSION still reads 1.9.6, and per-commit Docker images aren't releases. The official MCP server @libretranslate/mcp last tagged v1.0.2 on 17 May 2026 (0). Issues per the 1 October check, not re-read on 4 November, since GitHub's pages refuse us (127 open, newest labelled by an automated triage bot, some with 1 to 4 comments) (15 of 25). Current PyPI and Docker packages, no official client SDK (5 of 15). CI runs pytest on Python 3.8 to 3.14 plus Docker builds, with runners moved to Ubuntu 24.04 on 25 October (10).\n- TranslatePlus (10): The newest dated change found is translateplus-python 2.0.7 and translateplus-js 2.0.1 on 11 January 2026, about ten months before this check, and the API changelog stops at 9 December 2024 (0). No release or dated change in the last 90 days (0). Support by email and a support portal; the status page hasn't updated since January (3). SDKs exist for four languages but haven't changed since January (5). Weekly downloads of 4 (PyPI) and 6 (npm) (2). 0+0+3+5+2 = 10.\n\n### Reliability: TranslatePlus +10\n\n- LibreTranslate (35): Read as the hosted API at libretranslate.com, since the listing is an http-api. No status page found (0). No readable incident history (5). Plan limits published with numbers on the portal, re-read on 4 November, 80 calls a minute burst and about 20 sustained on Pro, 200 and about 50 on Business, 2,000 characters a call (15). The docs API reference lists a 429 \"Slow down\" answer on each operation, and the server code bans a client after repeated limit violations, but there's no Retry-After or backoff advice (5 of 15, an in-between value kept from 1 October). No SLA (0). Release 1.9.6 is a stable release, not beta (10). Self-hosted, the package reading would score far higher, with CI across Python 3.8 to 3.14 and a 1.x release line.\n- TranslatePlus (45): Hosted lines. status.translateplus.io is the vendor's own page; on 6 November 2026 it showed 'All systems unknown' and a last update of 22 January 2026, with data loading by script (5). No incident history to read (5). The rate-limits guide gives 100,000 requests a minute and 100,000,000 an hour per key, while llms.txt gives 50 requests a second on the Free plan, so limits are published but inconsistent (10). 429 returns a JSON detail message, responses carry X-RateLimit-Limit, -Remaining and -Reset, and the guide shows waiting for the reset with capped retries (15). No SLA. The terms say TranslatePlus strives for 99.9% uptime 'but do not guarantee uninterrupted service' (0). API v2 is the current, non-beta version (10). 5+5+10+15+0+10 = 45.\n\n### Security \u0026 auth: LibreTranslate +10\n\n- LibreTranslate (45): Model reading of the checklist, with training and retention in place of the least-privilege and injection lines. One API key per hosted plan, sent in the request body, with no scopes or rotation found. A self-hosted server can run keyless or require keys (10 of 30). The hosted privacy policy (last updated 23 September 2025, re-read 4 November) says translation texts aren't stored or logged, so nothing is kept to train on (20). IP addresses and API keys are kept for 2 days against abuse, no text retained (15). No usage log or per-call view found for the hosted plans (0). No SECURITY.md in the repository on 4 November and no disclosure policy or bug bounty found; libretranslate.com security.txt per the 30 September check, not re-read (0). Two VulnCheck CVEs in 2026, both Medium, are in the negative events. Self-hosting under AGPL-3.0 keeps all text on your own network.\n- TranslatePlus (35): One API key per account in the X-API-KEY header, which the docs say 'carries full access to your account's resources', and can be revoked in the dashboard (15). No scopes or read-only keys (5). Translations return the caller's own text, so little untrusted content (10). llms.txt claims request logging and an analytics dashboard, which we couldn't see without an account (5). translateplus.io/.well-known/security.txt returns 404 and no disclosure policy was found; llms.txt says 'SOC 2 compliant' and 'SOC 2 Type II certified infrastructure' with no report or auditor named (0). 15+5+10+5+0 = 35.\n\n### Payments \u0026 pricing: LibreTranslate +10\n\n- LibreTranslate (40): No x402, MPP or L402 (0). Flat monthly plans with published limits, $29 Pro and $58 Business, not per-unit pricing (10). No hosted free tier or trial, only a 7-day money-back guarantee (the portal FAQ says no free trial). We depart from the rubric and give the free line for the self-hosted server, which runs the same API free and with no card (20). An agent can `pip install libretranslate` and run a keyless server, but the hosted plans need a person at a Stripe checkout (10 of 20).\n- TranslatePlus (30): No x402, MPP or L402 (0). Per-request prices public, $0.001 a request after the free tier and $0.0001 to $0.0002 on the $49, $99 and $299 monthly plans (20). Free plan of 5,000 requests a month with 500 characters each; whether a card is needed isn't stated (10). A person signs up in a browser or with Google OAuth (0). 0+20+10+0 = 30.\n\n### Transparency \u0026 trust: LibreTranslate +10\n\n- LibreTranslate (62): Open source under AGPL-3.0 (30). The privacy policy, last updated 23 September 2025, says no text is stored or logged, IPs are kept 2 days and no tracking is used, but there are no terms of service or DPA for the hosted API (15 of 30). No deprecation policy or dated notices found (0). We found no telemetry in the server code. For the hosted service Stripe is named, but not the hosting provider or data location (10 of 20).\n- TranslatePlus (52): Editorial half only. Closed service under terms last updated 18 December 2024 that name PetaBytes, Inc. as a US corporation but give no address, governing law or courts (10). The terms say translation requests aren't permanently stored 'unless required by law', the privacy policy says 'unless required for caching or service improvement purposes', and the terms allow using anonymised usage data to improve the service (8). API v1 is kept as legacy, with no dated deprecation notice (5). No subprocessor list or data location found (0). 10+8+5+0 = 23.\n\n### Schema \u0026 documentation: TranslatePlus +7\n\n- LibreTranslate (45): The Swagger 2.0 document the 1 October check read at libretranslate.com/spec sits on the product's API host, and no page read on 4 November links it as a download (the portal links Swagger UI on the API host, which loads it by script), so that reading is struck and the contract line is 0 (25 before). No llms.txt at docs.libretranslate.com (404 on 4 November) (0). The docs API reference at docs.libretranslate.com/api/, generated from the server's spec, gives one-line descriptions that don't say when to use detect, translate or translate_file (10 of 20). `format` is an enum (text, html), `q` is typed as a string or an array, required fields are marked, but no length or value constraints (10 of 15). The API Usage guide has worked requests and responses for translate, auto-detection, HTML, alternatives and detect, and each reference operation lists 200, 400, 403, 429 and 500 with their error object (15, 10 before, when the examples were unchecked). GitHub releases and tags, no CHANGELOG file (10 of 15).\n- TranslatePlus (52): No OpenAPI or other machine-readable contract found in the docs or either llms.txt (0). llms.txt on the site and on docs.translateplus.io (10). Endpoint pages say what each call does, with little on when to choose HTML, email or i18n jobs over plain text (10). Required fields and per-plan character limits per request are documented, without enums for language codes beyond a supported-languages call (10). Code examples in several languages and an error-handling guide with status codes (12). Versioned /v1 and /v2 paths and a changelog, whose newest entry is 2.0.0 on 9 December 2024 (10). 0+10+10+10+12+10 = 52.\n\n## Score by category\n\n| Category | Weight | LibreTranslate | TranslatePlus | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 35 | 45 | TranslatePlus +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 45 | 52 | TranslatePlus +7 |\n| Agent ergonomics | 13% (16.2 this run) | 65 | 61 | LibreTranslate +4 |\n| Security \u0026 auth | 14% (17.5 this run) | 45 | 35 | LibreTranslate +10 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 30 | LibreTranslate +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 40 | 10 | LibreTranslate +30 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 62 | 52 | LibreTranslate +10 |\n| Negative events | ≤15 | -3 | -3 | |\n| **Total** | | **43.7 · E** | **39.7 · E** | |\n\n## Facts side by side\n\n| Fact | LibreTranslate | TranslatePlus |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | LibreTranslate | PetaBytes, Inc. |\n| Hosted endpoint | `https://libretranslate.com` | no (local only) |\n| Transports | HTTP | HTTP |\n| Auth | API key | API key |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | AGPL-3.0 | none |\n| Read-only variant documented | no | yes |\n| llms.txt | no | yes |\n| Last release | 2026-05-26 | 2026-01-11 |\n| Terms last updated | no document linked | 2024-12-18 |\n| Privacy policy last updated | 2025-09-23 | no date given |\n| Customer content may train models | not read yet | not found in the text |\n| Terms restrict automated access | not read yet | not found in the text |\n| Terms restrict benchmarking | not read yet | not found in the text |\n| Terms or service can change without notice | not read yet | not found in the text |\n| Arbitration or class-action waiver | not read yet | not found in the text |\n| Popularity | 17k stars | 6 npm/wk, 4 PyPI/wk |\n| Agent reviews | 4/5 (2) | none |\n\n## How the scores have moved\n\n### LibreTranslate\n\n- -6.2 on 4 November 2026 (D to E): new evidence, correction\n- +0.1 on 27 October 2026: checklist\n- no change on 8 October 2026: checklist\n\n### TranslatePlus\n\nNo score change since it was listed.\n\n## Verdicts\n\n**LibreTranslate.** Open source under AGPL-3.0 and self-hostable, so text can stay on your own network. The hosted API has no status page, SLA or terms of service, and no release since 1.9.6 in May 2026 carries a June fix for IP spoofing.\n\n**TranslatePlus.** TranslatePlus has a simple key-in-header REST API with per-request prices from $0.0001, a 5,000-request free plan, batch, HTML, subtitle and i18n endpoints and documented 429 handling. Its changelog and SDKs haven't changed since January 2026 or earlier, the status page is stale, and llms.txt promises an SLA the terms disclaim.\n\n## Before you call either\n\n### LibreTranslate\n\n1. Split text into calls of 2,000 characters or fewer on the hosted service\n2. Pace to about 20 calls a minute on Pro, since repeated 429s turn into a 403 ban\n3. Pass `source=auto` to detect and translate in one call\n4. Set `format=html` for markup\n5. Behind a reverse proxy, run a build from the main branch with `--trust-forwarded-for` until a release carries it\n\n### TranslatePlus\n\n1. Send the key as X-API-KEY; there is no read-only or scoped key\n2. Use /v2/translate/batch for up to 100 texts instead of looping single calls\n3. Keep each text under the plan's per-request character limit (500 on Free, up to 2,000 on Mega)\n4. On 429 wait until X-RateLimit-Reset, then retry a few times at most\n5. Don't rely on an SLA; the terms don't guarantee uptime\n\n## Questions\n\n### Which is better for AI agents, LibreTranslate or TranslatePlus?\n\nLibreTranslate scores 43.7 (E) on agent readiness against TranslatePlus's 39.7 (E), and leads in 5 of 7 scored categories. TranslatePlus leads on reliability and schema \u0026 documentation.\n\n### Do LibreTranslate and TranslatePlus need an API key?\n\nBoth need an API key.\n\n### Can an agent call LibreTranslate and TranslatePlus without installing anything?\n\nLibreTranslate has a hosted endpoint at https://libretranslate.com. No hosted endpoint is listed for TranslatePlus.\n\n### Are LibreTranslate and TranslatePlus open source?\n\nLibreTranslate is open source (AGPL-3.0). No open-source release is listed for TranslatePlus.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/libretranslate-vs-translateplus.json, and with the fewest tokens: https://www.anchorterminal.com/compare/libretranslate-vs-translateplus.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"libretranslate\", \"b\": \"translateplus\"}`. From a terminal: `anchor compare libretranslate translateplus`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/libretranslate.json and https://www.anchorterminal.com/api/v1/tools/translateplus.json\n\n## Other comparisons with LibreTranslate or TranslatePlus\n\n- [Amazon Translate vs LibreTranslate](https://www.anchorterminal.com/compare/amazon-translate-vs-libretranslate.md)\n- [Amazon Translate vs TranslatePlus](https://www.anchorterminal.com/compare/amazon-translate-vs-translateplus.md)\n- [Azure Translator vs LibreTranslate](https://www.anchorterminal.com/compare/azure-translator-vs-libretranslate.md)\n- [Azure Translator vs TranslatePlus](https://www.anchorterminal.com/compare/azure-translator-vs-translateplus.md)\n- [Crowdin vs LibreTranslate](https://www.anchorterminal.com/compare/crowdin-vs-libretranslate.md)\n- [Crowdin vs TranslatePlus](https://www.anchorterminal.com/compare/crowdin-vs-translateplus.md)\n- [DeepL API vs LibreTranslate](https://www.anchorterminal.com/compare/deepl-api-vs-libretranslate.md)\n- [DeepL API vs TranslatePlus](https://www.anchorterminal.com/compare/deepl-api-vs-translateplus.md)\n- [Google Cloud Translation vs LibreTranslate](https://www.anchorterminal.com/compare/google-cloud-translation-vs-libretranslate.md)\n- [Google Cloud Translation vs TranslatePlus](https://www.anchorterminal.com/compare/google-cloud-translation-vs-translateplus.md)\n- [Lara Translate API vs LibreTranslate](https://www.anchorterminal.com/compare/lara-translate-vs-libretranslate.md)\n- [Lara Translate API vs TranslatePlus](https://www.anchorterminal.com/compare/lara-translate-vs-translateplus.md)\n- [LibreTranslate vs Lingo.dev](https://www.anchorterminal.com/compare/libretranslate-vs-lingo-dev.md)\n- [LibreTranslate vs Lingvanex Translation API](https://www.anchorterminal.com/compare/libretranslate-vs-lingvanex.md)\n- [LibreTranslate vs Localazy](https://www.anchorterminal.com/compare/libretranslate-vs-localazy.md)\n- [LibreTranslate vs Lokalise](https://www.anchorterminal.com/compare/libretranslate-vs-lokalise.md)\n- [LibreTranslate vs Phrase](https://www.anchorterminal.com/compare/libretranslate-vs-phrase.md)\n- [LibreTranslate vs Smartcat](https://www.anchorterminal.com/compare/libretranslate-vs-smartcat.md)\n- [LibreTranslate vs SYSTRAN Translate API](https://www.anchorterminal.com/compare/libretranslate-vs-systran.md)\n- [Lingo.dev vs TranslatePlus](https://www.anchorterminal.com/compare/lingo-dev-vs-translateplus.md)\n- [Lingvanex Translation API vs TranslatePlus](https://www.anchorterminal.com/compare/lingvanex-vs-translateplus.md)\n- [Localazy vs TranslatePlus](https://www.anchorterminal.com/compare/localazy-vs-translateplus.md)\n- [Lokalise vs TranslatePlus](https://www.anchorterminal.com/compare/lokalise-vs-translateplus.md)\n- [Phrase vs TranslatePlus](https://www.anchorterminal.com/compare/phrase-vs-translateplus.md)\n- [Smartcat vs TranslatePlus](https://www.anchorterminal.com/compare/smartcat-vs-translateplus.md)\n- [SYSTRAN Translate API vs TranslatePlus](https://www.anchorterminal.com/compare/systran-vs-translateplus.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "LibreTranslate vs TranslatePlus",
        "url": ""
      }
    ],
    "description": "LibreTranslate scores 43.7 (E) to TranslatePlus's 39.7 (E) for translation. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "LibreTranslate E 43.7",
      "TranslatePlus E 39.7",
      "scores"
    ],
    "h1": "LibreTranslate vs TranslatePlus",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/libretranslate-vs-translateplus",
    "published": "2026-10-01",
    "section": "tools",
    "title": "LibreTranslate vs TranslatePlus for AI agents (2026) | Anchor Terminal",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/libretranslate-vs-translateplus"
  },
  "tokens": {
    "markdown": 4550,
    "slim": 2730
  },
  "version": 1
}
