JSON Beautifier & Explorer
How to investigate a duplicate-key warning in your JSON
A duplicate-key warning means the same decoded key appears again inside one object. JSON Beautifier & Explorer preserves every occurrence. Inspect the flagged members in Tree, compare their locations and values, then edit Source deliberately. Format again and check the new duplicate count before downloading; formatting alone never chooses which value to keep.
Open JSON Beautifier & Explorer
Read the count as extra occurrences
Paste your document into Source and select Format JSON. A status that says Valid JSON with duplicate key occurrences means parsing succeeded, but repeated members remain in the result. The tool accepts and preserves them so you can inspect the original structure. The word Valid does not mean the app has resolved conflicting values.
For example, enter {"mode":"draft","mode":"review","mode":"live"}. The count is two: the first mode establishes the name, and each later occurrence adds one. It is not a count of three members or one distinct repeated name. Check the values before deciding what the document should contain.
The check is local to each object. In {"left":{"mode":"draft"},"right":{"mode":"live"}}, neither mode is a duplicate: each belongs to a different object. This distinction matters when a large payload repeats familiar field names throughout many records.
Locate both members before changing either one
Switch to Tree and expand the root. For {"id":7,"mode":"draft","mode":"live"}, the later mode carries a duplicate key marker. The first mode is unmarked. Compare both rows rather than treating the marker as an instruction to delete the later value: the app identifies repetition, not which value is correct.
The paths distinguish the two members as $["mode"]#2 and $["mode"]#3. The suffix gives the member position within that object, counting all its members from one. It is not the second or third repetition of mode. Use the ancestor part of a nested path to confirm that you are looking at the intended object.
For a larger document, enter mode in Find key or value. Search is literal and case-insensitive and can match values as well as names, so inspect each returned row. It reports the total but displays at most 100 matches. There is no duplicate-only filter. A broad search is a starting point; it does not prove you have reviewed every repeated member.
Check escaped names and letter case
Two keys can look different in the source and still trigger the warning. In {"mode":"draft","\u006dode":"live"}, the escape sequence \u006d represents m. The parser decodes key strings before checking for duplicates, so these names are equal and the second member is flagged. Formatting retains the original escaped spelling.
By contrast, {"mode":"draft","Mode":"live"} has no duplicate occurrence under this check. The parser compares decoded names with their letter case intact. Search has a different rule: a search for mode can return both names because search ignores case. Do not use the number of search hits as the duplicate count.
Repair the source according to the intended data
Make the change in Source. If the live value is the intended one, the example can become {"id":7,"mode":"live"}. Remove the unwanted member and its separating comma carefully. If both values are meaningful, decide on distinct field names or a different structure that your receiving application expects. The tool cannot make that data-design decision for you.
You can also investigate a repeated name whose values are identical, such as {"mode":"live","mode":"live"}. It still produces one duplicate occurrence: the check compares names, not whether their values disagree. Matching values do not cause automatic deduplication.
After editing, wait for processing or select Format JSON. Check the fresh status and inspect the affected object again. If you accidentally leave a trailing comma or remove a needed separator, repair the syntax before continuing. Source edits clear the previous result and disable exports while a fresh result is unavailable.
Save only after the warning matches your decision
When your goal is one member per name, look for zero duplicate key occurrences before selecting Download .json. If the count remains above zero, inspect other objects too: the status accumulates duplicate occurrences across the document. Removing one repeated pair may leave another elsewhere.
Minify is not a cleanup command for duplicates. Both formatting modes rebuild the output from every preserved member, so an unresolved repetition remains in the downloaded document. Choose the desired layout, check the current result, then save it. Download uses the complete output and does not export only the rows found by your search.
AI-assisted ForgeHub editorial. App capabilities were checked against its implementation; this guide is not an independent review.
Frequently asked questions
Does the duplicate marker mean the later value is wrong?
No. It marks a key already seen in the same object. The app keeps both members and does not determine which value your application intends. Compare the values and edit Source deliberately.
Why does searching for a key show more rows than the duplicate count?
Search includes first occurrences, matches in separate objects and matching values, and ignores letter case. The duplicate count records only extra occurrences of an equal decoded name within each object.
Can identical names in separate array items trigger the warning?
Not merely because they recur in different items. In [{"id":1},{"id":2}], each object has its own set of names. A repeated id inside either individual object would count.