Translation file completeness checker
Before a website launch, compare a reference locale JSON with its translation. Find missing and extra keys, type conflicts and broken placeholders, then download a report of what needs attention.
Input stays in this page’s memory; it is not uploaded or automatically saved. Switching languages or leaving the page discards data you have not exported.
Preparing local checking. If this message remains, use a browser with native modules, TextEncoder and TextDecoder. There is no cloud fallback.
Confirm replacement
Confirm replacement
The example will replace both fields and switch to single-brace syntax. Existing content will not be automatically saved.
Add data to begin: paste both JSON files or load the labeled fictional example.
Difference report
- Missing keys
- 0
- Extra keys
- 0
- Type conflicts
- 0
- Variable differences
- 0
- Review warnings
- 0
Filters affect only the list below. Empty translations, unchanged text and unsupported syntax are warnings, not confirmed errors.
| Issue and explanation | Path segments | Reference text | Translation text |
|---|
Get the complete report
Both formats contain the complete report, regardless of filters. UTF-8 without BOM and fixed filenames. TXT uses stable field names and error codes for handoff.
Expand complete JSON text (select it to save manually)
Format and limits
The root must be an object and leaves must be strings. Empty objects are valid; only string leaves are compared, so empty objects are not treated as strings. Each input: 32 object levels (root = 1), 10,000 properties, 200 UTF-16 code units per key and 16,384 per string. Duplicate decoded keys, unsafe keys, unpaired surrogates, arrays, null, numbers and booleans reject the entire input.
Paths use independent segments: ["a.b"] differs from ["a","b"]. A string/object conflict is listed at the parent path; descendant missing/extra keys are suppressed. Numeric-looking keys keep their original input order.
Processing uses device memory and stops at the limits. Clear removes this page’s data and download links, not files already downloaded. It does not promise secure erasure of browser or system memory.
Frequently asked questions
Does this assess translation quality?
No. It checks keys and supported placeholder syntax, not linguistic quality.
Is ICU supported?
No. Unsupported brace syntax is flagged for review. %s is not a supported placeholder syntax.
Is unchanged text an error?
No. Names and numbers may intentionally match; this is a review warning. Empty translations are also warnings for you to assess in context.