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.

Free to come and go
On every plan, including Free, with no card.
  • Hosting unlimited strings, apps and languages, for as long as you keep them
  • Importing your existing translations from any tool, in any format
  • Exporting every language in its original format, any time
  • Audits, by your own agent over MCP or the CLI, or by run_audit
  • Translations your agent or your team writes, for your whole library
  • Strings shared across apps, translated once and reused

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 Code
claude "$(curl -fsSL https://getglossa.dev/switch/crowdin/prompt.txt)"
Codex
codex "$(curl -fsSL https://getglossa.dev/switch/crowdin/prompt.txt)"
Or paste this prompt into any agent
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-strings

In 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 have

Agent 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 back

list_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 format

Your files stay in your repository. Pulling is free, unlimited and needs no export request.

Crowdin and Glossa side by side

TopicGlossaCrowdin
What you pay forFree 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 planUnlimited 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 wordsNot listed plainly
AgentsA 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 outglossa 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.