ContextCleaner: see every entry in the Windows 11 right-click menu, and which app added it — on the Microsoft Store.

Last updated:

Guided workflow variation

Coming soon for Windows. Feature preview.

What is in one fileand missing from the other.

Totals that differ by twelve say something is gone, not which twelve. LedgerPair names every record found in only one of the two files by its key and row number, and points out near-miss keys that look like typos.

Pair both files on their identifier and read two lists: records only in file A and records only in file B, each with its row number and every column.

Coming soon No telemetry Local-first

coming soon for Windows

If this sounds like your week

A count shows a gap, not where it is.

The CRM says 4,812 contacts; the mailing platform says 4,800. Somewhere twelve records fell out during an import, a sync, or a manual cleanup. Sorting both lists and scrolling them in parallel works for a few dozen entries. For thousands, the eye gives out long before the twelfth gap, and any entry that landed elsewhere after sorting makes the two columns drift apart.

Where tooling usually breaks

Typos and repeats hide inside the totals.

Absence is not the whole story. A record keyed as PO-7781 in one system and PO-7718 in the other counts toward both totals while pairing with nothing. A contact imported twice inflates one side, so the gap looks smaller than it is. Lookups return #N/A for the first problem and quietly ignore the second, and neither tells you which line to open.

Where LedgerPair lands

Two lists of leftovers, plus suggestions for the typos.

LedgerPair pairs records by key and puts the leftovers in plain view: only in file A, only in file B, each with its row number. Keys that occur more than once in a file are listed as duplicates. For an unmatched key that nearly matches one on the other side, such as INV-2026-0042 and INV-2026-0O42, it shows a fuzzy candidate beside the row, never counted as a match.

coming soon for Windows

What you get

Feature highlights

Rows paired on the keys you pick

tick one key column or several in each file, with different names allowed, and rows pair wherever they sit, so two exports sorted in different orders still line up.

Changed cells, side by side

every matched row whose values differ is listed with the columns that changed, and the detail pane shows both files’ values with the differing cell highlighted.

Formatting is not a difference

spaces are trimmed, amounts compare as exact decimals, and dates as calendar dates, so 1,250.00 equals 1250 and 2026-03-01 equals 03/01/2026, with a day-first option.

Duplicate and empty keys surfaced

a key that appears more than once in a file is listed with every row number, and rows with an empty key are listed on their own, never matched.

Near-miss keys suggested

an unmatched key spelled almost like one in the other file is shown as a fuzzy candidate in its own column, with a similarity score in the export, and never counted as a match.

An evidence workbook you can keep

a new .xlsx with Summary, Additions, Deletions, Changes, and Duplicates sheets, while the originals are opened read-only and nothing uploads.

Especially when

  • Compare two CSV or Excel exports by a key column instead of building VLOOKUP or XLOOKUP formulas for every column
  • Find the rows that are in one export and missing from the other, plus the keys that appear twice, with row numbers
  • Stop formatting differences such as 1,250.00 against 1250 or two date notations from showing up as false mismatches
  • Keep a reconciliation record as a new Excel workbook, with the original files untouched and nothing uploaded

Who benefits

Real-world scenarios

A contact list after a migration

After moving contacts from an old CRM to a new one, the new system holds fewer records than the old export. Marketing needs the missing contacts by ID so they can be imported again.

With Contact ID as the key, the rows only in the old export are the ones that did not arrive. Export evidence workbook writes them to the Deletions sheet with every column, ready to copy into an import file.

A stock count against the system

A warehouse exports a stock count from its scanners and compares it with the stock list in the inventory system. Some SKUs were scanned but are unknown to the system, and some were never scanned.

The two only-in lists split the problems cleanly: SKUs only in the scan file need setting up, and SKUs only in the system export were not counted. Changed rows show quantities that differ for SKUs found in both files.

A key typed with a letter O

Two invoice exports differ by one record each way, and the key that went missing from one file looks almost identical to the extra key that turned up in the other.

LedgerPair lists INV-2026-0042 as only in file A and INV-2026-0O42 as only in file B, and shows each as the other’s fuzzy candidate. The export records the candidate, its row number, and a similarity score, so the typo can be fixed at the source.

