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.
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.
- 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?
- Download the matched CSV.
- 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.
- Use the valid file for the import or campaign.
How do I VLOOKUP between two CSV files?
- Paste or upload the main file: the list whose rows you want to keep.
- Paste or upload the lookup file: the one holding the values to copy across.
- 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.
- 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.examplein 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.examplelisted 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 tool | VLOOKUP | XLOOKUP | |
|---|---|---|---|
| Key column position | Any column | Must be the first column of the range | Any column |
| Copy several columns | Tick them | One formula per column | One formula, returns several |
| Stray spaces and mailto: | Ignored | Cause a miss | Cause a miss |
| Rows with no match | Kept, filtered or listed apart | #N/A | #N/A or your fallback |
| Rows only in the lookup file | Separate download | Not shown | Not 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 matchjohn@, 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.