1. Home
  2. Free tools
  3. Email list tools
  4. Cold email CSV preflight

Cold email CSV preflight: check a lead file before you upload it to Instantly or Smartlead

In short: Checks a lead file before the import: an email column, blank or repeated headers, header names that won't work as merge tags, partly empty personalization columns, invalid and repeated addresses, leads already contacted (against a second export), the free-mail and role share, and garbled characters. Limit: Syntax only: a well-formed address can still bounce.

Paste or upload the lead CSV you are about to import, and optionally an export of leads already contacted. The preflight checks the email column, headers that break merge tags, empty first names and personalization cells, invalid and repeated addresses, leads already contacted, the free-mail and role mix and garbled characters, then gives you a cleaned file.

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

Runs in your browser. Nothing is uploaded.
Sample result from the Cold email CSV preflight
Show the sample result as

Sample result

8 rows, 5 ready: 1 bad address, 1 repeat and 1 already contacted removed.

Lead file
5 ready
Empty first names
2
Bad merge tag names
1

What this means for you

2 leads have no first name, so "Hi {{first_name}}" would send "Hi ," to them.

Next step:Verify the list
  • Email column and headers
  • Merge tag names checked
  • Empty personalization counted
  • Already-contacted removed
  • Instantly
  • Smartlead
  • CSV

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

What is the last step before importing leads into a sequencer?

  1. Download the cleaned file here.
  2. Upload it at /verify. The preflight checks the file; a live mailbox check shows which addresses exist. The first 100 email checks are free with a Google sign-in, no card.
  3. Import the valid rows, and keep catch-all rows for a smaller send.
Verify the cleaned file

How do I check a lead CSV before uploading it to a sequencer?

  1. Export or save the lead list as CSV, with a header row.
  2. Paste or upload it. To avoid re-mailing people, paste any export of leads you've already contacted into the second box.
  3. Press Run the preflight and fix anything marked with a cross: a missing email column, blank or repeated headers.
  4. Download the cleaned file (invalid, repeated and already-contacted rows removed) and check the warnings about empty merge fields before you write the copy.

Example

You enter
An 8-row lead CSV (email, first_name, company_name, Pain Point, personalization) with [email protected] pasted as already contacted: two rows with no first name, [email protected] repeating a lead, sam@ray with no domain ending, [email protected] and [email protected].
You get
5 leads ready. Fails: 1 row without a valid address. Warnings: "Pain Point" won't work as a merge tag, 2 leads with no first name, 3 columns partly empty, 1 repeated address, 1 lead already contacted. 20% free mail and 20% role addresses.
Limits
Runs in your browser with no row cap; an uploaded file can be up to 25 MB.

What breaks a cold email CSV import?

Mostly the header row. A column with no name can't be mapped, two columns with the same name lose one of them, and a header with spaces or symbols ("Pain Point", "company-name") makes a clumsy merge tag. CSV itself is loosely defined in RFC 4180, so a file that opens fine in Excel can still import badly. Garbled names (é instead of é) mean the file wasn't saved as UTF-8.

Then the rows: addresses that aren't addresses at all, the same person on two rows, and leads you mailed last month under another campaign. The preflight removes those from the clean file and says how many.

Why do empty personalization fields matter?

A merge tag with nothing behind it sends a blank: "Hi ," or "I saw {{company_name}}" with the company missing. The preflight lists every column that is partly empty, with the count, so you can fill it, set a fallback value in the sequencer, or keep that tag out of the copy. The CSV fill rate guide goes further.

What do the free-mail and role numbers tell you?

On a B2B list, a high share of Gmail, Outlook or Yahoo addresses often means scraped or personal addresses rather than work ones, and role inboxes (info@, sales@) are shared and complain more. Neither is invalid under RFC 5322; both are worth a decision before the send. Google's sender guidelines keep spam complaints under 0.3%.

Who uses this tool, and for what?

Cold emailers
Catch an empty first-name column before 2,000 emails go out starting "Hi ,".
Agencies
Check a client-supplied list against everything already contacted for that client before it goes into a new campaign.
Lead sellers
Hand over files with clean headers and no repeats, ready to import.

What can’t this tool tell you?

  • Syntax only: a well-formed address can still bounce.
  • It checks the header row is usable as merge tags, not which tags your copy uses.
  • Already-contacted matching is by exact address; the same person at a new address isn't matched.
  • It can't see a sequencer's own import limits or blocklists.

Common questions

Does it work for Instantly, Smartlead, lemlist and EmailBison?
Yes. The checks are about the file itself, which every sequencer reads the same way: a header row, an email column and one lead per row.
How does the already-contacted check work?
Paste any export of leads you've emailed, in any format. Every address in it is read, and leads in your new file that match are removed from the clean file.
Which header names work as merge tags?
Letters, digits and underscores, starting with a letter, such as first_name or company_name. Those work as {{tags}} in every sequencer.
Does it check whether the addresses exist?
No. It checks syntax only. A mailbox check at /verify shows which addresses exist.
Is my file uploaded?
No. Both lists are read in your browser and nothing is sent.

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