Switch from Crowdin
Bring your Crowdin strings and translations. Host them free, leave whenever you want.
Import every string and existing translation from Crowdin into Glossa. Hosting is free and unlimited, your own agents can audit, fix and fill them for free, and you can export everything again at any time. You pay only if you ask Claude to translate for you.
Let your agent do the move
Run this in your repository. Claude Code or Codex sets up Glossa, exports from Crowdin, imports every file in agent mode so nothing is billed, checks the import, then audits and fills your translations itself.
claude "$(curl -fsSL https://getglossa.dev/switch/crowdin/prompt.txt)"codex "$(curl -fsSL https://getglossa.dev/switch/crowdin/prompt.txt)"Move our app's strings and existing translations from Crowdin to Glossa (https://getglossa.dev), then audit them. Hosting, imports, exports and audits are free on Glossa; keep this move free by using agent mode, so nothing is machine-translated or billed.
1. Set up Glossa. In Claude Code run `/plugin marketplace add MeterApp/glossa-plugins` then `/plugin install glossa@glossa`; in Codex run `codex plugin marketplace add MeterApp/glossa-plugins && codex plugin add glossa@glossa`. That adds the Glossa MCP server and skills; sign in through the browser when asked. Without a plugin, use the CLI: `npx @meterapp/glossa login` opens my browser to sign in, and `npx @meterapp/glossa ops` lists every operation.2. Get the newest translations. If Crowdin holds translations that are not committed here yet, export them first: crowdin download translations --skip-untranslated-strings (In the web app: Translations → Download as ZIP → Build & Download.) If Crowdin's CLI is not configured, ask me for access; never commit or print API tokens.3. Find every translation file in this repository: the source language and every target language. List them with their locales and ask me only if the source language is unclear.4. Create one Glossa project per app with agent mode and its target languages, e.g. `npx @meterapp/glossa create_project --json '{"name":"Web","slug":"web","target_locales":["es","fr"],"translation_mode":"agent"}'`. Agent mode leaves missing strings for you instead of translating them with AI.5. Push each source-language file first, then every target-language file: `npx @meterapp/glossa push locales/en.json --project web`, then `npx @meterapp/glossa push locales/es.json --project web` (add `--locale` when the path does not name it). Existing translations are stored as imported, and AI never overwrites them.6. Check the import: `npx @meterapp/glossa pull --project web --out glossa-preview`, then diff glossa-preview against our files. Report every key, placeholder or plural that differs.7. Audit every target language for free with the codebase in view: page through `list_translations_for_audit` (MCP tool, or `npx @meterapp/glossa list_translations_for_audit --locale es --project web`), read the call sites in this repo, and correct wrong translations with `submit_translations`. Start with the flagged ones (placeholder_mismatch, glossary_miss, same_as_source).8. Fill the gaps yourself: `npx @meterapp/glossa missing --project web --locale es --out missing.json` lists untranslated strings with their file paths, glossary and rules; translate them and write them back with `npx @meterapp/glossa fill translations.json`.9. Save a .glossa.json with the project and source files so `npx @meterapp/glossa pull` and `npx @meterapp/glossa check` work from now on. Then summarize: files imported, translations per language, issues fixed and strings still missing. Leave Crowdin's configuration and CI in place until I confirm the switch.Or do it by hand
1. Export from Crowdin
crowdin download translations --skip-untranslated-stringsIn the web app: Translations → Download as ZIP → Build & Download. Export in a format Glossa reads: JSON, YAML, XLIFF, gettext PO, Android XML, .strings, .xcstrings, ARB, .properties, RESX or CSV (formats). Leave untranslated strings out, so source text does not import as a translation.
2. Import into Glossa
npx @meterapp/glossa loginnpx @meterapp/glossa create_project --json '{"name":"Web","slug":"web","target_locales":["es","fr","de"],"translation_mode":"agent"}'npx @meterapp/glossa push locales/en.json --project web # the source language firstnpx @meterapp/glossa push locales/es.json --project web # then every translation you haveAgent mode means nothing is machine-translated on push. Existing translations are stored as imported and AI never overwrites them. Identical strings across your apps share one translation.
3. Audit and translate with your own agent, free
npx @meterapp/glossa list_translations_for_audit --locale es --project web # your agent reads and fixes thesenpx @meterapp/glossa missing --project web --locale es --out missing.json # what is not translated yetnpx @meterapp/glossa fill translations.json # write your agent's translations backlist_translations_for_audit gives your agent every translation with the keys, file paths, glossary and rules behind it, flagged where placeholders or glossary terms do not match. With the codebase in view it fixes what is wrong and fills what is missing, for your whole library, without counting a single AI word. Prefer to let Claude do it? Switch the project to ai mode and pay only for the new words it translates.
4. Leave whenever you want
npx @meterapp/glossa pull --project web --out ./locales # every language, in its original formatYour files stay in your repository. Pulling is free, unlimited and needs no export request.
Crowdin and Glossa side by side
| Topic | Glossa | Crowdin |
|---|---|---|
| What you pay for | Free to host; priced by AI-translated words. | Plans include hosted words: the words to translate multiplied by each project's target languages, counted across all projects. |
| A bigger library costs more? | No: hosting is free and unlimited; reused strings are free. | Yes: every new string or language adds hosted words. |
| Free plan | Unlimited hosting, 20,000 AI words a month, 3 members. | A free plan; open-source projects are welcome. |
| Paid plans from | $49/mo for 200,000 AI words | Not listed plainly |
| Agents | A hosted MCP server, CLI and REST API with every op, plus plugins for Claude Code, Codex and Cursor. | An Agent Skill and a Claude Code plugin for the Crowdin CLI. |
| Getting your files out | glossa pull, every language in its original format, any time. | crowdin download translations --skip-untranslated-strings |
Crowdin details from its public pages, checked 2026-10-29: Crowdin pricing, crowdin download, Crowdin CLI. Corrections welcome at jonathan@getglossa.dev.
When staying on Crowdin may make sense
- You work with professional translation vendors or a volunteer community and need their workflows.
- You localize documents, subtitles or design files, not only app strings.
- You rely on a specific integration from its catalog or on in-context editing.
Not sure? Import a copy anyway: it costs nothing to keep your strings in both while you compare. Read the full Crowdin comparison and the step-by-step migration guide, or see every tool compared.
Move off Crowdin for free
Import your strings and translations, audit them with your agent, and export them again whenever you like.