Free localization developer tool

Free i18n JSON translation key checker

Paste a source-language JSON dictionary and a target translation. Find missing and extra nested keys instantly without uploading either file.

The complete source-language dictionary.

The locale you want to check for parity.

4Source keys
3Matching keys
1Missing keys
1Extra keys
75%Key coverage

Missing from target

  • checkout.cancel

Extra in target

  • navigation.legacy

Private by design. This tool runs entirely in your browser. Pasted values are never uploaded, stored, or included in analytics.

Locale Code ConverterEnter a locale such as en_US, pt-BR, zh-Hant-TW, or a common language name. Get canonical codes and readable details instantly.Hreflang Tag GeneratorPaste one language code and absolute URL per line. The generator validates the set and creates reciprocal-ready HTML link tags.

How to compare translation keys

  1. Paste the source dictionaryPut the complete source-language JSON object in the first editor.
  2. Paste the target dictionaryPut the translated JSON object you want to check in the second editor.
  3. Review key differencesUse the missing, extra, matching, and coverage results to resolve locale-file drift before release.

Catch incomplete locale files before release

A missing i18n key often reaches users as raw developer text, an empty label, or a fallback-language sentence. Compare the source dictionary with each target locale before release to catch drift while it is still easy to fix.

The checker flattens nested objects into key paths, then separates missing, extra, and matching keys. Extra keys can reveal stale copy that was removed from the source or a target-only key that needs an intentional exception.

Use key parity as one localization quality gate

Matching key counts do not prove that translations are accurate, current, or suitable for their UI context. Pair parity checks with translator review, placeholder validation, screenshots, and automated tests for plural and interpolation behavior.

For continuous localization, run the same comparison whenever source copy changes. A translation management workflow can then assign only the missing work instead of repeatedly exchanging whole files.

Your dictionaries stay on this device

The browser parses both JSON documents locally. Multilocale does not upload or retain their keys or values, and interaction analytics contains only numeric totals and generic success or error states.

Frequently asked questions

Does the checker compare translation text?

No. It compares key paths and reports whether each source key exists in the target JSON. It does not judge translation quality, copy values, or send text to a translation service.

Does it support nested JSON objects?

Yes. Nested keys are shown as readable dot paths, such as checkout.payment.failed. Arrays are treated as one translation value rather than expanded into index-by-index keys.

Are pasted translation files uploaded?

No. Parsing and comparison run entirely in your browser. Analytics receives only aggregate counts and parse status; it never receives keys, values, file contents, or filenames.