Reconcile two lists
Paste or open two lists that should agree, such as your invoices and a bank statement, pick the column that names each record in each list, and see which amounts differ, which rows are missing on either side and which rows could not be matched. Amounts are compared exactly, and everything runs in your browser.
Reconcile Sheets
or drop a file here. It stays on this device.
- Runs on your deviceNo upload. Your text stays in your browser.
- Free, no accountNo sign-up, nothing added to your data. Limits: files up to 32 MB; XLSX up to 1,000 columns, 200,000 rows and 1,000,000 stored cells, within 2,000,000 table positions.
- FormatsTwo tables from CSV, TSV or XLSX saved cell values in; a CSV reconciliation report out
- Works onCurrent Chrome, Edge, Firefox and Safari, desktop and mobile.
How it works
- Paste table A and table B, or open one or two .csv, .tsv or .txt files (the first fills A, the second B; if one of the two cannot be read, its table is left empty and the list says why).
- Choose the key column of each table, and the amount columns if the amounts should agree; set a tolerance and how keys are compared.
- Press Reconcile, review the differences, missing rows and suggested matches, then download the full report or the exceptions.
Questions
How are rows matched?
By the key you choose for each table, such as Invoice in A and Reference in B: the names may differ, and a second column can join the key when one is not unique (a date and a reference, for example). Letter case is ignored unless you untick it; spaces and punctuation (INV-7 and INV7) and leading zeros (007 and 7) can be ignored too. A row whose key is empty, or has an empty part, is never matched with anything: it is listed on its own, so records without a number are never merged.
How are amounts compared?
Exactly, as decimals: 0.1 plus 0.2 equals 0.3, with no rounding errors. Thousands separators and a decimal comma (1.234,50) are recognised for each table, brackets and a trailing minus mean a negative amount, and a second column can be subtracted: a table with Credit and Debit columns (or Deposit and Withdrawal, Paid in and Paid out, 贷方 and 借方) is read as credit minus debit, money in counting as plus as on a bank statement, until you choose other columns. If table B shows the same money with the opposite sign, tick that option. Without a tolerance the amounts must be equal; with one they may differ by up to an amount, or by a percentage of the larger amount. An empty amount means the key cannot be compared, unless you choose to count it as zero.
What happens when a key appears more than once?
Its rows are kept together, their amounts are added up on each side and the totals are compared, so two part-payments can settle one invoice. No row is dropped or overwritten: the report lists every row number, and the notes say how many keys repeat.
How are currencies handled?
A currency is read from a currency column you choose, or from the amount itself: a code such as USD 10 or 10 SGD, or a sign that names one currency such as €, £, S$ or US$. Amounts in different currencies are never treated as equal, and no exchange rate is used. A plain $, ¥ or kr names no currency, because several currencies use it.
What are the possible matches?
Rows left over on both sides that look like the same record: keys that differ only in case, spaces, punctuation or leading zeros, or by one typed character (by two when both keys have eight or more letters and digits, spaces and punctuation aside; keys of fewer than four are not compared this way), with the same amount when amounts are compared; or the only leftover rows on both sides with a given amount. They are suggestions and never count as matched unless you tick Accept. Changing a table or an option clears your choices.
What is in the report?
One line per key, per accepted match and per row without a key, with the columns status, key, rows in A, rows in B, amount A, amount B, difference (B - A), currency A, currency B and note. Row numbers count as a spreadsheet does, with the header as row 1. Amounts are written with a dot and no thousands separators. A cell that starts with =, +, - or @ and is not a number gets an apostrophe in front, so a spreadsheet shows it as text instead of running it as a formula. The file is UTF-8 with a byte order mark, so Excel shows accented letters correctly. The exceptions download leaves out the matched keys.
Which files work, and what are the limits?
CSV or TSV text in UTF-8, up to 32 MB per table; comma, semicolon, tab and pipe are detected for each table. Excel .xlsx workbooks are read directly: choose the worksheet when asked. Saved formula results are used; formulas are never run. Recalculate and save in Excel first if a result is missing. The page shows up to 500 lines per section, 500 suggestions and 2,000 matched keys; the report always has everything. Everything runs in your browser, and your tables are not saved between visits.
Can dates or other columns be compared too?
Yes: choose them under Also compare, up to two columns, for example the invoice date in A and the value date in B. A key found in both tables whose values differ in one of them is not counted as matched: it is listed under Details that differ, with both values, and goes into the exceptions. Dates are compared as days, so 2026-09-01, 2026/09/01 and 01/09/2026 are the same day (a slashed date is read day first unless its column shows month first, and the notes say which); numbers are compared as numbers and other text without the spaces around it, ignoring letter case when the keys ignore it. A key with several rows compares the lists of values in any order. Nothing is compared unless you choose it: a bank's value date often differs from the ledger's by a day or two.
Can I open an Excel workbook?
Yes: choose an .xlsx file and select its worksheet if it has more than one. The table is filled with saved cell values; number cells are read as Excel shows them, to 15 significant digits, so a stored -85.40000000000001 is -85.4, and text cells exactly as typed. Formula results are read from the last saved calculation; formulas are never executed. Common date formats become ISO dates and simple zero-padded identifiers keep their zeros. Charts, macros and formatting are not imported. A formula without a saved result or a cell containing a spreadsheet error is reported before import. Old .xls, encrypted files and .xlsm are not accepted; save as .xlsx or CSV first.
Is my text uploaded?
No. The page loads a small script into your browser and every operation runs on your device. You can check this yourself in the browser's network panel: after the page has loaded there are no upload requests. Closing the tab discards the text.
Do I need an account or to pay?
No. These basic tools are free and add nothing to your data. The only limits are the tool's own: files up to 32 MB; XLSX up to 1,000 columns, 200,000 rows and 1,000,000 stored cells, within 2,000,000 table positions. Within them, the practical limit is your device's memory.
What does this page keep in my browser?
Nothing you open or type. While the tab is open, the tool pages keep a short list of the steps taken in it, in the tab's session storage: the step (page opened, started, succeeded, first success, used again or failed), the tool's name, the time, how many files were used and, for a failure, an error code; never a file name, the contents of a file or your text. It holds at most the latest 200 steps, and the browser deletes it when the tab closes. The page never sends it. Where a Report a problem button is shown, you can attach the last 20 steps to your report; nothing is attached unless you tick that box. In local storage the page keeps only choices you made: a Light or Dark theme until you choose System again, the language you picked with the EN / 中文 switch if it differs from your browser's language, and this tool in your recently used list if you switched that list on at the tools page.
Questions or problems
Found a problem or missing feature? Tell us. Please describe the steps; do not send confidential data.