{
  "schema_version": 1,
  "generated_at": "2026-10-22T00:00:00.000Z",
  "canonical_url": "https://openlogs.fyi/tools/libretranslate",
  "slug": "libretranslate",
  "name": "LibreTranslate",
  "tagline": "Machine translation API that runs offline on your own server.",
  "replaces": {
    "summary": "Paid machine translation services, such as Google Translate and DeepL.",
    "products": [
      {
        "slug": "deepl",
        "name": "DeepL",
        "vendor": "DeepL",
        "url": "https://openlogs.fyi/alternatives/deepl"
      },
      {
        "slug": "google-translate",
        "name": "Google Translate",
        "vendor": "Google",
        "url": "https://openlogs.fyi/alternatives/google-translate"
      }
    ]
  },
  "stack": [
    {
      "kind": "language",
      "name": "Python"
    }
  ],
  "deployment_methods": [
    "docker_compose"
  ],
  "requirements": {
    "min_ram_mb": null,
    "min_cpu_cores": null,
    "source_url": null
  },
  "license": {
    "spdx": "AGPL-3.0",
    "class": "osi",
    "source_url": "https://github.com/LibreTranslate/LibreTranslate/blob/89e8a56b93244cf3803b9a0496a9b51b9fbc6186/LICENSE"
  },
  "business_model": {
    "value": "unknown",
    "notes": "The README at the pinned commit does not state a business model, so it stays unknown.",
    "source_url": "https://github.com/LibreTranslate/LibreTranslate/blob/89e8a56b93244cf3803b9a0496a9b51b9fbc6186/README.md",
    "checked_at": "2026-10-22"
  },
  "difficulty": {
    "value": "easy",
    "reason": "1 service, 0 volume mounts, no env values to set, no elevated host access. Heuristic score 0 of 11: easy."
  },
  "repository": {
    "owner": "LibreTranslate",
    "name": "LibreTranslate",
    "url": "https://github.com/LibreTranslate/LibreTranslate"
  },
  "compose_check": {
    "status": "config_ok",
    "validated_at": "2026-10-22",
    "summary": "config_ok on 2026-10-22"
  },
  "recipe": {
    "version": 1,
    "source_path": "docker-compose.yml",
    "source_repo": "LibreTranslate/LibreTranslate",
    "source_commit_sha": "89e8a56b93244cf3803b9a0496a9b51b9fbc6186",
    "source_kind": "app_repo",
    "source_url": "https://github.com/LibreTranslate/LibreTranslate/blob/89e8a56b93244cf3803b9a0496a9b51b9fbc6186/docker-compose.yml"
  },
  "install_steps": [
    {
      "order": 1,
      "kind": "prerequisite",
      "language": "text",
      "label": "Docker with the Compose plugin",
      "body": "A host with Docker and the Docker Compose plugin. This entry runs from a compose file.",
      "source_url": "https://github.com/LibreTranslate/LibreTranslate/blob/89e8a56b93244cf3803b9a0496a9b51b9fbc6186/docker-compose.yml",
      "validation_status": "unvalidated"
    },
    {
      "order": 2,
      "kind": "compose",
      "language": "yaml",
      "label": "Save the compose file as docker-compose.yml",
      "body": "services:\n  libretranslate:\n    container_name: libretranslate\n    image: libretranslate/libretranslate:latest\n    ports:\n      - \"5000:5000\"\n    restart: unless-stopped\n    healthcheck:\n      test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py']\n      interval: 10s\n      timeout: 4s\n      retries: 4\n      start_period: 5s\n    ## Uncomment this for logging in docker compose logs\n    # tty: true\n    ## Uncomment above command and define your args if necessary\n    ## Refer to the documentation for more information: https://docs.libretranslate.com/guides/installation/#arguments\n    # command: --ssl --req-limit 100 --char-limit 500\n    ## Uncomment this section and the libretranslate_api_keys volume if you want to backup your API keys\n    # environment:\n    #   - LT_API_KEYS=true\n    #   - LT_API_KEYS_DB_PATH=/app/db/api_keys.db # Same result as `db/api_keys.db` or `./db/api_keys.db`\n    ## Uncomment these vars and libretranslate_models volume to optimize loading time.\n    #   - LT_UPDATE_MODELS=true\n    #   - LT_LOAD_ONLY=en,fr\n    # volumes:\n    #   - libretranslate_api_keys:/app/db\n    # Keep the models in a docker volume, to avoid re-downloading on startup\n    #   - libretranslate_models:/home/libretranslate/.local:rw\n\n# volumes:\n#   libretranslate_api_keys:\n#   libretranslate_models:\n",
      "source_url": "https://github.com/LibreTranslate/LibreTranslate/blob/89e8a56b93244cf3803b9a0496a9b51b9fbc6186/docker-compose.yml",
      "validation_status": "config_ok"
    },
    {
      "order": 3,
      "kind": "shell",
      "language": "bash",
      "label": "Start it",
      "body": "docker compose up -d",
      "source_url": "https://github.com/LibreTranslate/LibreTranslate/blob/89e8a56b93244cf3803b9a0496a9b51b9fbc6186/docker-compose.yml",
      "validation_status": "unvalidated"
    },
    {
      "order": 4,
      "kind": "verify",
      "language": "text",
      "label": "Open the app",
      "body": "Open http://localhost:5000. The compose file publishes host port 5000 for the libretranslate service.",
      "source_url": "https://github.com/LibreTranslate/LibreTranslate/blob/89e8a56b93244cf3803b9a0496a9b51b9fbc6186/docker-compose.yml",
      "validation_status": "unvalidated"
    }
  ],
  "notes": [
    {
      "kind": "gotcha",
      "title": "Some images use the latest tag or no tag",
      "body": "Images without a pinned version: libretranslate: libretranslate/libretranslate:latest. A later pull can get a different version.",
      "source_url": "https://github.com/LibreTranslate/LibreTranslate/blob/89e8a56b93244cf3803b9a0496a9b51b9fbc6186/docker-compose.yml",
      "checked_at": "2026-10-22"
    },
    {
      "kind": "gotcha",
      "title": "The compose file publishes host ports",
      "body": "Host ports: 5000 (libretranslate). A port without a host address listens on all host network interfaces.",
      "source_url": "https://github.com/LibreTranslate/LibreTranslate/blob/89e8a56b93244cf3803b9a0496a9b51b9fbc6186/docker-compose.yml",
      "checked_at": "2026-10-22"
    }
  ],
  "signals": {
    "captured_at": "2026-10-22",
    "stars": 17145,
    "forks": 1784,
    "open_issues": 129,
    "last_push": "2026-10-12",
    "days_since_push": 9,
    "latest_release": "v1.9.6",
    "latest_release_date": "2026-05-26",
    "days_since_release": 148
  },
  "links": {
    "html": "https://openlogs.fyi/tools/libretranslate",
    "markdown": "https://openlogs.fyi/tools/libretranslate.md",
    "json": "https://openlogs.fyi/tools/libretranslate.json"
  },
  "updated_at": "2026-10-22"
}
