Compare CSV files online.

Drop two CSV files to instantly see which rows are missing, duplicated, changed or almost-matching. No formulas, no scripts. Runs in your browser.

File A
Drop file A here
CSV, TSV, TXT or XLSX
File B
Drop file B here
CSV, TSV, TXT or XLSX

When do you need to compare two CSV files?

Two CSVs that should match almost never do. An export ran twice and one row was duplicated. A sync job dropped a handful of records and nobody noticed. One file came out of a SQL query and the other came out of a spreadsheet that someone hand-edited over the weekend. The job is to figure out the actual diff between the two and act on it. Without writing a script and without spending an afternoon in Excel with VLOOKUP and conditional formatting.

  • Reconciling two exports of the same dataset from different systems
  • Checking that a data migration moved every row
  • Finding orders present in the warehouse but missing from the CRM
  • Comparing a vendor delivery file against an internal order list
  • Sanity-checking a daily sync. What changed since yesterday
  • Pre-import dedupe and diff before pushing into a CRM or ERP

Why comparing CSV files is harder than it looks

Two CSVs that should match often do not. Because one has trailing spaces, the other has accents stripped, a third has rows in a different order, or there are duplicated keys from an export that ran twice. A naive diff (sort + diff in the shell) will tell you almost every row is different, because byte-level comparison treats 'José', 'JOSE ' and 'jose' as three different values. The job is to compare meaning, not bytes.

MessyMatch normalises values before comparing: trim spaces, collapse internal whitespace, ignore accents, collapse casing, strip punctuation, remove invisible characters. The original strings are never modified. The normalised form is used only for matching, so the result panel still shows you exactly what was in your file.

How the CSV comparison works

Drop file A and file B. MessyMatch parses both in your browser, auto-detects the delimiter (comma, semicolon, tab, pipe) and the header row even when the data contains dates, phone numbers or accented values. You pick a comparison mode (full-row or key-column), choose the cleaning rules you want and click compare. The engine indexes both files into a hash map keyed by the normalised values and produces an indexed diff in seconds. Even for files that Excel cannot open.

The result is broken down into seven sections: rows only in A, rows only in B, rows in both, duplicates inside A, duplicates inside B, changed rows (same key, different values elsewhere) and almost-matches (rows that look similar after fuzzy scoring). Each section has its own export button, CSV, XLSX or copy as TSV. So you can act on any piece independently.

Full-row vs key-column comparison

Full-row treats every cell as part of the row identity. It is the right mode when the two files should be byte-identical row by row after normalisation. Key-column matches rows by one or more columns you pick. Customer_id, email, order_number, SKU. Which is the right mode when the two files share an identifier but list the other columns in a different order or with different formatting. The engine builds a hash index on the key column so the comparison stays fast even at hundreds of thousands of rows.

What you get in the result panel

  • Rows only in file A. Missing from B
  • Rows only in file B. New since last export
  • Rows in both files. Confirmed matches
  • Duplicate rows within each file (intra-file dedupe)
  • Almost-matches: values that look the same but differ slightly
  • Changed rows: same key, different values in other columns

Browser-first by design

CSV contents are processed inside your browser via a Web Worker and are not transmitted to our servers. Our servers do not have an endpoint that ingests file contents. The Web Worker reads the file from disk, runs the comparison locally and hands the result back to the browser for display and export. We only record metadata about the operation (row count, file size, format, elapsed time) for abuse limits and pricing tiers. See the privacy policy for the full list of what we collect and what we do not.

Related tools

Frequently asked questions

Are my CSV files uploaded anywhere?+

No. Parsing and comparison happen in your browser via a Web Worker. Our servers do not receive the contents of your files during normal browser-side processing.

Can I compare CSVs with different column orders?+

Yes. Use key-column comparison to match rows by a specific column, regardless of column order.

What is an almost-match?+

Two rows that share the same key but differ slightly. For example, accent or casing differences in a name. Almost-matches are flagged separately from exact matches and include the reason.

Does it work for large CSV files?+

Yes, up to the row and file-size caps on your plan. Anonymous users can compare files up to 2,000 rows for free; larger files use the pay-as-you-go tiers.

Can I compare files with different headers?+

Yes. You can map columns between the two files explicitly when you choose key-column or multi-key mode.

Will it find duplicates inside each file?+

Yes. Repeated keys within file A and within file B are reported separately from the cross-file comparison.