FREE FLUTTER ARB VALIDATOR

Every locale.
Ready to ship.

Find missing translations, broken placeholders, and ICU syntax issues before they reach your Flutter app.

✓ No account✓ No uploads✓ Always free
app_fr.arbJSON / ARB
1 {
2   "@@locale": "fr",
3   "welcome": "Bonjour {nom}"
4 }
!
Small typo. Big difference.

The reference expects {name}, not {nom}.

Your next release, with fewer surprises.

THE WORKSPACE

Check your ARB files

Runs on your device

Validation results

A little peace of mind before your next release.

Your translations, in sync.

Add a template and your locale files.
We’ll take care of the cross-checking.

01 Add files02 Set reference03 Review issues

LESS GUESSWORK, FEWER BROKEN BUILDS

From locale files to a clear fix list.

01 / COMPARE

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.

02 / VALIDATE

Look inside every message.

Check nested plural and select expressions, required other branches, placeholder names, metadata types, and duplicate JSON keys.

03 / RESOLVE

Take the findings with you.

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

A JSON check is only the start.

ARB files connect your copy to generated Dart code.
Check the parts that matter to that connection.

✓ Strict JSON & duplicate keys✓ Missing & empty translations✓ Nested ICU plural / select✓ Placeholder consistency✓ Locale & metadata checks✓ Local report exports

GOOD TO KNOW

A few useful details.

What is a Flutter ARB file?

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.

Are my translation files uploaded?

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.

How do I fix missing translations?

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.

Does this replace flutter gen-l10n?

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.

Can I check one file or a large project?

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.

Paste an ARB file

Invalid JSON is welcome — the validator will show you where to fix it.