DevTools Hub

Search tools

Search for a developer tool

Kubernetes

Helm Values Diff

Compare two Helm values configurations — each side merged the way Helm actually merges multiple -f files — and see exactly what's different.

Part of the Kubernetes Toolkit
Left (e.g. staging)
Right (e.g. production)
5 changed
  • ingress.enabledfalsetrue
  • ingress.hosts["myapp.staging.example.com"]["myapp.example.com","www.myapp.example.com"]
  • replicaCount13
  • resources.limits.cpu500m2
  • resources.limits.memory256Mi1Gi

What this compares

Add one or more values files to each side — mirroring however many -f flags you'd actually pass to helm install — and each side is merged with Helm's real merge algorithm before comparing: deep merge for maps, full replacement for arrays, a null deletes a key. The diff runs on the computed result each side would actually resolve to, not a naive text or line-by-line comparison of the raw files.

Why arrays diff as a whole value

If ingress.hosts is [a] on one side and [a, b] on the other, this shows the whole array changed — not "item 2 added." That matches how Helm itself treats arrays: one values file replaces another's array entirely rather than merging entries, so diffing them element-by-element would imply a kind of merging that doesn't actually happen.

What this isn't

This doesn't know a chart's own default values.yaml unless you paste it as part of a side's stack, doesn't model --set flags (which always outrank every -f file, regardless of where --set appears on the command line), and doesn't render templates. For understanding one side's merge in detail — which file each value came from, and the YAML gotchas that silently change a value's type — see Helm Values Viewer.

FAQ

What's a realistic way to use this?

Put your chart's shared values.yaml plus your staging override on the left, the same shared file plus your production override on the right — the diff then shows exactly what actually differs between the two environments' computed configuration, not just what the two override files themselves contain.

Is my values data uploaded anywhere?

No — merging and diffing happen entirely in your browser.

Want the mechanics behind the merge?

See Helm Values Explained for why arrays replace instead of merge, how null deletes a key, and the YAML quirks that can make two values that look identical actually differ in type.

Related tools