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.

Compare two CSV filesby the key, not by line number.

A plain text diff matches line 40 with line 40, so one inserted record makes everything after it look different. LedgerPair reads both CSV files as tables, pairs records on the key you pick, and reports the cells that changed.

Open both CSV files, keep or change the suggested key, press Compare, and every changed cell, unmatched record, and repeated key is listed with its row number.

Coming soon No telemetry Local-first

coming soon for Windows

If this sounds like your week

Text diff tools compare lines, not records.

Point an ordinary diff utility at two exports and it walks them top to bottom. If the second system sorted by date while the first sorted by customer, nearly everything is flagged. If one record was inserted near the start, each subsequent line shifts and the report fills with noise. The utility has no idea which field identifies a record, so it cannot say that order 5521 simply moved.

Where tooling usually breaks

Encodings and separators make it worse.

European systems write semicolons and decimal commas; older accounting packages write Windows-1252; some tools emit UTF-16. Open one of those in the wrong program and accented names turn into garbage characters, quoted addresses spill into the neighboring field, and a diff reports damage that was never in the data. Sorting beforehand does nothing for a quoted address that wraps across two physical lines.

Where LedgerPair lands

Read each file as a table, then pair records.

LedgerPair honors a byte-order mark, reads strict UTF-8 otherwise, and falls back to Windows-1252. It detects commas, semicolons, tabs, and pipes and keeps multi-line quoted fields intact. Each slot shows the file name, record count, and column count. Tick the identifying column in each export and sequence stops mattering: records pair up by key wherever they sit.

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

Two systems, two sort orders

The online store exports orders sorted by date; the warehouse system exports shipments sorted by order number. Both files have an Order column, and the question is which orders never shipped and which shipped with a different quantity.

LedgerPair preselects Order as the key because both files share it and its values are unique. Sort order does not matter: rows only in the orders file are the unshipped ones, and changed rows show the quantity from each file side by side.

A semicolon export with decimal commas

A supplier sends its price list as a semicolon-separated CSV with a byte-order mark and prices written like 1.234,50, and it has to be checked against the comma-separated file the purchasing system exported last quarter.

LedgerPair splits the columns on semicolons, keeps the umlauts in product names intact, and reads 1.234,50 and 1234.50 as the same amount, so only prices that moved show up as changed, with both values in the detail pane.

A record that appears twice

A CRM export of customer accounts is compared with the billing system’s export, and the totals are off by one record even though every customer seems to be present in both files.

The Duplicate key row shows that account C-1042 appears two times in the CRM file, with both row numbers. The second occurrence is also listed as only in that file and marked duplicate key, which accounts for the extra record.

Deep dive

How LedgerPair reads and compares two CSV files

Encoding first. A byte-order mark identifies UTF-8, UTF-16, or UTF-32. Without one, LedgerPair reads strict UTF-8 and falls back to Windows-1252, the code page older Windows accounting software writes, so names like Müller and Café come through as written. A file that is not text at all, such as an image renamed to .csv, is refused with a message that names it.

Delimiters and quoting. Commas, semicolons, tabs, and pipes are detected from the file. Quoted fields follow RFC 4180, so an address with a comma or a line break inside quotes stays in one cell. Blank lines are skipped, and a record with too many or too few fields is padded or trimmed with a warning that names the file and the row, recorded in the Notes on the Summary sheet.

Row numbers you can find. The header is row 1 and each record carries the row number a spreadsheet shows for it, so you can go straight to the same record when you open the file in Excel. The table shows the row in file A and the row in file B for every difference.

Keys. Tick one or several key columns in each file. The names can differ, such as Order in one export and Order No in the other, as long as the count matches. Keys are compared without regard to case, thousands separators and a trailing .0 are ignored, and leading zeros are kept, so 00123 and 123 stay distinct identifiers.

Values. Every column with the same heading in both files is compared cell by cell, and headings match regardless of case and extra spaces. Leading, trailing, and repeated spaces are ignored, amounts compare as exact decimals whatever their separators or currency symbol, and dates compare as calendar dates whatever their notation. A value such as 007 is kept as text, so it stays distinct from 7.

What you see. The table lists each difference with its kind, key, row in A, row in B, and a detail such as 1 cell differs: Price. Select a row and the pane below shows every compared column from both files, with the changed cell highlighted. The filter narrows the list to changed rows, rows only in file A or file B, or duplicate keys.

What you keep. Export evidence workbook saves a new .xlsx with Summary, Additions, Deletions, Changes, and Duplicates sheets. Each changed cell gets its own row on the Changes sheet, with the raw value from each file and the normalized form that was compared, so anyone can see why a cell was flagged.

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 compare two CSV files and find the differences?

Open the first file with Open file A and the second with Open file B. LedgerPair preselects a key column the two files share when one looks like an identifier, such as Invoice or Order; change it under Key columns if needed. Press Compare. Changed cells, rows only in one file, and duplicate keys are listed with row numbers, ready to export to a new .xlsx file.

How does LedgerPair handle CSV files sorted in different orders?

Rows are paired by key, so each file can be sorted any way at all. A record at row 12 in one export and row 9,000 in the other is still matched, and the table shows both row numbers. Duplicate keys within a file pair up in order of appearance, and any extra occurrence is listed on its own and marked duplicate key.

Which CSV encodings and delimiters does it read?

UTF-8 with or without a byte-order mark, UTF-16, and Windows-1252, with commas, semicolons, tabs, or pipes as separators, detected from the file. Quoted fields that contain commas or line breaks stay in one cell, and accented characters such as ü and é are kept. A file that is not text, such as an image renamed to .csv, is refused with a message naming it.

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.