i18n key diff
Compare two localization JSON files and list the translation keys missing from each.
i18n key diff
Paste your base localization file as JSON A and the translated file as JSON B, and this tool flattens both to dot-notation key paths — "nav.home", "errors.notFound" — then reports exactly where they diverge. It's built for the moment a translation file falls behind its source: a new screen ships a handful of strings, someone edits the English copy directly, or a locale was machine-translated months ago and never revisited.
Choose what to report: keys missing from B (added to the source but never translated), keys missing from A (leftover strings a since-removed feature left behind), or both at once. A fourth mode, "untranslated", lists keys that exist in both files with byte-identical values — a strong signal a string was copied across rather than translated, since a real translation only matches the source by coincidence. Nested objects are walked recursively however deep the file goes; arrays are compared as whole values rather than indexed into, the way real localization files treat them.
Output comes as a plain list, one path per line, or as JSON, ready to feed into a script or a CI check that fails a build when translations drift. The tally shows the full picture whichever report mode is selected — how many keys are in A, how many in B, and how many are missing on either side. Invalid JSON is reported by name, quoting the parser's own message, so you know which file to fix.
Everything runs locally in your browser: both files are parsed and compared on your device and never uploaded anywhere, which matters since localization files often carry unreleased feature names and internal terminology before a launch. Use it to review a translator's pull request, audit a locale before a release, or find every string a refactor silently dropped.