Skip to main content

i18n-keyless vs Tolgee: keyless SDK vs open-source localization platform

· 8 min read
Founder of i18n-keyless

Tolgee is the open-source localization platform developers actually enjoy using. Click a string in your running app, translate it right there, done. It's Apache 2.0 licensed, self-hostable, and has a growing community of contributors who genuinely care about developer experience.

i18n-keyless takes a different bet: what if you didn't need to click anything at all? Write the string in your code, the AI translates it, you override the ones that matter. No keys, no platform, no workflow.

Both tools are self-hostable. Both target developer-led teams. The question is whether you want a platform to manage translations or an SDK that makes translation invisible.

TL;DR​

i18n-keylessTolgee
Product typeOpen-source localization platformOpen-source localization platform
Source of truthSource string in your codeTranslation keys in Tolgee
Translation keysNone — source string is the keyRequired — you name every key
Translation methodAI auto-translation, override-ableIn-context editing, machine translation, or human translators
In-context editingNoYes — click-to-translate in your running app
Self-hosted costFully free, unlimited projects (donations optional)Free (Apache 2.0), but you run the infra
Setup time~5 minutes30 min–2 hours (Tolgee server + SDK)
Best forEngineer-driven, MVPs, scale-ups, whateverTeams who want open-source with in-context editing

Pick i18n-keyless if you want multilingual without a translation workflow. Pick Tolgee if you want an open-source platform with in-context editing and community translation.

The fundamental difference: keys vs no keys​

Tolgee still uses translation keys. Their SDK wraps the key in a component:

// Tolgee: you define a key "checkout_confirm" in the Tolgee platform
import { T } from "@tolgee/react";
<button><T keyName="checkout_confirm">Confirm payment</T></button>

The keyName is the lookup. The child text is a fallback. You still manage keys in the Tolgee platform — create them, organize them, assign them to namespaces.

i18n-keyless removes the key entirely:

import { I18nKeylessText } from "i18n-keyless-react";
<button><I18nKeylessText>Confirm payment</I18nKeylessText></button>

The source string is the key. No keyName to name, no platform to create it in. The AI translates it on first encounter, caches forever, and you override from the dashboard when it misses.

Where Tolgee genuinely wins​

We respect Tolgee. It solves a real problem well. Here's where it's better:

In-context editing​

This is Tolgee's superpower. You wrap your app in the Tolgee provider, and translators (or you) can click any string in the running app to translate it directly. The context is immediate — you see the button, the layout, the surrounding text. No guessing what checkout.confirm.cta looks like in production.

i18n-keyless has a dashboard with the source string and the translation side by side. It works, but it's not in-context — the translation happens in the dashboard, not overlaid on the running app.

Machine translation integrations​

Tolgee integrates with DeepL, Google Translate, and AWS Translate. You can pick the engine you trust and use it as a suggestion layer that translators then review. Multiple providers, configurable per project.

i18n-keyless uses AI translation (Mistral by default, configurable to OpenAI, Anthropic, Google, or any OpenAI-compatible provider on self-hosted). The translation is the default — you override, not approve.

Screenshot-based context​

Tolgee can capture screenshots of where a string appears and attach them to the translation key. Translators see the screenshot alongside the string. For distributed translation teams, this is excellent.

Where i18n-keyless wins​

Truly keyless​

Tolgee reduced friction compared to i18next, but it still has keys. You still decide what checkout_confirm means, still keep the platform and the code in sync, still deal with "who renamed that key?" in code review.

i18n-keyless has no keys to name, sync, or manage. The string in your code is the identity. New engineers read the source text directly in the JSX — no context-switching to a platform.

AI translation as the default​

In Tolgee, machine translation is a suggestion you review. In i18n-keyless, AI translation is the shipped value you override when needed. For product UI strings — buttons, labels, modals, error messages — modern AI is excellent, and the override rate is low. You save time on the 95% that are fine and spend time on the 5% that need nuance.

Simpler self-hosted setup​

Self-hosting Tolgee means running a Java application server (Spring Boot) with a PostgreSQL database, configuring SMTP for invitations, setting up an nginx reverse proxy, and keeping it updated. It's real infrastructure.

Self-hosting i18n-keyless is one Docker container:

docker run -v data:/storage -p 80:80 ghcr.io/ambroselli-io/i18n-keyless

SQLite by default (Postgres optional), no SMTP (invitations are copy-paste links), no Java runtime. Fully free, unlimited projects. Total infrastructure cost: whatever your smallest VM costs per month.

No SDK lock-in for basic usage​

i18n-keyless SDKs exist for React, Vue, Angular, Node, Laravel, Rails, Flutter, Python, Go, Swift, and Kotlin. But the protocol is plain HTTP — any fetch call works. Tolgee's in-context editing requires their SDK wrapper; without it, you lose the feature that distinguishes Tolgee from simpler tools.

A practical decision rubric​

  1. Is in-context editing important to you?

    • Yes → Tolgee.
    • No → either works.
  2. Do you want to manage translation keys?

    • Yes (you like the control) → Tolgee.
    • No (you want to skip that) → i18n-keyless.
  3. Do you need OSI-approved open-source licensing?

    • Yes → Tolgee (Apache 2.0).
    • No → either works.
  4. What's your self-hosted budget?

    • You can run a Java app server → Tolgee (free licence).
    • You want a single Docker container for free → i18n-keyless.
  5. Who translates?

    • A team using in-context editing → Tolgee.
    • No one — AI does it, engineers override → i18n-keyless.

FAQ​

Is Tolgee fully open source?​

Yes. Tolgee is Apache 2.0 licensed. The platform, the SDKs, and the self-hosted edition are all open source. They also offer a cloud-hosted version with paid plans. i18n-keyless publishes its product source under ELv2 (source-available, not OSI open source).

Can i18n-keyless do in-context editing?​

Not as a browser extension. Translations are managed in the dashboard — the source string, the current translation, an override field — and through the MCP server. The equivalent workflow: take a screenshot of the screen with the wrong string and give it to an AI agent connected to the MCP server; it finds the string and overrides the translation for you. If you want a click-to-edit overlay inside the running app, Tolgee has it and i18n-keyless does not.

Which is cheaper to self-host?​

Depends on how you count. Tolgee's licence is free (Apache 2.0), but you run a Java app server + Postgres — expect a 2GB+ VM. i18n-keyless is fully free and runs on the smallest VM you can find (256MB is enough with SQLite). Donations are optional.

Can I migrate from Tolgee?​

Yes. Export your translations from Tolgee as JSON, then use i18n-keyless's import endpoint to seed the dashboard. Your source strings stay the same — you replace <T keyName="..."> with <I18nKeylessText> and drop the keyName. The migration from i18next guide covers the same pattern.

Next steps​