Start with your source of truth.
Load your template ARB and translations. Select a reference to spot missing keys, extra messages, and empty values across languages.
FREE FLUTTER ARB VALIDATOR
Find missing translations, broken placeholders, and ICU syntax issues before they reach your Flutter app.
1 { 2 "@@locale": "fr", 3 "welcome": "Bonjour {nom}" 4 }
The reference expects {name}, not {nom}.
THE WORKSPACE
A little peace of mind before your next release.
Add a template and your locale files.
We’ll take care of the cross-checking.
Checking messages and comparing locales…
Report limit reached. Results are incomplete. Split your batch and run it again.
Coverage = nonempty reference keys present. It does not measure translation quality.
Preflight checks complement flutter gen-l10n; run it for your SDK’s final validation.
LESS GUESSWORK, FEWER BROKEN BUILDS
Load your template ARB and translations. Select a reference to spot missing keys, extra messages, and empty values across languages.
Check nested plural and select expressions, required other branches, placeholder names, metadata types, and duplicate JSON keys.
Filter by locale and severity. Expand a finding for context, then export a JSON, CSV, or Markdown report to share with your team.
BUILT FOR FLUTTER
ARB files connect your copy to generated Dart code.
Check the parts that matter to that connection.
GOOD TO KNOW
ARB stands for Application Resource Bundle. Flutter’s gen-l10n tool reads these JSON files to generate localization classes. Message keys contain translations, @key entries describe them, and @@locale identifies the language.
No. File reading, parsing, comparison, and report generation happen in your browser. This app has no analytics, external fonts, accounts, or translation API. Closing or refreshing the tab clears the files. Exported reports can contain translation text, so share them intentionally.
Select your template as the reference. Use the Errors filter to find missing keys, add those keys to each locale, and translate their values. Keep placeholder identifiers consistent with the template. Missing translations are treated as a release-policy error here even when Flutter would fall back to the template.
No. This is a preflight validator for strict Flutter message syntax, not a Dart compiler. It does not resolve l10n.yaml, relaxed-syntax, custom Dart imports, or every intl optional parameter. Formatting support can vary by SDK. Run flutter gen-l10n and your app tests before release.
One file gets JSON, ICU, locale and metadata checks. Add more files to compare translations. Limits are 100 files, 2 MiB per file and 10 MiB total; very deep messages and reports over 3,000 findings are capped to keep the tab responsive.