Free ARB Diff Tool: Compare Flutter Localization Files Online
Need to compare two ARB files and find missing translations? Our Free ARB Diff Tool lets you compare Flutter localization files side-by-side — no signup required.
Try It Now
Upload your source and target .arb files to instantly find missing keys, placeholder mismatches, and untranslated strings.
Why Compare ARB Files?
When localizing Flutter apps, translation issues sneak in:
- Missing translations: Keys in your source file missing from target translations
- Placeholder mismatches:
{userName}in English but{name}in Spanish - Untranslated strings: Same value in both files (forgot to translate)
- Extra keys: Translations exist for keys you deleted from source
Catching these before production saves hours of debugging.
Features of Our Free ARB Diff Tool
1. Instant File Comparison
Upload or drag-and-drop two ARB files. Get results in milliseconds:
| Source (English) | Target (Spanish) | Status |
|---|---|---|
welcomeMessage |
welcomeMessage |
✅ Translated |
loginButton |
— | ❌ Missing |
errorNetwork |
errorNetwork |
⚠️ Possibly untranslated |
2. Find Missing Translations
Instantly see which keys exist in your source but are missing in the target:
// Source (app_en.arb)
{
"welcomeMessage": "Welcome!",
"loginButton": "Log In",
"signupButton": "Sign Up" // ← Missing in target
}
// Target (app_es.arb)
{
"welcomeMessage": "¡Bienvenido!",
"loginButton": "Iniciar sesión"
// signupButton is MISSING!
}
The diff tool flags signupButton as missing in target.
3. Detect Placeholder Mismatches
Placeholder errors cause runtime crashes. We catch them:
// ❌ Placeholder mismatch
// Source: "Hello, {userName}!"
// Target: "Hola, {name}!" // Wrong placeholder name!
// ✅ Correct
// Source: "Hello, {userName}!"
// Target: "¡Hola, {userName}!"
4. Spot Untranslated Strings
When source and target values are identical (and locales differ), it might be untranslated:
// ⚠️ Possibly untranslated
// Source (en): "Submit"
// Target (es): "Submit" // Same value - forgot to translate?
5. View All Translations
See every key in your files, including properly translated ones (shown in green). This gives you a complete overview:
- Green: Properly translated keys
- Red: Missing or placeholder issues
- Yellow: Possibly untranslated or missing in source
- Blue: Metadata differences
6. Export Options
- Export Report: Download a JSON report with all differences
- Export Missing Keys: Get a ready-to-translate ARB file with just the missing entries
7. Quick Swap
Compare from either direction with the swap button. See what's missing from A→B or B→A.
How to Use the ARB Diff Tool
Step 1: Open the Tool
Go to flutterlocalisation.com/tools/arb-diff
Step 2: Upload Files
Upload or drag-and-drop:
- Source file: Usually your primary language (e.g.,
app_en.arb) - Target file: The translation to check (e.g.,
app_es.arb)
Or click "Load Sample Files" to try with example data.
Step 3: Review Results
The tool shows:
- Summary stats: Translated, missing, issues count
- Detailed list: Every difference with values from both files
- Filters: Show only errors, warnings, or translated keys
Step 4: Filter and Search
- Use the search box to find specific keys
- Filter by type: Missing, Placeholder Mismatch, Untranslated
- Toggle between showing all entries or just issues
Step 5: Export
Click "Export Report" for full JSON or "Export Missing" for a ready-to-translate ARB file.
Common Use Cases
Before Release
Compare all your translation files against the source before shipping:
# Your files
lib/l10n/
app_en.arb # Source - 150 keys
app_es.arb # Spanish - 147 keys (3 missing!)
app_fr.arb # French - 150 keys ✓
app_de.arb # German - 149 keys (1 missing!)
After Adding Features
When you add new strings to your source file, quickly find what needs translation:
// New keys added to app_en.arb
"featureX_title": "New Feature",
"featureX_description": "Try our new feature",
"featureX_button": "Get Started"
// ARB Diff shows these as "Missing in Target" for all other languages
Code Review
Before merging PRs that touch localization, compare files to ensure completeness.
Translator Handoff
Export missing keys as a clean ARB file to send to translators:
// missing_translations_es.arb
{
"@@locale": "es",
"featureX_title": "New Feature",
"@featureX_title": {
"description": "Title for the new feature section"
}
}
White-Label Apps
Compare translations between app flavors to find brand-specific differences:
// Flavor A: "Welcome to BrandA"
// Flavor B: "Welcome to BrandB"
// Shows as "Translated" (different values, as expected)
Comparison with Other Tools
ARB Diff vs Manual Comparison
| Approach | Time | Accuracy | Effort |
|---|---|---|---|
| Manual diff | 30+ min | Low | High |
| VS Code extension | 5 min | Medium | Medium |
| ARB Diff Tool | Instant | High | None |
ARB Diff vs ARB Editor
| Feature | ARB Editor | ARB Diff |
|---|---|---|
| Purpose | Edit & validate single file | Compare two files |
| Use case | Fix syntax errors | Find missing translations |
| Input | One ARB file | Two ARB files |
| Output | Fixed ARB file | Comparison report |
Pro tip: Use both! Edit files with ARB Editor, then compare with ARB Diff.
Best Practices for ARB File Comparison
1. Compare Against Source of Truth
Always compare translations against your primary language file:
app_en.arb (source) → app_es.arb
app_en.arb (source) → app_fr.arb
app_en.arb (source) → app_de.arb
2. Check Regularly
Don't wait until release. Compare after every feature addition.
3. Automate in CI/CD
Use our comparison logic in your build pipeline to catch missing translations early.
4. Export for Translators
When sending work to translators, export only missing keys. They get a clean file to work with.
5. Verify Placeholders
Pay special attention to placeholder mismatches — these cause crashes, not just UI issues.
Understanding Comparison Results
Translated (Green ✅)
Keys that exist in both files with:
- Matching placeholders
- Different values (properly translated)
// Source: "Hello, {name}!"
// Target: "¡Hola, {name}!"
// → Translated ✅
Missing in Target (Red ❌)
Keys in source but not in target — needs translation:
// Source has "newFeature": "..."
// Target doesn't have it
// → Missing in Target ❌
Placeholder Mismatch (Red ❌)
Same key but different placeholders — causes runtime errors:
// Source: "Welcome, {userName}!"
// Target: "Bienvenue, {user}!" // Wrong placeholder!
// → Placeholder Mismatch ❌
Possibly Untranslated (Yellow ⚠️)
Identical values in different locales — might be forgotten:
// Source (en): "OK"
// Target (es): "OK" // Same value
// → Possibly Untranslated ⚠️
Note: Some words are the same across languages (brand names, technical terms). Review these manually.
Missing in Source (Yellow ⚠️)
Keys in target but not in source — orphaned translations:
// Source doesn't have "oldFeature"
// Target has "oldFeature": "..."
// → Missing in Source ⚠️ (maybe delete from target?)
Frequently Asked Questions
Is the ARB Diff tool free?
Yes, 100% free with no signup required.
Does it work offline?
It's a web-based tool, but files are processed in your browser — we don't store your content.
Can I compare more than two files?
The tool compares two files at a time. For multi-file comparison across all languages, use the FlutterLocalisation platform.
What file formats work?
.arb and .json files with valid ARB structure.
Can I save comparison results?
Yes! Export as JSON report or export missing keys as an ARB file.
How accurate is placeholder detection?
We detect all ICU-style placeholders: {name}, {count, plural, ...}, {gender, select, ...}.
Start Comparing Your ARB Files
Stop manually hunting for missing translations. Our free ARB Diff tool catches everything instantly.
Need to edit ARB files? Try our Free ARB Editor to validate and fix localization files.
Managing multiple languages? Try FlutterLocalisation — the complete Flutter localization platform with AI-powered translations.