1. Home
  2. Free tools
  3. Email list tools
  4. CSV VLOOKUP (match two files)

VLOOKUP two CSV files: match rows by email or any column

In short: Pick a main file and a lookup file, match them on email (found automatically) or any column, and copy the columns you choose across. Case and spaces ignored, repeated keys first-wins or combined, rows with no match kept, filtered or listed separately. Runs in your browser. Limit: Matching is exact after trimming and lower-casing: jon@ won't match john@, and Gmail dot or +tag variants aren't treated as one address.

Add your main file (a CRM export, a lead list) and the file to take values from (verification results, an enrichment export). The tool matches rows on the email column, or any column you choose, ignoring case and stray spaces, and copies the lookup columns you tick into the main file. You get every main row with blanks where nothing matched, only the matches, or only the misses.

Price: this tool is free. Checking a whole email list is from $9/mo, and the first 100 checks are free with Google, no card. See pricing

The list you want to keep and add columns to, such as a CRM export.

The file to take values from, such as verification results or an enrichment export.

Runs in your browser. Nothing is uploaded.
Sample result from the CSV VLOOKUP (match two files)
Show the sample result as

Sample result

3 of 4 rows matched on email; Result and Reason copied across, 1 row with no match.

Matched
3 of 4
No match
1
Only in the lookup file
1

What this means for you

Each contact now carries its status, so the upload keeps every original column.

Next step:Compare two lists
  • Match on email or any column
  • Copy the columns you tick
  • All rows, matches or misses
  • Repeats first-wins or combined
  • VLOOKUP
  • CSV
  • Match

By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us

Also in: Português (Brasil) · Español

How do I check the email addresses after matching?

  1. Download the matched CSV.
  2. Upload it at /verify. Every address gets a live mailbox check, and valid, risky and invalid download as separate files. The first 100 email checks are free with a Google sign-in, no card.
  3. Use the valid file for the import or campaign.
Check the list

How do I VLOOKUP between two CSV files?

  1. Paste or upload the main file: the list whose rows you want to keep.
  2. Paste or upload the lookup file: the one holding the values to copy across.
  3. Press Match the files. Email columns are picked as the match columns when both files have one; change them if you match on a domain, an ID or a name.
  4. Tick the lookup columns to bring across, choose which rows to keep, and download the result. Rows that exist only in the lookup file download separately.

Example

You enter
A 4-row main file (email, first_name, company, with Ana@Northwind.example in mixed case) and a 4-row lookup file of verification results (Email, Result, Reason), one of whose rows isn't in the main file.
You get
Matched on the email columns, case ignored: 3 of 4 rows matched, Result and Reason copied across with a match column, Kim left blank as no match, and old@tailspin.example listed as only in the lookup file.
Limits
Runs in your browser with no row cap; an uploaded file can be up to 25 MB.

When would I match two CSV files?

Whenever two exports describe the same people and you need the columns side by side. The common ones before a send: putting verification results back onto a CRM export so each contact gets a status, adding enrichment columns (title, company size, LinkedIn URL) from a data vendor's file, marking which leads are already in a sequence, or attaching opt-out status from an ESP export.

The email address is usually the only column both files share, and it is the safest key: one address belongs to one person. Matching on names or company names works too, but expect misses where one file says Acme Inc and the other ACME, Inc.; clean them first with the company name cleaner.

Why does VLOOKUP in Excel miss matches that are obviously there?

Usually invisible differences. A trailing space, a non-breaking space pasted from a web page, mailto: left on a copied address, or a number stored as text in one file and as a number in the other. This tool trims spaces, collapses repeated ones, drops a leading mailto: and compares everything as text, so Ana@Example.com and ana@example.com match (case is ignored unless you untick it).

VLOOKUP also needs the key in the first column of the lookup range, as Microsoft's VLOOKUP help says, and returns #N/A when an exact match isn't found. Here the key can be any column, and a miss is a blank cell plus a match column saying no, which filters cleanly in any spreadsheet.

What happens when an email is in the lookup file twice?

By default the first matching row is used, so the result has exactly one row per main row and nothing is duplicated. If repeats carry different values you need (two statuses from two verification runs, several tags), tick the option to combine them: every distinct value is kept, separated by ; . The summary says how many keys repeat, so you know when it matters.

Rows of the main file are never multiplied, unlike a database join. To remove repeated contacts in the main file itself, use remove duplicate emails first.

Is this easier than VLOOKUP or XLOOKUP?

This toolVLOOKUPXLOOKUP
Key column positionAny columnMust be the first column of the rangeAny column
Copy several columnsTick themOne formula per columnOne formula, returns several
Stray spaces and mailto:IgnoredCause a missCause a miss
Rows with no matchKept, filtered or listed apart#N/A#N/A or your fallback
Rows only in the lookup fileSeparate downloadNot shownNot shown

The Excel equivalent of the default result, for one column: =IFERROR(VLOOKUP(TRIM(A2),Lookup!A:C,2,FALSE),"").

Who uses this tool, and for what?

Cold emailers
Put verifier statuses back onto the original lead file, so the sequencer upload keeps every personalisation column.
Marketing ops
Add opt-out or bounce status from an ESP export to a CRM export before re-importing.
RevOps
Mark which accounts in a target list are already customers by matching on the email domain.
Agencies
Merge a client's list with an enrichment vendor's file without sending either to a third service.

What can’t this tool tell you?

  • Matching is exact after trimming and lower-casing: jon@ won't match john@, and Gmail dot or +tag variants aren't treated as one address.
  • One match column per file. To match on two columns together, such as first and last name, combine them into one column in both files first (in a spreadsheet, =A2&" "&B2).
  • CSV and pasted text only; convert spreadsheets with Excel to CSV first.
  • It copies the values; it doesn't check whether the email addresses work. That needs a mailbox check.

Common questions

How do I match two CSV files by email?
Put the list you want to keep in the main file and the other in the lookup file, then press Match the files. Email columns are found automatically in both.
Can I match on a column other than email?
Yes. After the first run, change either match-on column to a domain, an ID, a phone number or any other column. The two columns don't need the same header name.
What if the files use different column names?
That's fine. You pick the match column in each file separately, and copied columns keep their lookup-file names, with "(lookup)" added when the main file already has a column of that name.
Will it change the order of my rows?
No. The result keeps the main file's rows in their original order, with the new columns added on the right.
How big can the files be?
Each up to 25 MB. Matching runs on your computer, so very large files take longer on older phones and laptops.
Is my data uploaded?
No. Both files are read and matched in your browser.

Sources

A tidy list can still be full of dead addresses.

Extracting, deduplicating and syntax checks all work on the text of an address. None of them can tell whether the mailbox exists. Only the server that hosts it can answer that, through an SMTP check, and that is what the paid product does.

  • Upload the cleaned file as it is: CSVs up to 100,000 rows
  • A real SMTP mailbox check on every row, with catch-all detection
  • Small list? Starter at $9/mo covers 2,500 emails a month, cancel anytime

Plans from $9 a month, cancel anytime, no contract. Sign in with Google and your first 100 email checks are free, no card. The free tools stay free either way.

Clean your next list before it bounces

100 free email checks when you sign in with Google, no card. Then monthly plans from $9, or one flat price with fair use, never cut off.

100 free checks, no card Cancel anytime Secure payment by Stripe