Skip to content

Everything runs in your browser. We never see your files. How we prove it →

Data Diff Tools

Six tools that parse your data before they compare it, so reordering and reformatting stop masquerading as change.

About data diff tools

Structured data has a property plain text does not: two files can differ in almost every byte and still mean precisely the same thing. Serialise a JSON object with a different library and the keys come out in a new order. Re-save a CSV from another spreadsheet program and the quoting rules shift. Reindent a manifest and nothing about the deployment it describes has moved. A character-level comparison reports all of that faithfully, which is how a two-field edit ends up looking like a rewrite.

The tools here parse first. Each side is read into a real structure — an object graph, an element tree, a table of records — and the two structures are walked against one another. What comes back is a list of changes addressed by where they live: a key path, an element and its attributes, a row matched on its key column, a cell with an A1 address. Ordering the format declares meaningless is normalised away; ordering that carries meaning, such as position in an array, is preserved and reported.

They also degrade instead of failing. An unbalanced brace or an unclosed tag produces no error screen: the page names the side that would not parse and drops to a text comparison — frequently what you wanted anyway.

Picking the right data tool

Start from the file extension. JSON Diff handles API payloads, fixtures and config blobs. YAML Diff is the same structural engine pointed at manifests and pipeline definitions, with anchors and aliases resolved before matching. XML Diff covers feeds, sitemaps and enterprise message formats where attribute order is noise. CSV Compare is for flat exports whose rows should be matched by identity rather than by position, and Excel Compare for workbooks with several sheets and formulas sitting behind the displayed values. ENV File Diff is the specialist of the group: dotenv files compared variable by variable, with masking for when the result ends up on a shared screen.

Two judgement calls recur. When a JSON file is really a flat table of records, the row matching in CSV Compare reads better than a list of paths. And when structure is beside the point — you want the literal characters that moved — Text Compare is one click away. SQL Diff and TOML Diff are planned; there are no pages for them yet.

Why structured data never leaves the tab

This is the category where identifiable material concentrates: a records export with names and addresses in the rows, a captured webhook body still carrying a bearer token, a valuation model nobody outside the deal team should read, a dotenv file holding live credentials. Parsing runs in a Web Worker inside your browser and the comparison runs beside it; neither has an endpoint to post to. Workbooks and CSVs you open are read with the File API, so choosing a file is not uploading it. Open your browser's network tab while you use these tools — you'll see no request carries your content. Check it for yourself.

Frequently asked questions

Why does my JSON report no differences when the two files clearly are not identical?

Because the specification says an object is an unordered set of pairs, so key sequence carries no meaning and is normalised before matching. Indentation and newline style go the same way. If the files differ only in those respects, they are the same document and the honest answer is that nothing changed. Drop into a text comparison to see the raw characters.

Can I compare a CSV against a sheet in a workbook?

Not across tools in one step — each parser expects its own format on both sides. Export the workbook sheet to CSV and run both through CSV Compare, or save the CSV as .xlsx and use Excel Compare. The conversion happens in your spreadsheet program, and the comparison still happens here in your browser.

Are spreadsheet formulas compared, or only the numbers they produce?

Both, and the distinction matters. Excel Compare reads the stored formula and the cached value for every cell, so a hard-coded number pasted over a SUM is caught even when the displayed figure is unchanged — the classic way a model quietly stops recalculating.

What happens with a very large export?

Parsing and diffing run off the main thread, so the page keeps responding while a big file is worked through. Depth costs more than raw size: a recursive structure is heavier to walk than a flat table of equal weight. Past roughly a megabyte of combined input you trigger the comparison yourself.