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.