Advanced Free CSV Diff Tool — 10+ Features for Fast Comparison
Find added, deleted, and modified rows. 100% browser-based. With 10+ features, filters, and column operations.
Drop CSV or click
.csv or .txt
Drop CSV or click
.csv or .txt
Your files never leave your browser
Every diff runs 100% client-side — no upload, no server, no storage. Close the tab and it's gone.
What you can do here
Smart row matching
Pick any column as a key — duplicates and mismatches are flagged automatically.
Full / Inner / Left / Right join
Compare exactly the rows you care about, just like a database join.
Numeric tolerance
Ignore tiny float rounding — set a threshold so 100.001 ≈ 100.002.
Advanced filters
Sort, filter by condition, hide columns, export just the rows you need.
Cross-column analysis
Find common, duplicate, or unique values between any two columns.
Git-style merge
Resolve conflicts row-by-row: take old, new, both, or skip.
Compare two CSV files online and see exactly what changed
This CSV diff tool compares an old and a new CSV file and reports added, deleted, and modified rows in seconds — matched by a key column you choose, not by line position. It's built for developers, data analysts, QA engineers, and anyone who reconciles database exports, product catalogs, or payroll files and needs to know precisely what moved, without manually scanning spreadsheets or wrestling with fragile VLOOKUP formulas. Every comparison runs entirely in your browser.
Features
Twelve capabilities, one tool. Tap any feature to see what it actually does.
Key-column matching
Match rows by id, email, or SKU — not line position.
Pick any column as the unique identifier. Reordered or resorted exports are matched correctly instead of producing false differences.
How to compare two CSV files
Five settings determine the entire result. Here's what each one actually does.
Upload your Old CSV and New CSV
Drop in the original file on the left and the updated version on the right. Both files are read with chunked, in-browser parsing, so even exports with hundreds of thousands of rows load without freezing the page — and nothing is ever sent to a server.
Why it matters: parsing in the browser means there’s no upload size limit and no privacy risk — your data stays on your device.
Choose a key column
Pick the column that uniquely identifies each row — id, email, SKU, order number, or any column where every value (or combination of values) is distinct. This is the single most important setting in the whole tool.
Why it matters: the key column is what lets the tool match rows by identity instead of by line position, so a reordered or resorted export never produces a false "deleted + added" pair.
Pick a join mode
Full shows every row from both files. Inner shows only keys present in both. Left keeps every row from the Old file. Right keeps every row from the New file — the same four options a SQL JOIN gives you.
Why it matters: join mode controls which rows even enter the result set, before any cell-level comparison happens — get this wrong and you’ll see rows you didn’t mean to include, or miss ones you did.
Tune comparison rules
Toggle case sensitivity, ignore whitespace, set a numeric tolerance for rounding differences, treat empty/null/placeholder values as equal, or add noisy columns like LastUpdated to the ignore list.
Why it matters: these toggles run before equality is checked, so they decide what counts as "the same value" — skipping them is the #1 reason a diff shows false positives.
Read the result, then merge or export
Review added, deleted, modified, and unchanged rows with cell-level old-vs-new highlighting. Resolve each change in the Merge tab (take old, new, both, or skip), or export the full report as CSV or JSON.
Why it matters: the diff is the analysis, but merge and export are how you act on it — without writing a single formula.
Real examples
Three situations that look identical to a plain text diff, but resolve differently here.
Price list update
Modified — 2 fields changed
Both price and stock changed for the same SKU, so the row is flagged modified with both old and new values shown side by side.
Row reordered, not changed
Unchanged — matched by key, not position
Even if this row moved from line 40 to line 612 in the export, key-based matching on id finds it instantly and reports no change.
Rounding difference within tolerance
Unchanged — within 0.01 tolerance
With numeric tolerance set to 0.01, this 0.0004 difference is treated as the same value instead of a false modification.
Frequently asked questions
Everything you need to know about comparing CSV files with this tool.
Common ways people use this tool
Compare, validate and audit structured datasets without scripts.
Reconcile database exports after migration
Verify ETL changed only expected rows
Track supplier price / stock changes
Audit config CSV before deployment
Compare payroll exports month to month
Check CRM export vs backup
Confirm bulk import dropped no rows
Spot duplicate customer records


