Product Feed Diff

Drop yesterday's export on the left and today's on the right. Rows are matched by SKU, so a different sort order produces no differences — only real changes show up.

🔒 Your data never leaves your browser — both files are compared here.

Why a normal diff is useless on a product feed

Text diff tools compare line by line. Product exports do not keep their line order: the platform sorts differently, a product is deleted and everything below shifts up, a new SKU lands in the middle. The result is a diff claiming every line changed, when nothing did.

This tool matches rows by their keyid, sku, handle, whatever your feed uses — and then compares field by field. Reordering produces zero differences, because nothing actually changed.

Duplicate keys break the whole idea

If the same SKU appears twice in one file, there is no single row to compare against, and any key-based comparison silently picks one. That is worth knowing before you trust the result, so it is reported as a warning rather than swept up.

What the numbers mean

Price and quantity changes come with the delta and the percentage, because "19.99 → 22.49" is easy to skim past and "+12.5%" is not. Stock reaching zero, availability flipping, images being swapped and fields being emptied are called out by name — those are the changes that cost money when they happen by accident.

What this tool checks before it trusts the comparison (4 rules)

DIFF-K01 No key column found

Rows can only be compared if both files share a column that identifies the same product in each. Without one, there is nothing to align by and any "diff" would just be a line-by-line text comparison — which is exactly what this tool exists to avoid.

Fix: Specify the key column explicitly if your feed names it something unusual.

Source: Derived from what row-by-key comparison requires in order to be meaningful. These are properties of the comparison itself, not of any platform specification.

DIFF-K02 Key column missing from one side

The chosen key column exists in one file but not the other, so the rows cannot be aligned at all.

Fix: Check the export settings — one of the two files was probably produced with a different column selection.

Source: Derived from what row-by-key comparison requires in order to be meaningful. These are properties of the comparison itself, not of any platform specification.

DIFF-K03 Duplicate keys

The same key value appears more than once. Only the first occurrence of each is compared, so any row-by-key comparison of this file is unreliable — a change in the second occurrence is invisible.

Fix: De-duplicate the export, or pick a column that really is unique.

Source: Derived from what row-by-key comparison requires in order to be meaningful. These are properties of the comparison itself, not of any platform specification.

DIFF-C01 Different columns

The two files do not carry the same columns. Only the shared ones are compared, so a field that exists on one side alone is neither reported as changed nor as unchanged — it is simply out of scope.

Fix: Re-export both files with the same column selection if you need full coverage.

Source: Derived from what row-by-key comparison requires in order to be meaningful. These are properties of the comparison itself, not of any platform specification.

These are properties of the comparison itself rather than of any platform specification. A diff that aligns rows by key is only meaningful if a key exists, is present on both sides, and is actually unique — so those conditions are checked and reported rather than assumed.