AppCrib
Developer Tools

JSON Diff Online: Compare JSON and YAML Semantically in One Tool

Launch·Published by AppCrib··
DiffpadPaste. Compare. Copy the diff.

How do I compare two JSON objects online?

Paste the first blob on the left, paste the second on the right, press Compare. Diffpad parses both sides, compares them structurally, and shows you what changed. Key order isn't counted as a change. Nested paths surface with full dot notation. You can copy a plain-text summary of every change with one click and paste it into Slack or a PR. No login, no upload, nothing sent to a server. The tool is at appcrib.com/diffpad and costs nothing.

Most online JSON comparison tools treat JSON as text. Reorder the keys of an identical object and they flag every line. Add a trailing comma in one pane and they break silently. Diffpad parses both inputs, normalizes structure, then walks the object graph. Two objects with the same keys in different order produce zero differences. A text differ can't do that because it doesn't know what a key is.

How do I compare two YAML files?

Paste two YAML documents into Diffpad the same way you'd paste two JSON blobs. The tool auto-detects format on each pane, parses each side with js-yaml, and runs the same structural comparison. Anchors and aliases resolve before the comparison runs, so two YAML files with equivalent resolved structure show no diff even if one uses <<: *defaults and the other inlines the values.

This matters for Kubernetes manifests and Helm charts more than for anything else. values.yaml files routinely use anchors to avoid repeating config blocks. A text diff between an anchor-heavy file and its inlined cousin shows hundreds of lines of noise. A semantic diff shows what actually differs, which is usually a single image tag or replica count.

Can I diff JSON against YAML in the same tool?

Yes. Paste JSON on the left, YAML on the right, press Compare, and Diffpad treats both sides as structured data. Two equivalent blobs in different formats show zero differences.

This is what Diffpad does that jsondiff.com, yamldiff.com, and Diffchecker don't. The other tools are single-format. If you convert a Kubernetes manifest from YAML to JSON for a ConfigMap, or you're sanity-checking that an OpenAPI spec and its generated client config match, you can compare them directly without converting one side first.

The cross-format comparison works because Diffpad normalizes both inputs to the same object representation before diffing. YAML with anchors resolves to plain objects. JSON parses to plain objects. The diff engine sees the same structure regardless of the source format.

Why does my diff tool flag key-order changes as differences?

Because it's doing a text diff, not a semantic one. Text-compare.com, most of Diffchecker's free tier, and most online tools developers reach for treat your JSON as a string of characters. If {"a": 1, "b": 2} comes back from your API as {"b": 2, "a": 1}, they'll flag two lines as changed.

Order isn't meaningful in JSON objects. The spec says so. Most HTTP libraries don't guarantee key order. Go maps are randomized. Python dictionaries preserve insertion order, but different code paths can produce different insertion orders. When you paste an API response from yesterday and one from today into a text differ, you'll see false positives that have nothing to do with what actually changed.

Diffpad parses both inputs into an object representation and walks the structure. spec.containers[0].image either changed or it didn't, and the dot path shows you where. Reordering keys, adding whitespace, changing indentation: none of it produces noise.

How do I copy a JSON diff as text for a Slack message or PR comment?

Click "Copy Diff Summary." Diffpad generates a structured plain-text summary with one line per change and writes it to your clipboard. Paste it wherever you need.

The output format is deterministic. Added keys appear as Added: foo.bar = "baz". Deleted keys appear as Deleted: qux. Changed values appear as Changed: count 3 -> 5. Nested paths use full dot notation. Array elements use bracket notation. String values get double quotes. Numbers and booleans don't. If you compared two identical blobs, the clipboard gets the string "No differences found." and nothing else.

The format was designed for the places developers actually paste diff output: Slack threads, GitHub PR comments, Jira tickets, postmortems. The output reads the same way you'd describe the change to a coworker. Every other free diff tool makes you transcribe the visual highlights into prose by hand.

Here is what a real output looks like for a Kubernetes manifest diff:

Changed: spec.replicas 3 -> 5
Changed: spec.template.spec.containers[0].image "nginx:1.19" -> "nginx:1.21"
Added: spec.template.spec.containers[0].resources.limits.memory = "512Mi"
Deleted: metadata.annotations.deprecated

Paste that into a PR description and the change is already documented. No screenshot required.

Does Diffpad send my data to a server?

No. Everything runs in your browser. The page loads, JavaScript parses your input, the diff renders client-side, and the result never leaves your machine. Close the tab and the data is gone.

API responses frequently contain internal IDs, email addresses, or tokens that you'd rather not paste into a random web form. Production YAML contains secrets, image references tied to internal registries, and hostnames you don't want in someone's access log. Diffpad's threat model is straightforward: there's no backend, so there's nothing to leak.

Carbon Ads and EthicalAds serve banners at the top and bottom of the page. Those networks see impression data. They don't see what you pasted.

The tool, no marketing

Diffpad is free. No accounts, no paid tier, no upgrade prompts, no AI features, no data collection. Two input panes, a Compare button, a result view, and a Copy button. Paste, compare, copy.

If you spend any part of your week diffing JSON API responses, Kubernetes manifests, Helm values, or Terraform state, try it at appcrib.com/diffpad. The first diff takes about ten seconds from page load.

Diffpad
Paste. Compare. Copy the diff.
Try Diffpad