Missing keys checker for Flutter ARB files

Drop your .arb files: the tool compares every language with the template and lists missing keys, extra keys, empty values and placeholders that no longer match. The comparison runs in your browser and your files are not uploaded. The tool is free and needs no signup.

Compare your ARB files

Or paste the content of two files

Compared in your browser: no file is uploaded.

Fix them without editing every file by hand

LocalePilot is a desktop app that opens your whole localization folder: it detects missing keys, checks placeholders, translates with local AI if you want, then exports with a backup. It is being finalized for macOS: leave your email to hear about the launch.

What the checker looks for

  • Missing keys: in the template but absent from a language. The app compiles, but your users see the template language's text instead of their own.
  • Extra keys: in a translation but no longer in the template, often leftovers from a removed feature.
  • Empty values: the key exists but its translation is blank, which a plain key check misses.
  • Placeholder mismatches: {name} turned into {nom}, or dropped. Placeholders inside ICU plurals and selects are read too.

Keys starting with @ (metadata and @@locale) are ignored. The reference file is the one set by template-arb-file in l10n.yaml, usually app_en.arb: the tool guesses it and you can pick another.

Finding missing keys in a Flutter app

  1. Gather the files from your arb-dir folder (lib/l10n by default).
  2. Drop them all at once, template included.
  3. Open each language to see its issues, then copy the missing keys in ARB format: they reuse the template text, ready to translate.

For an automatic check on every build, the untranslated-messages-file option of flutter gen-l10n and a small CI script are covered in the guide to finding missing keys in ARB files. ICU placeholder mistakes are explained in the guide on plurals and placeholders.

Limits of the checker

The tool compares keys and placeholder names: it does not validate full ICU syntax (that is flutter gen-l10n's job), does not judge translation quality and never modifies your files. To import a whole project, translate and export with a backup, you need a localization editor such as LocalePilot.

Frequently asked questions

Are my ARB files uploaded to a server?

No. The comparison runs in your browser: no file and no key is sent anywhere. You can confirm it in the Network tab of your developer tools.

Which file is the reference for finding missing keys?

The template file, the one template-arb-file points to in l10n.yaml (often app_en.arb). The tool picks it from @@locale or the file name, and you can select another.

Does the tool change my files?

No, it is read-only. It only offers to copy the missing keys in ARB format, with the template text, so you can translate them.

How does Flutter report missing translations?

With the untranslated-messages-file option in l10n.yaml, flutter gen-l10n writes the template keys missing from each language to a JSON file. The dedicated guide covers that option and a comparison script for CI.

Are ICU plurals and selects supported?

For placeholders, yes: those inside plural or select branches are compared with the template. The tool does not validate the ICU syntax itself.

How is this different from LocalePilot?

This tool checks files you paste or drop, without saving them. LocalePilot is a desktop app, being finalized for macOS, that opens the whole project, reviews, translates with local or cloud AI and exports with a backup.

Get notified at launch

LocalePilot is being finalized. Leave your email to hear when it launches.

  • macOS 12 or later · Ollama or LM Studio optional
  • App interface in English, French, Spanish, Italian and Portuguese.