Paste or open two files
Place your original JSON or YAML on the left and the updated version on the right. Compare JSON to YAML directly. Choose the format explicitly for ambiguous YAML flow syntax or scalar values.
Two journeys, one shared future. Your contribution helps my daughter pursue higher education and helps me continue creating thoughtful, accessible open-source tools—free for everyone to use.
Compare JSON / YAML online
Compare JSON or YAML files with live highlights for added, removed, and changed values. Match arrays and Kubernetes resources, then export a clear report. Your data stays in your browser.
Find added, removed, and changed fields in an API response while ignoring object key order.
Highlighted lines show changed fields; brighter text marks the edited values. Use Next / Previous or Alt + ↓ / ↑ to jump between changes. Input stays editable.
Object key order, indentation, and YAML comments are ignored. Array positions matter. Ctrl/⌘ + Enter compares.
Paste two documents, then choose Compare documents.
Review − original and + updated values. Highlighted text pinpoints edits. Reports include all changes; paths use JSON Pointer escaping.
Your comparison will appear here.
Place your original JSON or YAML on the left and the updated version on the right. Compare JSON to YAML directly. Choose the format explicitly for ambiguous YAML flow syntax or scalar values.
Compare arrays by position, ignore their order, or match object arrays by a unique field such as id or name. Kubernetes identity matches resources across reordered YAML documents.
See differences highlighted in your inputs as you type. Jump between changes with Next / Previous, or review the detailed results below. Copy or download the complete JSON report. Nothing is uploaded or saved between visits.
Compare an API response or a configuration file. Each pair below produces two changes; object key order and YAML comments do not create extra differences. The sample picker includes five JSON, five YAML, and five Kubernetes scenarios, with matching options applied automatically when you load an example.
{
"service": "catalog-api",
"replicas": 2
}
{
"replicas": 3,
"service": "catalog-api",
"debug": false
}
JSON result: /replicas changes from 2 to 3, and /debug is added. Moving service creates no change.
# Current release
service:
name: catalog-api
replicas: 2
image: catalog:1.0
# Next release
service:
image: catalog:1.1
name: catalog-api
replicas: 3
YAML result: /service/image and /service/replicas change. The comment and key order are ignored.
Use this checker for API responses, Helm values, Docker Compose configuration, and Kubernetes manifest reviews.
A structural diff compares parsed values and reports the fields that were added,
removed, or changed. It ignores formatting and object key order. A number such as
3 differs from the string "3"; a missing field differs from a
field containing null. Added and removed objects count as one change at
their parent path.
Yes. “Compare as I type” refreshes the highlights after a short pause. Switch it off for manual comparison. Press Ctrl/⌘ + Enter to compare, and Alt + ↓/↑ to move between changes. Tab inserts two spaces in an editor; Shift+Tab leaves it. “Show in inputs” links each detailed result back to its source.
Yes. Each input has its own format selector. JSON-compatible YAML values, anchors, aliases, and multi-document streams are supported. YAML comments, quoting style, and whitespace are not compared. Dates remain strings; custom tags and recursive aliases are rejected. When an alias inherits a changed value, its reference is highlighted alongside the anchor. For a formatting-only review, use your editor’s text diff. Use the YAML & JSON Formatter to convert or validate a single document.
Items match by their complete value, including nested arrays compared without order.
Duplicate counts are preserved: [1, 1] differs from [1].
Editing an item produces a removal and an addition in this mode. To track field edits
within object arrays, choose “Match objects by field” and enter a unique direct field
name. Object arrays require that field on every item; primitive and mixed arrays still
compare by position.
Choose Kubernetes identity to match resources by apiVersion,
kind, metadata.namespace, and metadata.name.
Paste multi-document YAML or a JSON array of resources. Duplicate identities are
rejected. Missing namespaces remain distinct from an explicit default
namespace, and server-generated fields are included. This is an offline file comparison,
not a live cluster diff. You can create drafts with the Kubernetes Manifest Builder or Helm Chart Builder.
Normal paths use JSON Pointer notation: /service/ports/0 identifies the
first port. A literal ~ in a key is escaped as ~0, and a slash
as ~1. An empty path denotes the root value. Multi-document comparisons add
a /documents/0 prefix. Matched arrays and Kubernetes resources use
descriptive identity segments instead of indexes; these paths are report labels and
cannot be used as JSON Patch operations.
Yes. Parsing, comparison, file reading, and report creation happen locally. Your input is not uploaded, stored, or placed in a URL. No account is needed. Copying or downloading a report explicitly creates a copy containing the changed values, so review it before sharing.
Each input is limited to 1 MiB, 80 nesting levels, and 50,000 expanded values. Expanded text is capped at 4 MiB, and reports support up to 2,000 changes. Numbers use JavaScript precision; non-finite values and unsafe integers are rejected. Quote large identifiers or high-precision decimal values to compare them exactly. Duplicate JSON or YAML mapping keys are rejected to avoid hiding overwritten values.