Zero Signup ToolsFree browser tools

Developer Tools

YAML Merger

Merge two YAML files in your browser. Deep or shallow, choose how sequences combine, control conflicts, sort keys, copy the result.

Merge

Two YAML files into one

Conflict policy
Sequence strategy
Null handling
403 chars
345 chars

Merged result

14 merged, 3 base-only, 1 overlay-only, 7 overrides, 2 sequence merges

image:
  repository: nginx
  tag: "1.27.3"
  pullPolicy: Always
replicaCount: 6
service:
  type: ClusterIP
  port: 443
resources:
  limits:
    cpu: "1"
    memory: "512Mi"
  requests:
    cpu: "100m"
    memory: "64Mi"
ingress:
  enabled: true
  hosts:
  - host: app.example.com
    paths:
    - /
    - /api
  className: nginx
env:
- name: LOG_LEVEL
  value: warn
- name: FEATURE_FLAG_X
  value: enabled

How to use

  1. Paste the base YAML on the left and the overlay YAML on the right. Click Load sample for a worked Helm values example you can edit.
  2. Turn Deep merge on to combine nested mappings field by field, or off for a top-level shallow merge that replaces entire child mappings.
  3. Pick the conflict policy: Overlay wins for standard overrides, Base wins for defaults, or Show conflicts to surface every disagreement.
  4. Pick the sequence strategy: Replace, Concat, Union with dedupe, Merge by index, or Keep base, depending on how the two lists should combine.
  5. Choose the null policy: null overwrites lets you erase a value with an explicit null on the overlay, null ignored protects defaults from accidental nulls.
  6. Toggle Sort keys alphabetically for a canonical key order, pick a 2 or 4 space indent, then Copy YAML or click Use as new base to chain another overlay on top.

About this tool

YAML Merger combines two YAML inputs (the Base, your defaults, and the Overlay, your environment override) into a single merged YAML document with explicit, predictable rules. Deep merge recurses into nested mappings so Helm values files, Kubernetes manifests, Docker Compose files, Ansible group_vars and host_vars, GitHub Actions and GitLab CI workflows, and OpenAPI specs combine field by field; shallow merge replaces the entire child mapping whenever the key exists on both sides. The conflict policy controls what happens when both sides hold a scalar at the same path: Overlay wins is the default and matches kustomize patches, docker-compose.override.yml, Helm values overrides, and Ansible host_vars precedence; Base wins keeps the default value and treats the overlay as a fallback; Show conflicts merges with overlay-wins and lists every disagreeing path so you can resolve them by hand. Sequence strategy decides how two YAML lists combine at the same key: Replace and Keep base treat sequences as opaque values, Concat appends one to the other, Union concatenates and drops duplicates using a canonical representation so {a: 1, b: 2} and {b: 2, a: 1} are recognised as the same item, and Merge by index walks the two sequences position by position and merges each pair using the same rules. The null policy controls whether a null on the overlay erases the base value (the typical config-override behavior) or is treated as a missing slot so a sparse overlay never clobbers a real default. Sort keys alphabetically produces a canonical key order across the whole tree, which is ideal when the merged YAML is going into a snapshot test, a Git commit, or a side-by-side diff against a base file. The output supports 2 or 4 space indents, and a Use as new base button lets you chain a third, fourth, or fifth YAML file on top of the running result so multi-file overlays stay deterministic. Parsing and merging both run in your browser via a hand-rolled YAML 1.2 core-schema subset parser, so values, secrets, and any data you paste here stay on your device. Anchors and aliases are resolved on parse. Comments are not preserved on emit; the merged output is a fresh, normalized YAML document.

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

Related tools

You may also like

All tools
All toolsDeveloper Tools