CSV mail merge generator: write one personalised email per row of a list
In short: Upload a list, write the subject and message with {{column}} tags and a fallback for blanks, and download one finished email per row. Nothing is sent. Limit: It writes text and sends nothing.
Upload a CSV or .xlsx file, or paste it with a header row. Write the subject and message and put a column name in double curly brackets, such as {{First name}}. Add a bar and a fallback, like {{First name|there}}, for blank cells. You preview and download one finished email per row, with a mailto link on each. Nothing is sent.
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. Check your list free nowSee pricing
Sample result
Four example rows give 3 finished emails: Ava gets A question for Ava, Ben gets Hi there, and the row with a blank Company is left out.
- Messages written
- 3
- Blank field, no fallback
- 1
- Links too long
- 0
What this means for you
Written emails are not delivered ones; a check shows which addresses exist before you send.
- {{column}} tags
- Fallback after a bar
- Subject and message
- Nothing is sent
- Merge
- CSV
- mailto
By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us
Written the emails? Check the addresses before you send.
- Download the file, or use the check button under the result, which carries its addresses across.
- Upload or paste it at /verify. Every address gets a live mailbox check, and the first 100 email checks are free with a Google sign-in, no card.
How do I mail merge from a CSV?
- Upload the file as a CSV or .xlsx, or paste the cells with the header row first.
- Pick the column that holds the address to send to.
- Write the subject and message with {{column name}} tags, and a fallback after a bar for cells that may be blank.
- Check the messages written and the rows left out, then download the file.
Example
- You enter
- Four rows with Email, First name and Company (Ben has no first name, Dev has no company), a subject of A question for {{First name|your team}} and a message that uses {{First name|there}} and {{Company}}.
- You get
- 3 messages written; the Dev Rao row is left out because Company is blank and has no fallback. Ava gets the subject A question for Ava and Ben gets Hi there, with a mailto link on every message.
- Limits
- Runs in your browser; nothing is uploaded or sent. It writes plain text only.
How do the {{tags}} work?
A tag is a column name between double curly brackets. {{First name}} becomes the First name cell of that row. Capitals, spaces and underscores do not matter, so {{first_name}} finds a column called First name. Add a bar and a fallback to cover a blank cell: {{First name|there}} writes there when the cell is empty.
A tag that matches no column is left in the text as written and listed in red, so you see the typo before it reaches a person.
What happens to a row with a blank field?
By default a row is left out when a tag with no fallback meets a blank cell, so nobody gets Hi , or a sentence with a hole. The rows left out are counted. Untick the option to write them anyway with the blank in place.
To see which columns are often blank before you write, use the CSV fill rate checker.
What does it not do?
It sends nothing and attaches nothing. The download is a CSV of To, Subject, Message and a mailto link, ready to paste into a mail app or a sending tool. Some mail apps cut a mailto link off past about 2,000 characters, so long messages are counted and flagged. To check a template against a CSV you already use in another tool, use the mail merge field checker; for rule-based opening lines, use the personalization line builder.
Who uses this tool, and for what?
- Small businesses
- Write a personal note to each customer from a spreadsheet.
- Recruiters
- Draft one message per candidate with a name and a role filled in.
- Event organisers
- Prepare a reminder per guest with their session or table.
What can’t this tool tell you?
- It writes text and sends nothing.
- A mailto link over about 2,000 characters may be cut off by the mail app.
- Plain text only: no formatting, images or attachments.
- Only the first sheet of a workbook is read.
Common questions
- Does it send the emails?
- No. It writes them and nothing leaves your browser. You paste or import the file into the mail app or sending tool you already use.
- How do I handle a blank first name?
- Add a fallback after a bar: {{First name|there}} writes there. Without a fallback, the row is left out by default.
- Can I use the same tag twice?
- Yes. Every copy of a tag is filled, in the subject and in the message.
- Do line breaks in the message survive?
- Yes. They are kept in the Message column and written as line breaks in the mailto link.
- Why does a link get flagged?
- Some mail apps cut a mailto link off past about 2,000 characters. The message in the Message column is complete either way.
- Is my file uploaded?
- No. The file is read in your browser and goes nowhere.
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.