Skip to content
LOOMLOCALE

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.

free characters on signup* add a card, no charge

03

From thread to fabric

Your English JSON goes in; structurally identical German, French and Japanese come out. Placeholders never move.

messages/en.json
{
  "sync": {
    "newKeys": "{count} new keys",
    "welcome": "Welcome back, {name}"
  },
  "invite": "Invite <b>{email}</b>"
}
messages/de.json · fr · ja
  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.

$ npx next-tongue
── 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.

$ tongue update --dry-run
◇  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.

$ tongue login
┌  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.

.github/workflows/translate.yml
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: pr
Pull request #128
loomlocale: 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 free

Prepaid 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 credits

Pro

£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 Pro

Team

£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
Keys2,000
Target locales5
Average characters per key40
Keys changed per month10%
First run
400,000 chars
Typical month
40,000 chars
PlanFirst runPer 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.

LoomlocaleLocizeSimpleLocalizeglobalize.nowCrowdin
Entry paid price£5 credit · £19 Pro$7 Starter€12 Developer€5 Indie$59 Pro
Billing unitCharactersWords × languagesKeys + charactersTranslated charactersHosted words
MT rate per 1M chars£25 prepaid, £22/£20 overage$30 (Locize MT)Bundled; top-up unpublished≈€15Managed Balance or own keys
Key limitsNoneNamespaces and words500–12k keysPlan-basedHosted-word caps
Glossary and historyFrom £19From $49Paid plansIncludedPaid plans
Next.js App Router nativeYes (next-tongue is the CLI)Via i18nextVia CLIVia GitHubVia 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.

Read the docs