Configuration review

YAML diffSeparate data changes from source edits

Compare YAML 1.2 streams by structure or inspect their original text.

YAML diff

Before

After

Both inputs are processed in this browser; no content is uploaded.

For example ["/0/metadata/time"]. /0 is the first document; /0/ targets its empty key. Use ~0 for ~ and ~1 for /. Exclusions remove subtrees from structural counts and reports; array indices never shift. Text mode remains unfiltered.

YAML 1.2 core + explicit timestamp/binary. Mapping order is ignored; documents and arrays match by index. Integer and float types differ. Timestamps compare original spelling, not instants.

Each side: 200,000 characters / 800,000 UTF-8 bytes; 100 documents, 50,000 expanded nodes, depth 100, 5,000 anchor/alias reference rows. Up to 5,000 changes, 1 million cumulative path characters and 4 million report characters. Worker: 5 seconds. Text: 500 ms, 2,000 edit distance, 50,000 tokens.

Enter configurations or run a comparison.

Changes

YAML diff helps when a deployment review mixes a changed replica count with reordered keys. The structural view matches names and retains value types; the text view shows what actually changed in the file.

Use YAML compare to compare YAML files before rollout. This semantic YAML diff pairs every document by its position, so a multi-document stream never silently becomes a comparison of only its first document.

Why use YAML diff

Two views answer different review questions

Match every document before inspecting values

YAML diff keeps a stream as an ordered set of documents. Matching keys ignore their written order, while a removed document or a typed value change remains visible. Reordering documents is deliberately meaningful.

Two stacks of YAML-like document cards pair horizontally by position, with a changed leaf and an unmatched final document highlighted.

Review source edits separately

A changed comment can matter to a maintainer without changing configuration data. Switch to original text to see comments, spacing and line endings; this view does not inherit structural path exclusions.

The same two source cards feed a matching tree view and a separate line view where reordered lines and a comment edit are highlighted.

Choose the meaning of the review

Pairing, scope and freshness determine what an export says

01

Check document positions

The first document on each side pairs with the first, then the second with the second. Paths begin /0, /1 and so on. A new document in the middle shifts later pairings; Kubernetes names do not trigger automatic realignment.

02

Set exclusions precisely

Enter a JSON string array such as ["/0/metadata/time"]. Each pointer excludes that node and its descendants. Escape slash as ~1 and tilde as ~0; JSON escapes let a path contain a newline. /0/ identifies an empty key, while /0 excludes the entire first document.

03

Export the intended view

Structure exports typed JSON changes after exclusions. Original text exports unfiltered line blocks, including unchanged source. Editing immediately disables stale exports. Automatic comparison waits 350 ms; manual mode supports Ctrl/Cmd+Enter. Replacement previews offer one Undo.

Changes with explicit identities

Names, positions and scalar types retain their roles

Complete stream pairing

All documents participate, including explicit empty documents. Added or removed whole documents have their own marker. Arrays pair by index; an insertion may change several following entries instead of being guessed as a move.

Exact numeric comparison

Integers use arbitrary-size digits within the token budget. Finite decimal floats use exact coefficient/exponent equality: 1.0 equals 1e0 but differs from integer 1. Float negative zero differs from positive zero; NaN equals NaN for this review.

Exclusions that reach containers

Excluded subtrees are removed from both structural inputs before comparison, including an added container or a container replaced by a scalar. Reports retain original array indices. Counts describe the remaining changes, not the hidden values.

A typed review format

Scalar values remain strings with an explicit type, preserving large integer digits and nonfinite floats. Container entries carry keys or original indices. Screen, clipboard and download use the same current report; the report is descriptive and cannot be applied as a patch.

Schema and scope boundaries

Read these before treating two configurations as equivalent

A declared YAML 1.2 subset
The parser uses YAML 1.2 core with explicit timestamp and binary tags. Explicit 1.1 directives, non-string or complex mapping keys, duplicate keys, unknown tags, set/omap/pairs and unsupported scalar spellings are rejected. YES and NO remain strings. Not every valid YAML representation is supported.
Bounded aliases and optional merge
Aliases resolve to the nearest preceding anchor with the same name in the same document. Forward, cross-document and cyclic references are errors. Merge expansion is off by default; when enabled, earlier sources win, explicit keys override them and merging is shallow. Quoted or explicitly string-tagged << remains an ordinary key.
Timestamp spelling and binary bytes
An explicitly tagged timestamp compares its original spelling, including all fractional digits and early years. Calendar validity and timezone equivalence are not checked; this is not instant comparison. Binary requires canonical padded Base64, allowing YAML whitespace, and compares decoded bytes.
Exclusions do not redact source
Path filters affect only structural counts and reports. Original editor text, replacement previews and text-mode reports remain visible and unfiltered. No password names are guessed. Text reports contain unchanged blocks too; choose the report you actually intend to share.
Review rather than merge or deployment
There is no identity-key document matching, array move detection, three-way merge, Helm rendering, URL import or server history. Render Helm templates elsewhere first. Original text keeps comments, order and physical line endings; structural comparison ignores presentation.
Complete results within resource budgets
Each input is limited to 200,000 characters and 800,000 UTF-8 bytes; expansion permits 100 documents, 50,000 nodes, depth 100 and 5,000 combined anchor/alias rows. Limits also include 5,000 changes, 1 million cumulative path characters across both sides, 1,000-character numeric tokens and 4 million report characters. Filters allow 100 pointers and 20,000 characters. Workers stop at 5 seconds; text diff has an additional 500 ms, 2,000-edit and 50,000-token budget. A failure disables export rather than returning a partial result. Expanded scalar work and generated YAML each have a 2-million-character budget.

YAML diff questions

Common configuration-review situations

Why can different-looking YAML have no structural changes?

YAML diff compares parsed mapping keys and typed values. Reordering keys or switching block and flow presentation does not change that structure. Open Original text when the written form itself needs review.

How does comparison handle lists?

List items are compared by their original zero-based index. Adding an item at the start may change later positions. Excluding an item preserves those indices rather than compacting the list.

Can a YAML stream contain multiple documents?

Yes. Every document is paired by index, up to 100 per side. A missing trailing document is added or removed as a document. This page does not silently select only the first document.

Can I compare rendered Helm manifests?

Yes if the rendered output fits this YAML subset. Render the template before pasting it. Resources pair by document position, not kind, namespace or metadata.name, so align their order for an intentional review.

Are comments compared as data?

Structural comparison ignores comments. Original text compares the exact source and shows comment edits alongside key order, whitespace and line-ending changes. Structural path filters do not apply to that text report.

Have a YAML review case we missed?

Start a YAML diff

Use YAML diff to check typed configuration changes, then inspect original text before selecting the report to share.

Original-text reports remain unfiltered.