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.

Differences:
0added0removed0changed

Original

Waiting for input
1

Modified

Waiting for input
1

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.

Related tools

Frequently asked questions