Deep dive

How LedgerPair finds missing, extra, repeated, and near-miss rows

Pairing by key. Every row in each file is identified by its key, from one column or several. Rows whose keys match are paired, whatever their position in the file, and compared column by column. What remains after pairing are the rows that are missing from the other file.

Only in file A, only in file B. The table labels each leftover row with the file it came from, such as Only in contacts-old.csv, and gives its row number as a spreadsheet would show it. The filter shows just the rows only in file A, or just those only in file B. In the export they become the Deletions sheet (only in A) and the Additions sheet (only in B), with every column of the original row.

Keys compared sensibly. Keys are compared without regard to case or extra spaces, so inv-001 matches INV-001. Thousands separators and a trailing .0 are ignored, so 1,001 matches 1001, while leading zeros are kept, so 00123 stays distinct from 123. Dates used as keys are compared as calendar dates.

Duplicates counted, not hidden. A key that appears more than once in a file is listed as a duplicate key with every row number. Duplicates pair with the other file in order of appearance, and any extra occurrence is listed as only in its file and marked duplicate key, so a repeated record explains a gap in the totals.

Empty keys. A row with no key value is listed as only in its file and marked empty key, and it is never paired with anything. The Summary sheet counts them for each file.

Near-miss keys. For each unmatched row, LedgerPair looks for an unmatched key on the other side that is spelled almost the same and shows it as a fuzzy candidate in its own column. With a composite key, all parts but one must be equal before a candidate is suggested, so a shared date never makes unrelated keys look alike. Candidates are suggestions to check, never counted as matches, and the export gives each one’s row number and a similarity score.

The record. The Summary sheet opens the evidence workbook with the row count of each file; the matched, changed, addition, and deletion counts; duplicate keys and empty keys for each file; and the number of fuzzy candidates. The sheets behind it hold the rows themselves, with frozen headers and filters.

Feature preview

Explore the intended workflow

Rows paired on the keys you pick

tick one key column or several in each file, with different names allowed, and rows pair wherever they sit, so two exports sorted in different orders still line up.

Changed cells, side by side

every matched row whose values differ is listed with the columns that changed, and the detail pane shows both files’ values with the differing cell highlighted.

Formatting is not a difference

spaces are trimmed, amounts compare as exact decimals, and dates as calendar dates, so 1,250.00 equals 1250 and 2026-03-01 equals 03/01/2026, with a day-first option.

FAQ

Straight answers—no glossary dump

How do I find rows that are in one file but not the other?

Open the two files in LedgerPair, pick the column that identifies a row in each, and press Compare. Rows only in file A and rows only in file B are listed with their row numbers, and the filter shows either list on its own. Export evidence workbook writes them to the Deletions and Additions sheets with every column.

What is a fuzzy candidate?

A suggestion for an unmatched key: an unmatched key in the other file that is spelled almost the same, such as INV-2026-0042 and INV-2026-0O42. LedgerPair shows it beside the row in its own column, and the export adds the other file’s row number and a similarity score. It is never counted as a match, so your totals stay exact.

How are duplicate keys handled?

Each key that appears more than once in a file is listed as a duplicate key with every row number. The occurrences pair with the other file in order of appearance, and any extra one is listed as only in its file and marked duplicate key. The Duplicates sheet of the export lists the file, key, row, and number of occurrences.

What happens to my original files?

They are opened for reading only and are never written. LedgerPair compares the data it has read and saves its results to a new .xlsx file that you name in the Save dialog. Saving over either source file is refused with the message that originals are never overwritten, and a name that does not end in .xlsx is refused as well. If an export cannot be built, no file is left behind.

Where do my files go, and how do I get LedgerPair?

LedgerPair is coming soon to the Microsoft Store for Windows and is not available to download or purchase yet. Use the email form on its product page to join the waitlist, then confirm your email address. We will send launch updates when there is news. No payment is taken.

LedgerPair is coming soon.

Join the waitlist for launch updates. The app is not available to download or purchase yet. No payment is taken.

Open full product page

Excel is a trademark of Microsoft Corporation. LedgerPair is made by Automata Labs and is not affiliated with or endorsed by Microsoft.