Configuration review

Config diffFind changes beneath the formatting

Compare two configurations of the same format; choose what the review report may reveal.

Config diff

Before

After

Both inputs are processed in this browser; no content is uploaded.

Inputs remain visible. Paths remain visible unless hidden. Hiding paths also masks whole object/array values, even when value masking is off.

Key order and comments are ignored. Arrays use positions. TOML integers and floats differ; floats use binary64, including rounding and underflow to zero.

Each side: 500,000 characters / 2 MB UTF-8, 50,000 nodes, depth 100. Up to 5,000 changes; 4 million report characters; 5-second worker timeout.

Enter configurations or run a comparison.

Changes

Config diff is useful when a deployment review gets buried in reordered settings. A moved TOML key remains the same setting, while a missing INI key or a changed Properties value deserves its own entry.

Use TOML diff, INI diff or compare properties files in one workbench. To compare config files reliably, select their actual format: this page never guesses a dialect or converts one side into another format.

Why use Config diff

Review meaning, then choose what to share

Let reordered keys disappear

Config diff matches table keys rather than lines. Reordering a service block creates no false addition, while a changed value or removed setting remains in the report. Arrays keep their ordered meaning.

Two differently ordered configuration trees align matching leaves while a single changed leaf is highlighted.

Make report visibility explicit

All result values are masked by default. The same report supplies the screen, clipboard and download, so a masked preview cannot silently produce an unmasked export. Hide paths too when names contain confidential information.

Two visible source trees feed a comparison whose result values are covered before the report is copied or downloaded.

Three decisions before exporting

The settings that change how a review should be read

01

Choose the real dialect

Both sides use one selected format. A dotted Properties key is one literal name; an INI section is a container. Changing the selector does not rewrite input, so use Example to review a valid pair for that format.

02

Check direction and visibility

Before → After determines additions and removals. Swap first opens a replacement preview. Value masking changes only the report, not comparison equality; hiding paths also hides container payloads that could expose child names.

03

Export only the latest result

Automatic comparison waits 350 ms after edits. Turn it off to run Compare or Ctrl/Cmd+Enter. Editing immediately disables stale exports; replacement actions offer one Undo that restores inputs and the corresponding report.

What a structural review preserves

Distinct states stay distinct

Key matching with array positions

Tables match exact, case-sensitive keys without considering their order. Arrays match by index: insertion can change later positions. Missing keys, empty strings, empty tables and empty arrays remain different states.

Exact integer identity

TOML signed 64-bit integers retain every digit, including values beyond JavaScript’s safe integer range. Integer 1 and float 1.0 have different types; negative and positive floating zero are also different.

A review report with typed values

Changes include added, removed or changed status and the before/after types. Unmasked source representations are strings in JSON, keeping integer digits intact. An entire added or removed container counts as one entry.

Consistent masking at each exit

Masking replaces complete values, not just guessed password fields. Hiding paths removes their names from the report and forces container values to stay masked. Scalar values still follow the value switch.

Dialect and report boundaries

Read these before treating two files as equivalent

A declared TOML subset
Dates and times, NaN, infinity and integers outside signed 64-bit range are rejected. Finite floats are compared after binary64 parsing: decimal spellings can round to the same value, and very small nonzero values can underflow to zero. This is not arbitrary-precision decimal comparison.
INI strings without application inheritance
INI requires explicit sections and unique case-sensitive keys. DEFAULT inheritance, interpolation, indented data lines and multiline values are unsupported. Surrounding key/value whitespace is trimmed; inline # and ; stay literal. Values such as 0080 and false remain strings.
Properties Reader semantics
Properties uses UTF-8 Reader input, Java escapes and continuation lines. Decoded duplicate keys are errors, dotted names stay flat, and Spring placeholders remain literal. ISO-8859-1 InputStream decoding and application-specific substitution are not performed.
Masking applies to results
Original editor text and replacement previews remain visible. Report paths are visible unless hidden. Hiding paths also masks entire object/array values to prevent child-key leakage. Masking is neither encryption nor access control; explicitly revealed scalar values may still contain private text.
Comparison does not merge
Comments, key order and original numeric spelling are not reviewed. Arrays have no move detection, identity-key matching or set mode. The JSON report is not JSON Patch and cannot be applied as a configuration. ENV and YAML belong to their dedicated tools when available.
Bounded work with complete failure
Each input allows 500,000 characters, 2 MB UTF-8, 50,000 nodes and depth 100. Limits are 5,000 change entries and 4 million report characters, with a 5-second worker timeout. A parse or limit failure disables all export; the page does not emit a partial comparison.

Config diff questions

Practical review situations

How can I find a setting that disappeared?

A key present only on Before is removed; a key present only on After is added. Config diff preserves an empty value as an existing setting, so an empty string is not mistaken for a missing key. Swapping inputs reverses the direction.

Does moving a key produce a change?

No. Table keys are matched by exact name regardless of order. An array item is matched by position, however, so moving an array element can produce several changed entries. The report does not guess which item moved.

Can the comparison distinguish TOML value types?

Yes within the documented subset: strings, booleans, integers, finite floats, arrays and tables retain their types. Integer 1 differs from float 1.0. Dates and non-finite floats produce an error rather than an invented equivalent.

Can comments be excluded from the comparison?

Comments are always excluded because the comparison uses parsed structures. Changes only to comments or key order produce no entries. It is unsuitable for reviewing comment edits or the exact formatting of a configuration file.

Can two files be opened instead of pasted?

Choose one local UTF-8 file in each input panel. Each replacement is previewed before Apply, and Undo restores the prior inputs and report. File extension does not select the format automatically; choose the matching format yourself.

Have a different configuration case?

Start a Config diff

Use Config diff to identify structural changes, inspect the supported types and choose what your report reveals before sharing it.

Review the report’s visibility before sharing it.