Zero Signup ToolsFree browser tools

Developer Tools

YAML Diff Checker

Compare two YAML documents structurally in your browser. Dotted paths for added, removed, and changed entries plus a side-by-side annotated view.

Compare

Two YAML documents, structurally

661 chars
756 chars

Summary

10 differences found.

2 added0 removed8 changed11 equal

Differences

  • Added$.metadata.labels.version

    "v2"

  • Changed$.spec.replicas

    Left

    3

    Right

    5

  • Changed$.spec.template.spec.containers[0].image

    Left

    "ghcr.io/example/web:1.2.0"

    Right

    "ghcr.io/example/web:1.3.0"

  • Changed$.spec.template.spec.containers[0].env[0].value

    Left

    "info"

    Right

    "debug"

  • Changed$.spec.template.spec.containers[0].env[1].value

    Left

    "false"

    Right

    "true"

  • Added$.spec.template.spec.containers[0].env[2]

    {Object(2)}

  • Changed$.spec.template.spec.containers[0].resources.requests.cpu

    Left

    "100m"

    Right

    "200m"

  • Changed$.spec.template.spec.containers[0].resources.requests.memory

    Left

    "128Mi"

    Right

    "256Mi"

  • Changed$.spec.template.spec.containers[0].resources.limits.cpu

    Left

    "500m"

    Right

    "1000m"

  • Changed$.spec.template.spec.containers[0].resources.limits.memory

    Left

    "256Mi"

    Right

    "512Mi"

Side-by-side view

Lines highlighted by status: added, removed, changed. The render is normalized YAML built from the parsed structure, so equivalent inputs with different formatting still align.

Left (original)

apiVersion: apps/v1
kind: Deployment
metadata:
name: web
labels:
app: web
tier: frontend
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: "ghcr.io/example/web:1.2.0"
ports:
- containerPort: 8080
env:
- name: LOG_LEVEL
value: info
- name: FEATURE_X
value: "false"
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi

Right (compared)

apiVersion: apps/v1
kind: Deployment
metadata:
name: web
labels:
app: web
tier: frontend
version: v2
spec:
replicas: 5
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: "ghcr.io/example/web:1.3.0"
ports:
- containerPort: 8080
env:
- name: LOG_LEVEL
value: debug
- name: FEATURE_X
value: "true"
- name: API_BASE_URL
value: "https://api.example.com"
resources:
requests:
cpu: 200m
memory: 256Mi
limits:
cpu: 1000m
memory: 512Mi

What the YAML diff covers

  • Block mappings (key: value) and block sequences (- item) nested by indentation.
  • Flow style mappings ({a: 1}) and flow sequences ([1, 2, 3]).
  • Plain scalars, single-quoted scalars, and double-quoted scalars with escape sequences.
  • Literal (|) and folded (>) block scalars with strip and keep chomping.
  • YAML 1.2 core schema types: null, true, false, integers, floats, infinity and NaN.
  • Anchors (&name) and aliases (*name) are resolved before diffing.
  • Comments (#) and document separators (---) are accepted and ignored for the structural compare.
  • Errors include line and column numbers so you can jump straight to the offending character in your editor.

How to use

  1. Paste the original YAML into the Left input and the YAML you want to compare into the Right input.
  2. Use Load sample to see a Kubernetes Deployment example, or Swap sides to flip which side counts as the original.
  3. Toggle Treat sequences as sets when list order does not matter, or Ignore case and Ignore whitespace to normalize string scalars before comparing.
  4. Read the Differences list to see every added, removed, or changed path; use the All, Added, Removed, and Changed filters to focus on one type at a time.
  5. Use the Side-by-side view to scan normalized YAML for both inputs with diff highlights, then click Copy patch to grab the full diff or Copy path on a single entry.

About this tool

YAML Diff Checker compares two YAML documents structurally and shows every difference between them. Paste an original on the left and a compared version on the right; the tool parses both with a built-in YAML 1.2 core-schema subset parser that handles block mappings, block sequences, flow collections, plain and quoted scalars, literal and folded block scalars, anchors, aliases, comments, and document separators. The two parsed values are walked in parallel and every leaf path is classified as added (only on the right), removed (only on the left), or changed (same path, different scalar or kind). Object keys are matched by name, so reordering keys does not show up as a difference, and sequences are compared positionally by default because order is part of the meaning of a YAML list. A Treat sequences as sets toggle switches to multiplicity-based comparison for cases where you only care whether each element exists on both sides. Two additional options, ignore case and ignore whitespace, normalize string scalars before comparing so cosmetic edits do not surface as content changes. Results are presented in three layers: a summary with counts for added, removed, changed, and equal entries; a filterable list of differences keyed by dotted paths with before and after previews; and a side-by-side annotated render that pretty-prints both sides as normalized YAML with every line tagged by status so you can see structure and content at the same time. Built for Kubernetes manifest review, Helm values comparison, GitHub Actions and GitLab CI pipeline drift detection, Docker Compose file audits, OpenAPI specification migration, Ansible playbook review, application configuration diffs, and any situation where you need to know exactly what differs between two YAML documents without eyeballing them line by line. Parsing and diffing happen entirely in your browser, so the YAML you paste never leaves your device.

Free to use. Works in your browser. No signup, no login.

Related tools

You may also like

All tools
All toolsDeveloper Tools