Sheet2Sheet logo

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

01

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.

02

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.

03

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.