Kubernetes

Helm Values DiffSee the effect of each override

One default mapping, two independent overrides, and a review of their effective values.

Helm Values Diff

Old overrides

Changes

All three inputs are processed in this browser. No values are uploaded.

Output values are masked by default. Paths and keys remain visible; editors and replacement previews retain original input. Masked YAML is a review artifact.

Helm 3.19.0 · single chart · defaults → each override independently. Maps merge, lists replace; comparison lists match by index.

Per input: 200,000 characters, 20,000 nodes, depth 60. Report: 5,000 changes / 4 million characters. Worker: 5 seconds.

Enter configurations or run a comparison.

Helm Values Diff helps when removing a line from values.yaml does not remove the setting from the application. A value may return from chart defaults. Compare the two effective configurations, or switch to raw overrides when you need to review what the author actually declared.

Why use Helm Values Diff

Expose the return of a default

Helm Values Diff applies the same defaults separately to each version. Removing replicas from the new override restores the default count; it does not inherit the old override. This makes a values.yaml comparison useful before discussing a rollout.

A shared configuration tree feeds two separate override branches; removing a leaf reveals its inherited default.

Confirm a secret changed without showing its value

The comparison runs on actual values before masking. Two different passwords still produce a changed entry, even though their displayed placeholders match. Nested values in new objects and arrays are masked as well.

Two different colored value chips pass through a mask and become covered chips while their change marker remains visible.

Choose what your review should prove

01

Keep the baseline separate

The left selector keeps three independent buffers. Put chart defaults in Defaults, then the two complete override mappings in Old and New. A blank buffer means an empty mapping. The new version is never layered on top of the old one.

02

Check declaration and effect

Effective values is the default comparison. Raw overrides reveals declarations that may resolve to the same final value. The two merged views always show effective values, regardless of the comparison mode. Arrays replace during merge and compare by index afterward.

03

Export a current, intentional view

Automatic comparison waits 350 ms after editing. Turn it off to use Compare or Ctrl/Cmd+Enter. An input or option change disables stale exports. Copy and download follow the selected result view; replacement actions offer a preview and one Undo.

Inspect changes with their context

A bounded Helm values merge

Mappings combine recursively; override scalars and whole lists take precedence. An empty mapping preserves default children, while an empty list replaces a populated default list. False, zero and an empty string remain real values.

Paths and value types

Changes carry JSON Pointer paths, added/removed/changed counts, and before/after types. A missing value differs from null; a quoted number differs from a number. Escape slash as ~1 and tilde as ~0 when reading paths.

Two comparison questions

Structural comparison ignores comments and mapping order. It can compare the submitted overrides or their merged outcomes. List order remains meaningful, and a new list element can shift several index-based differences.

Review files with explicit scope

The JSON report includes the model, comparison mode, masking flag, all differences and both effective YAML documents. The YAML views export only the selected version. The first 50 changes are shown, with more available without truncating export.

Where this preview stops

Single chart, fixed coalescing model
The merge follows Helm 3.19.0 for one chart without dependencies. It does not render Go templates, run tpl or lookup, read a release, connect to Kubernetes, validate a schema, or simulate subcharts, globals, import-values or dependency conditions.
An explicit input dialect
Each buffer accepts one YAML 1.2 core mapping with string keys. Duplicate or complex keys, directives, explicit tags, anchors, aliases and << keys are rejected. Quote ambiguous YAML 1.1 words such as yes or on. Use ordinary JSON decimal spelling, finite numbers and safe integers; underflow is rejected. Decimals use binary64 precision.
Null is contextual
An override null removes a matching default key during recursive coalescing. A null under a newly introduced key or mapping, and a null inside a replacement list, stays null. Missing override keys inherit defaults. This is not a general-purpose operation that deletes every empty value.
A masked report is not deployable configuration
Masking replaces every non-null scalar, including numbers and booleans, with a typed marker. Paths, keys, structure and null remain visible. This is not complete anonymization. Original editors and replacement previews remain unmasked; disable masking only when the current report should contain actual values.
Finite inputs and no release emulation
Each buffer allows 200,000 characters, 20,000 nodes, depth 60 and one million accumulated path characters. Reports allow 5,000 changes and four million characters; the worker stops after five seconds. Exceeding a limit blocks the whole export. There is no multi-file -f ordering, --set parser, reuse/reset-values simulation, URL import or source-format preservation.

Helm Values Diff questions

How can I see changes before helm upgrade?

Use this page for the values layer, then review rendered manifests with helm diff or your release workflow. An unchanged values report does not prove that templates, chart versions, cluster capabilities or the resulting resources are unchanged.

Which values win when a defaults file and an environment file overlap?

The environment override wins over the supplied defaults. Nested mappings retain default children not mentioned in the override. This page accepts one override per version; combine multiple files in your intended order before pasting them here.

Why are lists not merged item by item?

Helm replaces the complete list at that key. It does not append items or match objects by name. The diff then compares the resulting lists by index, which is a review representation rather than a list-merging algorithm.

How do I unset a value from chart defaults?

Set that key to null in the override. Omitting it instead restores the default. A null for a key absent from the default mapping is retained, so an added null and a deleted default key are different outcomes.

Can I tell whether a secret changed without exposing it?

Yes. Leave masking enabled: the report retains the change and original type while replacing scalar contents. It also masks non-secret values. Inspect key names and paths before sharing, because those remain readable.

Have a values review case to report?

Review both configurations

Use Helm Values Diff to separate an override edit from its effective result, then choose the report your reviewer needs.