Sign In

Localization Gap Finder

Deeply compare two nested JSON translation files. Instantly find missing keys, empty values, and dead bloat.

Base JSON (e.g. English)

Loading...

Target JSON (Translation)

Loading...

Localization Gap Report

0 Missing
0 Empty
0 Extra

Perfect Match!

Both translation files have the exact same keys and no empty values.

The Problem with i18n JSON Files

Building a multi-lingual application using popular localization libraries like next-i18next, react-intl, or Vue I18n almost always requires maintaining massive, deeply nested JSON files for each supported language. While your base language file (e.g., en.json) is constantly updated by software engineers during active feature development, the supplementary translation files (e.g., es.json, fr.json) routinely fall behind schedule.

This inevitably results in an issue known as "translation drift"—where your English user interface elegantly displays newly developed buttons and tooltips, but your Spanish interface either falls back to English unexpectedly, displays broken empty strings, or worse, crashes the frontend entirely because a specific nested JSON key is entirely missing from the structure.

Missing Keys

Paths that exist in your base language file but are completely absent from the target translation file. This is the single most common cause of fallback text or fatal UI rendering errors.

Empty Values

Keys that structurally exist in the target file, but their value is explicitly an empty string "". These occur when developers create temporary placeholders but forget to supply the actual translation before deploying.

Extra Bloat

Dead keys or deprecated strings in the target file that no longer exist in the base file. Over time, this zombie bloat significantly increases your JavaScript bundle size and severely confuses external translators.

How Our Deep Comparison Algorithm Works

Standard text diff tools (such as native Git diffs or basic online text comparators) are exceptionally terrible at identifying missing i18n keys because JSON keys can be structurally arranged in any arbitrary order. A simple line-by-line diff will aggressively flag thousands of false positives simply because the JSON properties were sorted differently by a formatter.

Our advanced Localization Gap Finder bypasses this limitation by recursively flattening your massive JSON structures into absolute dot-notation paths (e.g., common.header.buttons.submit). It then performs a mathematically strict set intersection analysis against the two trees, entirely ignoring the physical line order of the keys in the original text documents.

Re-inflating JSON Structures

When you click "Copy as JSON" on the missing keys panel, our algorithm automatically re-inflates the missing dot-notation paths back into a perfectly nested, syntactically valid JSON object populated with empty strings. You can immediately drop this directly into your target translation file, hand it off to your translators, and eliminate the structural errors instantly.

Frequently Asked Questions

Why not just use an automated translation API?

While tools like Google Translate are great for prototyping, enterprise applications require precise, culturally aware translations provided by human linguists. This tool ensures that you capture exactly which strings are missing so you can send a clean, accurate list to your localization team.

Are my JSON translation files kept private?

Yes. This entire comparison process runs completely locally inside your browser using JavaScript. Your proprietary application strings, which may contain sensitive business logic or unreleased feature names, are never uploaded to any remote server.

Can it handle deeply nested JSON arrays?

Yes, the recursive flattening algorithm traverses infinitely deep through nested objects and arrays. Arrays are structurally flattened using numeric indices (e.g., pages.faq.questions.0.title), ensuring complete structural parity across your languages.