hosted translation · next.js app router
Write once. Weave every language.
Loomlocale translates your Next.js app into every language you choose and keeps them in sync. One command, ICU-safe, and only changed keys are billed.
Illustration: a loom whose vertical threads are target languages. A shuttle carries an English string across; where it crosses each thread the string reappears in German, French, Japanese, Arabic, Brazilian Portuguese and Hindi, with placeholders unchanged, and settles into a woven fabric.
- ● ICU-safe: placeholders, plurals, tags validated
- ● App Router native
- ● Only changed keys billed
03
From thread to fabric
Your English JSON goes in; structurally identical German, French and Japanese come out. Placeholders never move.
{
"sync": {
"newKeys": "{count} new keys",
"welcome": "Welcome back, {name}"
},
"invite": "Invite <b>{email}</b>"
} sync.newKeys
+ de "{count} neue Schlüssel"
+ fr "{count} nouvelles clés"
+ ja "{count} 件の新しいキー"
invite
+ de "<b>{email}</b> einladen"
+ fr "Inviter <b>{email}</b>"
+ ja "<b>{email}</b> を招待"04
One command
npx next-tongue detects your framework and locale files, signs you in, lets you pick languages, shows the cost in pounds, then writes the files.
── Detect┌ Loomlocale · next-tongue 1.0.0◇ Detected Next.js 16.1 (App Router) with next-tongue◇ Found locale files│ messages/en/common.json 212 keys│ messages/en/dashboard.json 604 keys│ messages/en/billing/*.json 424 keys (3 files)◇ Signed in as louis@… · Loomlocale Labs · Pro ── Languages◆ Target languages (type to search, space to toggle)│ Search: ger█│ ◼ German (de)│ Selected (6): fr, de, es, it, ja, pt-BR ── Estimate│ Keys 1,240 in 5 files Source chars 48,600│ Billable 291,600 characters│ Cost £0.00 now: covered by Pro (291,600 of 1,000,000 left)│ (prepaid credit: £7.29 at £25/M; Pro overage £22/M) ── Progress fr ████████████████████ 100% 1240/1240 de ████████████████░░░░ 82% 1017/1240 ja ██████░░░░░░░░░░░░░░ 30% 372/1240 ICU check: 0 errors · 2 sent to review (over maxLength) ── Summary◇ Done in 1m 42s│ Translated 7,438 strings (2 in review)│ Billed 291,600 chars · £0.00 (in Pro allowance)│ Wrote 30 files under messages/fr, de, es, it, ja, pt-BR/└ Next: edit English strings, then run tongue update
05
Sync, not redo
tongue update hashes every source string. Only new and changed keys are translated and billed; deleted keys are removed everywhere.
◇ Compared 1,252 keys with tongue.lock and server rev 41 │ + 9 new ~ 3 changed - 2 deleted = 1,238 unchanged │ ↓ 5 web edits (de: 3 overrides; glossary: workspace → Arbeitsbereich) │ ! 1 conflict dashboard.title [fr] edited locally and on the web │ Billable 12 keys × 6 locales = 3,960 chars · £0.10 └ Dry run: no files written, nothing billed
06
Web and CLI together
Edit strings, glossary and overrides in the dashboard; they flow into your repo on the next pull. Sign in from the terminal with a device code.
| dashboard.title | de | Übersicht | web edit |
| sync.newKeys | de | {count} neue Schlüssel | accepted |
| dashboard.title | fr | Tableau de bord | conflict |
| billing.credit | ja | クレジット残高が少なくなっています | review |
┌ Sign in to Loomlocale │ Your code: WDJB-MJHT │ Open: www.loomlocale.com/device ◒ Waiting for approval… ◇ Signed in (Loomlocale Labs, Pro) └ Token saved to macOS Keychain
07
GitHub workflow
On push to main, changed source hashes mark keys stale. The Action retranslates only those and opens a pull request.
on:
push:
branches: [main]
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: loomlocale/update@v1
with:
token: ${{ secrets.LOOMLOCALE_TOKEN }}
mode: prloomlocale: update 6 locales 12 keys translated · 3,960 chars · £0.10 2 deleted keys removed ICU check passed M messages/de/dashboard.json M messages/fr/dashboard.json M messages/ja/dashboard.json M tongue.lock
08
Pricing
Prepaid credit at £25 per 1M characters from £5, valid 12 months, or subscribe and pay less per character. Billed characters are source characters × target languages.
Free
£0 / month
- Included
- 50k once
- Effective / 1M
- —
- Overage / 1M
- £25.00
- — 50,000 characters, one-time: add a card to claim, no charge
- — 1 project
- — CLI and dashboard
Add a card to claim 50k free characters once (no charge, never resets), then prepaid credit at £25 per 1M
Start freePrepaid credits
£25 / 1M chars
- Included
- None
- Effective / 1M
- £25.00
- Overage / 1M
- £25.00
- — No monthly fee, no automatic top-ups
- — Unlimited projects
- — Jobs stop before running if credit is short
- — CLI, sync and dashboard edits
Top up £5, £10, £25, £50 or any amount from £5. £25 per 1M characters. Credit expires 12 months after purchase
Choose Prepaid creditsPro
£19 / month
- Included
- 1M / mo
- Effective / 1M
- £19.00
- Overage / 1M
- £22.00
- — 1M characters included
- — GitHub pull requests
- — Glossary and history
- — CI tokens
£22 per 1M after the included 1M
Choose ProTeam
£49 / month
- Included
- 3M / mo
- Effective / 1M
- £16.33
- Overage / 1M
- £20.00
- — 3M characters included
- — 5 seats
- — Shared glossaries and approvals
- — Auto-sync, EU-only processing
£20 per 1M after the included 3M
Choose Team- First run
- 400,000 chars
- Typical month
- 40,000 chars
| Plan | First run | Per month |
|---|---|---|
| Free | £8.75 | £1.00 |
| Prepaid credits | £10.00 | £1.00 |
| Pro | £19.00 | £19.00 |
| Team | £49.00 | £49.00 |
Cheapest for a typical month: Free at £1.00.
09
How does Loomlocale compare?
Published figures as of October 2026. We bill per character, have no key limits and only charge for changes.
| Loomlocale | Locize | SimpleLocalize | globalize.now | Crowdin | |
|---|---|---|---|---|---|
| Entry paid price | £5 credit · £19 Pro | $7 Starter | €12 Developer | €5 Indie | $59 Pro |
| Billing unit | Characters | Words × languages | Keys + characters | Translated characters | Hosted words |
| MT rate per 1M chars | £25 prepaid, £22/£20 overage | $30 (Locize MT) | Bundled; top-up unpublished | ≈€15 | Managed Balance or own keys |
| Key limits | None | Namespaces and words | 500–12k keys | Plan-based | Hosted-word caps |
| Glossary and history | From £19 | From $49 | Paid plans | Included | Paid plans |
| Next.js App Router native | Yes (next-tongue is the CLI) | Via i18next | Via CLI | Via GitHub | Via CLI |
10
Questions
What is Loomlocale?
- A hosted translation service for Next.js apps. You write strings in one language; Loomlocale translates them into the languages you choose and keeps them in sync, from one command.
How much does Loomlocale cost?
- Prepaid credits cost £25 per 1 million translated characters with no monthly fee: top up £5, £10, £25, £50 or any amount from £5. Free includes a one-time 50,000 characters per organisation: add a card to claim them, with no charge (it does not reset monthly), then it draws on credit. Pro is £19/month with 1 million included (then £22 per million) and Team is £49/month with 3 million included (then £20 per million), so subscriptions are cheaper per character.
Is a subscription cheaper than prepaid credits?
- Yes, once you use more than about 760,000 characters a month. Pro works out at £19 per million and Team at £16.33 per million when the allowance is used, against £25 with prepaid credit.
How do prepaid credits work?
- You buy credit once with Stripe; there are no automatic top-ups. When a job is queued its estimated cost is held from your balance, the actual cost is taken when it finishes and anything unused goes back. If your balance is too low the job is refused before it runs, with a link to top up.
Does the free allowance reset every month?
- No. Every new workspace can claim 50,000 free characters once, by adding a card (no charge; one claim per card). They never reset or top up; after they are used, translation draws on prepaid credit at £25 per million. Pro and Team include an allowance that resets each month.
Why do I need to add a card for the free characters?
- Adding a card (no charge) unlocks the one-time 50,000 free characters and stops the allowance being claimed over and over with throwaway accounts. Each card can claim it once. Nothing is charged unless you buy prepaid credit or subscribe.
Does credit expire?
- Yes. Each purchase expires 12 months after you buy it, and the oldest credit is always used first. The billing page shows every purchase's expiry date and flags credit expiring within 30 days.
How do I translate a Next.js app?
- Run npx next-tongue in your project. It detects your locale files, signs you in, lets you pick languages, shows the cost and writes the translated files.
What counts as a character?
- Each source character sent for translation, multiplied by the number of target languages. Unchanged keys and cached strings are not billed.
Does it retranslate everything when I change a string?
- No. tongue update compares hashes and only translates new or changed keys; deleted keys are removed.
Which translation engine does Loomlocale use?
- OpenAI gpt-4.1-mini with OpenAI gpt-4o-mini as an automatic fallback, run on Loomlocale's servers. You don't need your own API key.
Will it break ICU placeholders and plurals?
- No. Placeholders, plural and select branches and rich tags are masked before translation and validated afterwards; failures go to review, not to your files.
Can I edit translations in a web app?
- Yes. Edits made in the dashboard are pulled into your repo on the next tongue update or tongue pull, with conflict handling.
How do I sign in from the command line?
- Run tongue login, approve the code at www.loomlocale.com/device, then run tongue link to choose or create a project.
Does it work in CI and GitHub?
- Yes. Use a project token in LOOMLOCALE_TOKEN with tongue update --ci, or the loomlocale/update GitHub Action to open pull requests.
Which frameworks are supported?
- Next.js 16+ with the App Router via next-tongue today; next-intl and i18next file formats are on the roadmap.
Is my data used to train AI models?
- No. Strings are processed under API terms that exclude training, kept encrypted, and can be processed in the EU on Team.
How does Loomlocale compare with Locize or SimpleLocalize?
- It bills per character instead of words or keys, has no key limits, and is built around next-tongue's CLI and lockfile so only changes are paid for.
Can I set a spending limit?
- Prepaid credit is the limit: you can never spend more than you have topped up, and every run shows the cost before it starts. You can also pass --max-cost to cap a single job.
Start weaving.
50,000 characters free, once: add a card to claim, no charge. No engine keys, no SDK swap.