Three-Way JSON Merge
Bring together two JSON branches that diverged from a common ancestor. Non-conflicting changes are merged automatically; real conflicts are surfaced for you to pick a side.
Instant
Runs entirely in your browser — no upload, no wait.
100% private
Your JSON never leaves the tab. Nothing is logged.
No signup
Free, unlimited, no account required.
When you need three-way merge
Two teammates edited the same JSON config off the same baseline. You need the union of both edits — except where they actually disagree. That is what three-way merge does, using the common ancestor as a tiebreaker.
How the algorithm works
For each path in the document: 1. If only one side changed it, keep that change. 2. If both sides changed it identically, keep the change. 3. If both sides changed it differently, mark a conflict and ask you to pick. 4. If neither side changed it, keep the ancestor value.
Conflict resolution UI
Each conflict shows three columns: ancestor, ours, theirs. One-click buttons let you take ours, take theirs, or hand-edit a custom value. The merged document updates live as you resolve.
// Ancestor:
{"theme": "light", "lang": "en"}
// Ours:
{"theme": "dark", "lang": "en", "beta": true}
// Theirs:
{"theme": "dark", "lang": "fr"}
// Auto-merged result:
{"theme": "dark", "lang": "fr", "beta": true}Use cases
Resolving git merge conflicts in package.json, tsconfig.json, or i18n catalogs. Combining two AI-edited drafts of the same config. Reconciling environment variable manifests across teams.
Privacy
All three documents are merged in the browser. Nothing is uploaded.