Combine multiple JSON files — array concat or recursive deep merge. 100% in-browser.
Add two or more JSON files, pick a strategy, and merge them
JSON merging runs entirely in your browser. Your data is never uploaded to any server.
Concat (arrays only) is order-preserving glue: [a] + [b] = [a, b], duplicates included. Deep merge (objects only) recurses: object keys merge pairwise, arrays inside objects concatenate, and later files overwrite earlier scalars — so config overlays work the way you expect. The rule of thumb: lists of records → concat; settings/layers → deep merge.
Later files win on scalar conflicts; arrays always concatenate, even inside objects.
Iris splits translations per team: en-core.json (array of 214 phrase entries), en-marketing.json (87 entries), and a settings overlay shared-config.json.
Merge multiple JSON files online free: concat for arrays, deep merge for objects with stated override rules.
Most merge tools pick one behavior and hide the edge cases. This tool gives you two named strategies with stated rules: concat appends arrays for dataset combining, and deep merge recursively combines objects where nested arrays add together and later scalars override earlier ones. You choose the semantics instead of discovering them from a wrong result.
Deep merge resolves scalar conflicts in favor of the later file in the queue, so put your authoritative source last. Arrays at any depth concatenate rather than replace - merging two configs that both define a tags array gives you both tag sets. The live preview shows the exact merged tree before you download.
Concat is for arrays: it appends every input items into one array, which is the right move for combining datasets like exports or log batches. Deep merge is for objects: it recursively combines keys, nested arrays add together, and when both inputs define the same key with a scalar, the later file wins - a rule that is stated up front, not hidden.
Nested objects merge recursively at every depth. If both files set the same scalar key, the value from the later file in the queue overwrites the earlier one, so ordering the queue matters. If both values are arrays, they are concatenated rather than replaced.
Concat requires every input to be an array and says so if one is not. Deep merge requires every input to be an object. Mixed-type queues are rejected with a clear message instead of producing a silently wrong result.
Why did the elephant paint its toenails red?
No paywalls, no signups, no data sold. Built by a solo developer who believes useful tools should be accessible to everyone.
☕Support me on Ko-fi— keep tools free100% of proceeds go towards hosting & building more free tools.