Transform

Generate JSON Patch

Build an RFC 6902 patch that turns one JSON document into another.

Original first, then the wanted result

Settings

Output

Result appears here after you select

{ } How to use

  1. Paste the original document, then the one you want.
  2. Select Process.
  3. The result is a patch array ready to send to an API that accepts one.

{ } How it works

Generate JSON Patch works on the text you provide. Adjust the options, then select Process ▸ and it runs entirely in your browser — nothing is uploaded to a server — then shows the result in the Output panel.

Inputs

  • Original first, then the wanted result — paste or type your input in the left panel (use Sample for an example)
  • Indentation — choose one — Minified, 2 spaces, 4 spaces (default: 2 spaces)

Output

JSON — copy it, download it, or switch the Output panel to Tree view to explore it.

{ } Common uses

  • Send only what changed to an API that takes application/json-patch+json.
  • Record a change as a reviewable list of operations rather than a whole new file.
  • Work out exactly which operations a change implies before writing them by hand.

{ } Limitations

  • Only add, remove and replace are emitted. Move and copy are legal and would make some patches shorter, but detecting them means matching values across the whole document, and a wrong guess produces a patch that applies cleanly and puts data in the wrong place.
  • Arrays are compared by position, so inserting near the start produces a patch that rewrites everything after it. That is correct, if longer than a human would write.

{ } FAQ

Is my data uploaded to a server?

No. Everything runs locally in your browser — your files never leave your device.

Can I process more than one file at once?

This tool works on one input at a time.

Is this tool free?

Yes — it’s completely free and needs no sign-up.

How is this different from the diff tool?

The diff tool reports where two documents differ, for a person to read. A patch is instructions for a machine to apply, in a format defined by RFC 6902. Use the diff to understand a change, and a patch to transmit one.

Why is my patch longer than I expected?

Almost always because an item was inserted near the start of an array. Positions shift, so every later index genuinely differs. It is also why move is not guessed at — an insertion and a move look identical from the outside.