Compare two CSV lists — find what changed
Paste list A and list B, choose phone, email or full-row matching, and get the rows that are only in one list.
🔒 100% client-side · zero server upload
What was removed
Malaysian rules & edge cases
How matching works. Each list is de-duplicated first, then rows are matched by a key. The table below covers the Malaysian cases that most often break a naive comparison.
| Key | How it matches | Malaysian edge case |
|---|---|---|
| Phone | Digits normalised to start with 60: 012-345 6789, +60123456789 and 60123456789 are the same key | Numbers arriving as 012…, 6012… or +60… from different systems |
| Compared case-insensitively: ALI@Example.com equals ali@example.com | Lists merged from web forms typed by different staff | |
| Full row | Every field trimmed and compared case-insensitively | Short lists with no phone or email column |
Windows CRLF line endings from Excel and Notepad are handled automatically. Fields in double quotes may contain commas, so "Lim, Boon" stays one field. The first row is treated as a header when it contains words such as name, phone or email.
A header-like first row is excluded from the diff and re-added to the output. Header words are matched in English or Malay (name/nama, phone/telefon, email) so either language works.
Before and after
Before
name,phone
Aisha Ahmad,012-345 6789
Mei Chen,019-777 2222
--- list B ---
Aisha Ahmad,+60123456789
Siti Nurhaliza,011-1234 5678 After
Only in A:
Mei Chen,019-777 2222
Only in B:
Siti Nurhaliza,011-1234 5678
(In both: Aisha Ahmad — same phone, different format) How it works
- Paste list A on the left and list B in the middle, or press "Load sample data" to see a Malaysian example.
- Choose the match key: phone, email, full row or auto, plus which side you want in the output.
- Press Run. The OUTPUT box holds the rows that differ, and the report below lists every duplicate dropped within each list.
FAQ
Does this upload my lists to a server?
No. The whole tool is static JavaScript running in your browser. You can open your browser Network tab and confirm that pressing Run sends zero requests, which matters when the lists contain customer phone numbers or emails.
Which duplicates are kept?
Within each list the first occurrence of every key is kept and later duplicates are reported in the "what was removed" list, with their line number and reason.
What if my columns are in a different order in each list?
Use phone or email keys with a header row: the matching column is found by name (phone/telefon or email), so column order does not matter. Full-row matching compares fields in order.
Can it handle quoted commas and Excel line endings?
Yes. The CSV parser handles double-quoted fields containing commas and both CRLF and LF line endings, so exports from Excel, Google Sheets and Notepad all work.
How large can the lists be?
Tens of thousands of rows are fine on a normal laptop. The removed list shows at most 500 entries, with the remaining count shown below it.