Find missing rows between two CSV files

Find rows present in a source CSV but missing from a target CSV (or vice versa) by matching on a key column such as email, id, or sku.

Open this example in CSV Join / Merge / Compare

Open the tool, then paste the sample input below. Everything runs locally in your browser.

Open this example in CSV Join / Merge / Compare →

The problem

After a migration, export, or sync you often need to answer one question: which records did not make it across? Matching on a key column isolates exactly the rows that exist on one side and not the other.

Sample input

Source CSV
email,name
asha@example.com,Asha
ravi@example.com,Ravi
meera@example.com,Meera
Target CSV
email,name
asha@example.com,Asha
meera@example.com,Meera

Expected output

Missing from target (key = email)
email,name
ravi@example.com,Ravi

ravi@example.com exists in the source but not the target, so it is reported as missing.

How to do it

  1. Paste the source CSV.
  2. Paste the target CSV.
  3. Select the key column, such as email.
  4. Run the comparison.
  5. Export or copy the missing rows.

Common mistakes

  • Key values with leading or trailing spaces that prevent matches.
  • Case differences in emails or IDs.
  • Different delimiters between the two files.
  • Header names that do not match across files.
  • Duplicate records that hide genuinely missing rows.

Related tools

Related guides

FAQ

How do I find missing rows in CSV?

Load both files, choose the key column, and run the comparison. Rows present under a key in one file but not the other are the missing rows.

Can I compare by email or SKU?

Yes. Any column with stable, unique values works as the key, including email, SKU, id, or order number.

What if the column names are different?

Map the matching column on each side as the key. Non-key columns are compared by header name.

Can I export only missing rows?

Yes. Filter to the only-in-source (or only-in-target) result and copy or download just those rows.

How do I handle duplicate keys?

Resolve or deduplicate them first; duplicates can hide missing rows and distort the comparison.

Finding missing rows runs locally in your browser. Your CSV files are not uploaded.

Explore more data cleanup and QA tools

Compare CSV files, find missing rows, clean lists and build SQL filters — grouped in one place.

View the data cleanup & QA toolkit →

Practical example and expected result

Find rows present in a source CSV but missing from a target CSV (or vice versa) by matching on a key column such as email , id , or sku . In practice, this is most useful when you need a quick, repeatable check on a CSV export before adding it to a ticket, pull request, test fixture, or support note.

A realistic input for this workflow is email,name asha@example.com,Asha ravi@example.com,Ravi meera@example.com,Meera. The expected result should resemble email,name asha@example.com,Asha meera@example.com,Meera, with the same important values preserved.

Troubleshooting checklist

  • Confirm you copied the complete CSV export and not only a partial line or truncated preview.
  • Run the local tool once with a safe sample, then repeat with the real data only if your team policy allows it.
  • Check quoting, escaping, whitespace, encoding, timestamps, and environment-specific values before trusting the result.
  • Before sharing output, remove secrets, tokens, cookies, customer data, and production hostnames that are not needed for the review.

Next useful steps

Review checklist before sharing the result

For Find missing rows between two CSV files, the safest workflow is to test with a small sample, confirm the output shape, then repeat with the real artifact only when needed. Keep the original input open until you verify that no value was dropped, decoded twice, sorted unexpectedly, or changed from text into a different type.

Before copying the result into a pull request, issue, chat thread, or support ticket, scan for private values. Replace real IDs, bearer tokens, session cookies, email addresses, internal hostnames, and customer data with placeholders. If another tool is listed above, use it as the second pass rather than manually editing complex output.

  • Keep one line of context explaining why the transformation was needed.
  • Preserve enough sample structure for a reviewer to reproduce the result locally.
  • Note any assumptions about encoding, timezone, delimiter, schema version, or runtime environment.