Compare two lists and find missing or duplicated values.

Paste two lists — emails, IDs, names, codes — or upload two files. Get back what is in list A but not B, what is in B but not A, what appears in both, and what is duplicated.

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

When you have two lists and need to reconcile them

A subscriber list exported from your email tool. A customer list exported from your CRM. A list of IDs from a database and a list of IDs from a report. A list of paid invoices and a list of sent invoices. Two lists that should agree — but do not.

Paste one list per slot (one value per line) or upload files. MessyMatch handles plain lists, CSVs, Excel workbooks and tab-separated data. It finds the differences, including values that are almost the same but not quite.

Common uses

  • Email list deduplication before a campaign
  • Finding IDs that appear in one database table but not another
  • Reconciling two exports of the same report
  • Checking which customers received an invoice vs which paid
  • Finding missing SKUs between two catalog exports
  • Cross-checking two lists of phone numbers
  • Auditing a permissions list against an HR roster
  • Comparing a webinar attendee list with the registered list

How the list comparison works

MessyMatch parses each list in your browser. A 'list' here is just data with one value per row — pasted text, a one-column CSV, a single Excel sheet column or a TXT file. If your input has more than one column, you can either paste it as-is and let the comparison run on every cell, or pick a key column in the settings panel.

The engine normalises each value with the cleaning rules you enabled, indexes both sides into hash maps and then computes four sets: values only in A, values only in B, values present in both, and values repeated inside each list (intra-list duplicates). For values that do not match exactly even after normalisation, the fuzzy pass flags them as almost-matches with the similarity score and reason.

Why pasting beats uploading for ad-hoc lists

Most list comparisons start with two ranges of cells copied out of two different spreadsheets. You do not need to save them as files first — paste directly into each upload card and the tool parses the input. The paste parser handles one-per-line, CSV, TSV and pipe-separated data, with the same delimiter and header detection as the file path. The result is the same.

Cleaning rules built for messy human input

Lists pasted from spreadsheets carry a lot of invisible noise — non-breaking spaces, smart quotes, zero-width characters, trailing tabs from a column copy. The cleaning rules normalise all of that before comparing: trim whitespace, collapse internal spaces, ignore casing, strip accents, remove invisible characters, strip leading zeros from IDs, normalise emails and phone numbers. Originals are preserved in the result — only the normalised form is used for matching.

What the result panel shows

The result is broken into tabs you can export independently: values only in A (missing from B), values only in B (new since last export), values in both (confirmed matches), duplicates inside each list, and almost-matches. Each tab has its own CSV, XLSX and copy-as-TSV export buttons so you can act on any piece without dragging the rest along.

Browser-first by design

The list 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 input from disk or clipboard, runs the comparison locally and hands the result back to the browser. We only record metadata about the operation (row count, file size, format, elapsed time) for abuse limits. See the privacy policy for the full list.

Related tools

Frequently asked questions

Can I paste a list instead of uploading a file?+

Yes. Each upload card accepts pasted data — one value per line, or comma-separated for multiple columns.

What if my lists have different lengths?+

Length differences are expected. The tool reports values found only in one list and values present in both.

Are values uploaded anywhere?+

No. Comparison happens in your browser via a Web Worker. We never see the contents of your lists.

Why are some matches flagged as 'almost'?+

Two values that should be the same but differ slightly — like 'José García' vs 'jose garcia' — are listed as almost-matches with the reason (accent, casing, whitespace, etc.).

Can I ignore casing or accents?+

Yes. Toggle the cleaning rules to ignore casing, accents, punctuation, separators and invisible characters.

How many values can each list have?+

Anonymous users can compare lists up to 2,000 values for free. Larger lists use the pay-as-you-go tiers.