CSV Reconciliation Tool
See What Changed Between
Two CSV Files. Instantly.
Point Sheet2Sheet at two files and get a clear report: what rows are missing, what appeared, and what values changed. No setup, no cloud, no guessing.
Built for weekly exports, migration checks, and feed reconciliation. Not a generic diff tool.
Free during beta. Paid desktop app coming soon.
$ sheet2sheet orders_a.csv orders_b.csv --key id
Summary
Missing from B: 2
New in B: 2
Changed: 3
Unchanged: 3
Changed
1002
price: 499.99 -> 599.99
status: pending -> processing
Missing from B
1005
product: Keyboard
status: pending
Built For
Weekly export reconciliation
Compare this week's export to last week's. See exactly which rows changed, what values shifted, and what disappeared without hunting through a spreadsheet.
Migration verification
Run a reconciliation before and after a data migration. Confirm every row made it across, nothing got corrupted, and no records were silently dropped.
Supplier feed comparison
An external feed arrives. Compare it to your internal data to see what is new, what was removed, and where prices or values no longer match.
The Problem
Two files. Which one is right?
Reconciling data between two exports, versions, or systems by hand takes time and misses things. The bigger the file, the worse it gets.
Manual comparison doesn't scale
Scrolling through a spreadsheet looking for differences works for 20 rows. It does not work for 20,000.
Multiple columns need checking
It is not just whether a row exists. You need to know which specific fields changed and what the old and new values were.
Schema changes go unnoticed
A column gets added or removed between exports. Sheet2Sheet surfaces structural changes alongside row-level diffs so nothing is missed.
Missing rows are hard to spot
When a row disappears between two exports, you need to know it was there and see its full data, not just a count.
Composite keys are common
Most real datasets do not have a single unique ID. Sheet2Sheet matches rows on multiple columns so you get accurate results regardless of the data model.
Sensitive data stays local
Uploading customer or financial data to an online tool is a risk. Sheet2Sheet runs on your machine. Nothing leaves your system.
How It Works
Three steps to a clean reconciliation report
Point at two CSV files
Pass your two files and tell Sheet2Sheet which column is the unique key. Composite keys work too. Pass multiple columns comma-separated.
Sheet2Sheet compares them
Every row is matched by key. Missing rows, new rows, changed values, and structural column differences are all detected in one pass.
Get a clear report
Human-readable text output by default. Each changed row shows exactly which fields differ and what the values were. Switch to JSON for scripting or automation.
Output
Everything you need, nothing you don't
Missing rows
Rows present in file A but not in file B, with their full field values so you know exactly what disappeared and can act on it.
New rows
Rows that appear in file B but were not in file A, with all field values included so you can review what was added.
Changed values
For every changed row, a field-by-field diff showing the column name, the old value, and the new value. No context missing.
Schema changes
Columns added or removed between the two files are reported separately, alongside the list of columns that were actually compared.
Fast, local, and privacy-first.
Sheet2Sheet runs on your machine. No files leave your system. No accounts, no subscriptions, no cloud.
FAQ
Common questions
What file formats does Sheet2Sheet support?
CSV files in v1. Most tools that export data (databases, ERPs, ecommerce platforms, analytics tools) can export CSV. Excel support is on the roadmap. If you need it, mention it when you request access.
Can I use multiple columns as a key?
Yes. Pass comma-separated column names: --key order_id,region. Sheet2Sheet joins the values to create a composite key and uses it to match rows across both files. This works for any number of key columns.
Does my data get sent anywhere?
No. Sheet2Sheet runs entirely on your machine. Your files are read locally and never transmitted anywhere. This makes it safe to use with customer data, financial records, or any sensitive dataset.
What output formats are available?
Human-readable text by default. You get a clean summary followed by changed, missing, and new rows. Add --format json for structured JSON output, which is useful for scripts, CI pipelines, or building on top of the results.
How large can the files be?
Sheet2Sheet is built in Rust and processes files entirely on your local machine without network overhead. It handles hundreds of thousands of rows quickly. If you have a specific file size you need to test, mention it when you request access.
Is there a GUI version?
A desktop app is on the roadmap. The current version is a CLI tool that works on Mac, Linux, and Windows. Get early access to be notified when the desktop app ships and to give input on what matters most to you.
Try Sheet2Sheet on your own files.
Free during beta. Get in touch and we will send you a build.