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 libraries like next-i18next, react-intl, or Vue I18n usually requires maintaining massive, deeply nested JSON files for each supported language. While your base file (e.g., en.json) is constantly updated by developers during feature work, the translation files (e.g., es.json, fr.json) often fall behind.

This results in "translation drift" — where your English interface shows new buttons and tooltips, but your Spanish interface either falls back to English, shows empty strings, or worse, crashes because a nested key is entirely missing.

Missing Keys

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

Empty Values

Keys that exist in the target file, but their value is an empty string "". These occur when translators create placeholders but forget to finish the job.

Extra Bloat

Dead keys in the target file that no longer exist in the base file. Over time, this bloat increases your bundle size and confuses translators.

How Our Deep Comparison Algorithm Works

Standard text diff tools (like Git or basic diff checkers) are terrible at finding missing i18n keys because JSON keys can be arranged in any order. A simple diff will flag thousands of false positives just because the keys were sorted differently.

Our Localization Gap Finder bypasses this by recursively flattening your JSON structures into absolute dot-notation paths (e.g., common.buttons.submit). It then performs a strict set intersection analysis, entirely ignoring the physical order of the keys.

Copy as JSON Structure

When you click "Copy as JSON" on the missing keys, our tool automatically re-inflates the missing dot-notation paths back into a perfectly nested, valid JSON object with empty strings. You can drop this directly into your target translation file!