You can internationalize your app without spending a dime. Here's every free i18n tool worth using — from runtime libraries to detection, translation, and management.
Not every project has a localization budget. Side projects, open-source tools, early-stage startups, and hobby apps all need i18n but can't justify $50-500/month for a TMS. The good news: you can build a complete multilingual app using entirely free tools. Here's what's available at each layer of the i18n stack.
These are completely free and open source. They handle string formatting, locale switching, and pluralization in your app.
| Library | Framework | License | Notes |
|---|---|---|---|
| next-intl | Next.js | MIT | Best for App Router, Server Components |
| react-i18next | React, Next.js, RN | MIT | Largest ecosystem, most plugins |
| react-intl | React | BSD-3-Clause | ICU MessageFormat standard |
| LinguiJS | React | MIT | Build-time extraction, small runtime |
| svelte-i18n | Svelte, SvelteKit | MIT | Stores-based, mature |
| Paraglide.js | Any (Astro, Svelte, Next.js) | MIT | Compiled messages, tree-shakable |
| vue-i18n | Vue | MIT | Official Vue i18n solution |
All of these are production-ready. Pick the one that matches your framework and preferences — you won't outgrow any of them.
Finding untranslated strings is the step many developers skip, because doing it by hand is tedious.
Polyglot's scanner is free and runs locally. It uses tree-sitter AST parsing to report hardcoded-string candidates in your codebase — JSX text, string attributes, template literals, framework-specific patterns. Review what it reports; a candidate list isn't a guarantee that every string was found.
curl -fsSL https://getpolyglot.ai/install.sh | bash
polyglot scan
No account required. No API key. Run it on every repo you have.
What you get for free:
What is metered:
t() callsjsx-no-literals — flags all JSX textThese work but can be noisy, so expect to tune their rules. They pair well with a scanner.
Polyglot includes a guest translation tier — 50 lifetime strings in one language with no account, no API key required. Sign up for a free account and you get 500 lifetime strings across 2 languages, with translations reviewed in the dashboard. Enough to try it on a side project or a small app.
# Just works — no login required
polyglot translate --languages fr
Google Cloud Translation makes the first 500,000 characters each month free (applied as a monthly credit). You can use it via the API or through tools that integrate with it. The translations are decent for common language pairs, but each string is translated without knowing where it appears in your UI.
DeepL's API documentation lists 500,000 characters per month for API Free. Check DeepL's pricing page for which free options are open to new sign-ups. It's worth testing alongside Google on a sample of your own strings.
For 1-2 target languages with a small number of strings, manual translation by a bilingual team member is free and often produces the best results. It gets harder to keep up with as your string count and release pace grow.
Tolgee is open core: its core is Apache-2.0 and free to self-host, and some enterprise features sit under a separate license. It also has a free cloud plan. It provides a translation dashboard, in-context editing, translation memory, and AI translation. If you self-host, the trade-off is ops overhead — you run and maintain the infrastructure.
The simplest TMS is no TMS. Keep your translation JSON files in your repo, version them with git, and review changes in PRs. Polyglot works with this setup — translations land as locale files in your repo, and generated translations get reviewed in its dashboard.
For small projects, this works surprisingly well. The pain point emerges when you have multiple translators editing the same files, which is when a dashboard becomes valuable.
Crowdin's free tier gives you 1 private project. If you have a single app and no budget, it's usable. The moment you add a second private project, you need a paid plan. Open-source projects can also apply for a free Crowdin license.
| Layer | Tool | Cost |
|---|---|---|
| Runtime | next-intl / react-i18next / svelte-i18n | Free (MIT) |
| Detection | Polyglot scanner | Free (no account) |
| Translation | Polyglot free (500 lifetime strings, 2 languages) or DeepL free | Free |
| Management | Git + JSON files | Free |
This gives you a complete i18n pipeline at $0/month. The scanner shows you what likely needs translating, the free tier handles small volumes, and your translations live in your repo as plain JSON.
When you outgrow the free tier — more than 500 lifetime strings or more than 2 target languages — Polyglot Pro is $49/month ($39/month billed annually) for 10,000 lifetime strings and 5 languages. But you can run a side project or early-stage startup entirely on the free tools above.
Start in your terminal
Install the CLI, run a scan, and see exactly what you're missing. Free, no account required.