How to merge first name and last name into a single full name column
- Step 1Export the contact CSV — Download from your CRM, ESP, or event tool. Names typically come as
First Name/Last Name,first_name/last_name, orfname/lname— any of these work. - Step 2Drop the file onto the merger above — Every header becomes a checkbox. Encoding and delimiter are auto-detected, so a semicolon-delimited EU export loads without configuration.
- Step 3Tick First Name then Last Name (in that order) — Tick order is the join order. For
Jane Smith, tick First Name first, then Last Name. For aSmith, Janedirectory layout, tick Last Name first, then First Name. - Step 4Set the separator — Default is a single space, which gives
Jane Smith. Use,forSmith, Jane. The separator is inserted verbatim between values — including when one name is empty, which produces a stray space. - Step 5Name the column `Full Name` — The default header is
merged; rename it toFull Name(orname,contact_name) to match your destination field. The field can't be blank — Merge stays disabled until it has a value. - Step 6Merge and tidy stray spaces if any names were missing — Click Merge columns; First/Last vanish and Full Name appears at the front. Download is suffixed
.merged-cols.csv. If some rows lacked a last name, trim the trailing space with CSV Whitespace Trimmer before importing.
Controls the name-merger actually exposes
Three controls plus the checklist. There is no skip-blank, no auto-trim, no drag-reorder, and no title-case toggle in the web UI.
| Control | Behaviour for name data | Default |
|---|---|---|
| Column checklist | Tick First/Middle/Last. Tick order = join order. Re-tick to change order; no drag-reorder | Nothing ticked |
| Separator | Space → Jane Smith; , → Smith, Jane. Inserted verbatim, even around an empty name | Single space |
| New column name | Header for the result. Rename to Full Name. Cannot be blank | merged |
| Insert position | Browser tool inserts at the front (position 0). API/orchestrator expose insertAt | 0 (front) |
Name layouts and how to produce them
Tick order + separator recipes for the common name formats systems expect.
| Wanted format | Example output | Tick order | Separator |
|---|---|---|---|
| First Last | Jane Smith | First Name → Last Name | space |
| Last, First (directory) | Smith, Jane | Last Name → First Name | , |
| First Middle Last | Jane Q Smith | First → Middle → Last | space |
| Title First Last | Dr Jane Smith | Title → First → Last | space |
Cookbook
Before/after rows from contact exports, including the rough edges around missing and compound names. Output shown is exactly what the tool emits.
First + Last into Full Name
ExampleThe happy path. Tick First then Last, separator space, new name Full Name. Source columns are removed; Full Name leads the file.
Input: First Name,Last Name,Email Jane,Smith,jane@x.com Tick: First Name, Last Name Separator: " " New name: Full Name Output (source name columns removed, Full Name first): Full Name,Email Jane Smith,jane@x.com
Directory format: Last, First
ExampleTick Last before First and use a comma-space separator to get a sortable Smith, Jane directory column.
Input: First Name,Last Name Jane,Smith Tick order: Last Name, First Name Separator: ", " Output: merged "Smith, Jane" (re-quoted because the comma is inside the field)
Missing last name leaves a trailing space
ExampleThere is no skip-blank logic. A first-name-only row produces a trailing space — invisible but real, and it can break exact-match lookups downstream.
Input: First Name,Last Name Madonna, Jane,Smith Tick: First Name, Last Name Separator: " " Output (note the trailing space after Madonna): merged "Madonna " Jane Smith Fix: run CSV Whitespace Trimmer on the merged column afterwards.
Three-part name with a middle initial
ExampleTick three columns to build First Middle Last. The minimum is two; there's no upper limit on how many name parts you can include.
Input: First,Middle,Last Jane,Q,Smith Tick: First, Middle, Last Separator: " " Output: merged Jane Q Smith
Compound surname and accented characters survive
ExampleTwo-word and hyphenated surnames live in one source cell and are copied as-is. Accented and non-Latin characters round-trip because the tool is pure UTF-8 text.
Input: First Name,Last Name María,García López Seán,O'Brien Tick: First Name, Last Name Separator: " " Output: merged María García López Seán O'Brien
Errors and edge cases
Real errors and silent failures sourced from each platform's own documentation. Match the wording to the row, fix what the row says to fix.
Row has a first name but no last name
By designWith no skip-blank option, Jane + empty + space separator yields Jane — a trailing space. It looks identical to Jane on screen but fails exact-match joins and can create a phantom duplicate. Trim the merged column with CSV Whitespace Trimmer after merging.
Row has only a last name
By designEmpty first + Smith + space produces Smith — a leading space. Same downstream risk as the trailing-space case. The whitespace trimmer removes both leading and trailing spaces in one pass.
Fewer than two columns ticked
invalid_configThe tool refuses to merge a single column: the Merge button is disabled below two ticks, and the API returns csv-column-merger requires ≥ 2 columns (400). To just rename one name column, use CSV Header Rename instead.
First and Last columns are removed after merge
By designThe output keeps only the merged Full Name column — the original First Name and Last Name columns are gone. If you need to keep the parts too (e.g. for personalised {{first_name}} merge fields), duplicate them in a spreadsheet before running this tool.
Full Name column appears first, not last
ExpectedIn the browser tool the merged column is inserted at position 0. So the file becomes Full Name, Email, .... If your importer maps by position, reorder with CSV Column Reorder. The API/orchestrator accept insertAt to place it elsewhere.
Tick order reversed by accident
ExpectedTicking Last before First (when you wanted First Last) yields Smith Jane. The join follows click order, not column layout, and there is no drag-reorder. Untick both and re-tick First then Last.
Title-case or upper-case wanted on the result
PreservedThe merger copies the source casing verbatim — jane SMITH stays jane SMITH. There is no casing toggle. Normalise casing with CSV Case Converter, either on the parts before merging or on the merged column after.
Free tier limit on a large contact export
Upgrade requiredThis is a Pro tool; free tier caps at 2 MB / 500 rows. A large CRM contact list needs Pro (100 MB / 100,000 rows). Split first with CSV Row Splitter to stay within free limits if needed.
Frequently asked questions
Can I put Last Name before First Name?
Yes — tick Last Name first, then First Name. The join follows your tick order, not the column layout. Pair it with a , separator to get a sortable Smith, Jane directory column.
What happens to rows where Last Name is empty?
You get a trailing space: Jane from Jane + empty. There is no skip-blank option (the old copy claiming one was wrong). Run CSV Whitespace Trimmer on the result to strip the stray spaces before importing.
Does this work for a Middle Name too?
Yes. Tick First, Middle, and Last in order for Jane Q Smith. There's no limit on how many name parts you can merge — the only minimum is two columns.
Are the First Name and Last Name columns kept after merging?
No — they're removed and replaced by the single merged column. If you still need {{first_name}} for personalisation, duplicate those columns before merging, because the tool has no keep-originals option.
Where does the Full Name column end up in the file?
At the front (position 0) in the browser tool, so the output reads Full Name, Email, .... Reorder afterwards with CSV Column Reorder if you need it elsewhere. The API exposes an insertAt parameter.
Will the tool capitalise or title-case the names?
No. It copies the source casing exactly — jane smith stays lowercase. Use CSV Case Converter to title-case, either on the parts beforehand or on the merged column after.
How are compound or hyphenated surnames handled?
Cleanly. García López or Smith-Jones lives in a single source cell, so it's copied verbatim into the merged name with the surname intact — no extra separators are inserted inside a single cell's value.
Do accented and non-Latin names survive?
Yes. The tool is pure UTF-8 text, so José, Müller, O'Brien, and 李雷 all round-trip unchanged. If Excel later shows mojibake, the issue is Excel's encoding default — open the file in a UTF-8-aware editor to confirm the bytes are intact.
Can I add a title like `Dr` or `Mr` in front of the name?
Only if it's already a column in your CSV. Tick a Title column first, then First and Last, for Dr Jane Smith. The tool can't inject a constant prefix that isn't in the data — add a title column first if you need one.
Is contact data uploaded to a server?
No. Everything runs in your browser via PapaParse. Names and email addresses never leave the tab. Only an anonymous usage counter is recorded if you're signed in.
How many contacts can I merge at once?
Free tier: 2 MB / 500 rows. Pro: 100 MB / 100,000 rows. For a larger list, split with CSV Row Splitter, merge each chunk, and re-stack the chunks with CSV Merger.
Can I automate the name merge for a recurring export?
Yes. GET /api/v1/tools/csv-column-merger returns the schema; pair the @jadapps/runner once and POST { columns: ["First Name","Last Name"], separator: " ", newHeaderName: "Full Name", insertAt: 0 } with your CSV to 127.0.0.1:9789/v1/tools/csv-column-merger/run. Runs on-device — names never leave your machine.
Privacy first
Processing runs locally in your browser with PapaParse. No file is uploaded — only metadata counters are saved for signed-in dashboard stats.