Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

Mail Merge Text Generator

One template, one row of data per person — every message written for you.

Text No upload Works offline Free to try, no sign-up Business tool Business pass from ₹249

{{Column}} inserts a value · {{Column|fallback}} when it may be empty · {{Column:upper}} (also lower, title, trim, first) · {{#}} the row number

Paste rows from a spreadsheet, or CSV/TSV with a header row, or drop a file here. Read on your device; nothing is uploaded.

Options

Placeholders work here too; .txt is added and repeated names are numbered.

Next steps

About the Mail Merge Text Generator

Write a message once with placeholders such as {{Name}} and {{Date}}, paste your list (or open a CSV, TSV or Excel file), and get one finished message per row: thank-you notes, reminders, invitations, letters, certificate wording, WhatsApp or SMS texts, or SQL statements. Every result can be previewed row by row, copied, or downloaded as one text file, a CSV with a new column, a zip with one file per row, or a Word document with one page per row.

Before you send anything, the page lists what would go wrong: placeholders that match no column (with the nearest column name and a one-click fix), rows where a value is empty, and rows with too many or too few fields. Your data stays in your browser — nothing is uploaded and nothing is sent.

How to use it

  1. Write the template. Type {{ and the column name, or use Insert field… once your data is in. Add a fallback for values that may be empty: {{Mentor|our team}}.
  2. Paste your data with a header row, or open a CSV, TSV, XLSX, XLS or ODS file. The separator is detected and the first rows are shown.
  3. Choose the options: escaping for SQL, HTML, JSON or CSV, what goes between results, and how files in the zip are named.
  4. Check the preview and Check before sending, then copy everything or download a .txt, .csv, .zip or Word file.

Examples

Personal messages
Input
Template: Hi {{Name:first}}, your table for {{Guests}} is booked for {{Time}}.
Data: Name,Guests,Time / Asha Verma,4,7:30 pm
Result
Hi Asha, your table for 4 is booked for 7:30 pm.

:first keeps the first word of the name.

Fallback for an empty value
Input
Your mentor will be {{Mentor|announced at the first session}}.
Result
Your mentor will be announced at the first session. (when the Mentor cell is empty)
SQL statements from a spreadsheet
Input
INSERT INTO people (name, email) VALUES ('{{Name}}', '{{Email}}');  with Escape values for: SQL strings
Result
INSERT INTO people (name, email) VALUES ('Liam O''Brien', '[email protected]');

The apostrophe in O'Brien is doubled, as SQL requires inside quotes.

Row numbers and capitals
Input
Template: {{#}}. {{City:upper}}
Data: City / Pune / Delhi / Chennai
Result
1. PUNE · 2. DELHI · 3. CHENNAI

Common uses

  • Writing personalised reminders, invitations and thank-you messages for a list of people.
  • Preparing the wording of certificates, ID cards or letters from a class or staff list.
  • Making WhatsApp, SMS or email texts to paste one by one — nothing is sent from this page.
  • Turning spreadsheet rows into SQL INSERT or UPDATE statements, JSON lines or HTML snippets.
  • Creating one text file per customer, student or product with a zip download.

Placeholders

  • {{Column}} — the value from that column. Names match without regard to capitals, spaces, hyphens or underscores, so {{first_name}} finds a column called First Name.
  • {{Column|fallback}} — the fallback text when the cell is empty.
  • {{Column:upper}}, :lower, :title (Each Word Capitalised), :trim (extra spaces removed) and :first (the first word) change the value; they combine with a fallback: {{Name:title|Friend}}.
  • {{#}} — the row number: 1 for the first data row.
  • \{{ — two literal braces, when you need them in the text.

A placeholder that matches no column is kept visible in the results (or left out, if you choose) and listed with the nearest column name.

Data formats

CSV and TSV are read as RFC 4180 describes: a value in double quotes may contain the separator, line breaks and quotes written twice ("say ""hi"""). If a quote is never closed, everything after it would become one value, so the page says on which line that quote opens. Commas, semicolons, tabs and pipes are detected automatically, and rows copied from Excel or Google Sheets arrive as tab-separated text. Excel (XLSX, XLS) and OpenDocument (ODS) files are read on your device; the first sheet is used, with values formatted as the spreadsheet shows them, so dates and amounts look the same. Files that are not UTF-8 are read as Windows-1252, and the page says so.

Escaping values

Escaping changes only the values that are inserted, never the template. SQL strings doubles single quotes (O'Brien → O''Brien), the standard SQL way to put a quote inside a string literal — keep the quotes around the placeholder in your template. MySQL / MariaDB strings also doubles every backslash: MySQL and MariaDB read \ as an escape character unless the NO_BACKSLASH_ESCAPES mode is on, so backslashes in a value would otherwise be dropped (\T is read as T), and one at the end of a value such as C:\Temp\ would escape the closing quote and break the statement (MySQL 8.4 manual, String Literals). HTML writes & < > " and ' as entities, so names cannot break your markup. JSON strings escapes quotes, backslashes and line breaks for use inside "…". CSV fields puts a value in double quotes (with any quote inside written twice) when it contains a comma, semicolon, tab, pipe, quote or line break, whichever separator your data used.

Limitations

  • Up to 50,000 rows and 50 million characters of results at a time; split bigger lists.
  • The results are plain text. The Word download puts each one on its own page in one font, ready to format, print or save as PDF in your word processor.
  • Only the first sheet of a workbook is read; save other sheets as CSV. Formulas show their last calculated value.
  • This page writes the messages; it does not send emails or texts.

Privacy

Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.

Frequently asked questions

How do I do a mail merge without Microsoft Word?

Write your text here with {{placeholders}} named after your spreadsheet columns, paste the rows or open the file, and copy or download the results. It works in any browser, without an account or add-ins.

Why does my result still show {{Something}}?

No column has that name. The Check before sending list shows the nearest column name and a button to fix the template. Names may differ in capitals and spaces ({{first name}} = First_Name), but not in spelling.

Can I get one file per person?

Yes. .zip (one file per row) downloads a zip with one text file per row. Name the files with placeholders, for example {{#}} {{Name}}; .txt is added and repeated names are numbered.

How do I generate SQL INSERT statements from a CSV?

Write one statement as the template, for example INSERT INTO users (name, email) VALUES ('{{Name}}', '{{Email}}');, choose Escape values for: SQL strings (or MySQL / MariaDB strings for those databases), and choose A line break between results. Each row becomes one statement.

Is my list uploaded or sent anywhere?

No. The data, the template and the results stay in your browser; files are read on your device. The page does not send messages for you.

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.