Apex Automation free tools
Name Splitter
First and last names out,
and the whole name still there
Splitting on the last space works until somebody is called van der Berg, and then one family name becomes a middle name and a surname and nobody notices for months. This page keeps those together, reads both orders in the same column row by row, tells you which rows it is unsure about and why, and checks every single row by putting the parts back together and comparing them with what you gave it.
- Free to use
- No account needed
- Nothing uploaded
- No row limit
Nothing to hand?
Drop a CSV or Excel file here
or
The column of names is found for you. Your other columns come back untouched, with the new ones added on the end.
What this page will read, and what comes back
- .csv, .tsv, .txt or .xlsxComma, semicolon, tab and pipe separated all work, and the one your file really uses is worked out from the file rather than assumed. In a workbook the first sheet holding rows is read, so a cover page in front of it is stepped over.
- With a header row or without oneWith one, the name column is found by its header in twenty five languages. Without one, it is found by the shape of the data: a column of emails, numbers, web addresses or long sentences is never chosen. The page tells you which column it picked and why.
- A file that is nothing but namesOne column, no header, no id. That works, and the first row is not mistaken for a header and quietly dropped.
- Rows of different widthsOne row with four cells and the next with one is normal in exported files. Every row is kept and stays in its own place, so your rows still line up with whatever else you have.
- Names written either way roundJohn Smith and Smith, John can sit in the same column. Each row is read by its own shape, and the page says how many of each it found.
- A comma that is part of the nameA one column file of Last, First names with no quotes looks like two columns to every reader there is. That is spotted and the name is put back together, which is otherwise where half of it disappears.
- Any encodingUTF-8, UTF-16 and Windows-1252, with or without a byte order mark, so José and García come through with their accents on. Any script: Japanese, Arabic, Devanagari, Cyrillic.
- Any number of rowsThere is no cap and no sign up. The work happens on your own machine, so your machine is the limit.
What comes back. Your original columns exactly as they were, then title, first name, middle name, last name, suffix and nickname in their own columns, each one you can switch off. With them, if you want, a column saying how sure each row is and a column saying what is worth looking at. A new column never writes over one of yours: if your file already has a First name column, the new one is called First name 2 and both survive.
How to read it
Reading the file.
The last space is the wrong place to cut
Split on the last space and John Smith comes out right. So does Mary Jones, and so do the first few hundred rows of almost any list, which is exactly why the problem goes unnoticed. Then you reach Ludwig van der Berg and the family name is Berg, with van der sitting in the middle name column as though it were a second forename.
And it is never only one row.
Dutch and Flemish lists are full of van, van der and van den. German ones have von and zu. Spanish has de, del and de la, and often two family names after it. Portuguese has dos and das. Arabic has bin, ibn and al. Irish has Mac and O'. Italian has di and della. French has de and le. Around forty of these words are carried here, and a family name that starts with one of them is kept whole.
And the page tells you when it did it. A row where words were joined comes back marked as likely rather than sure, with the words it joined named in plain English, because that call can go the other way and you are better placed than we are to know.
One column, two ways of writing a name
Export a list from one system and you get John Smith. Export from another and you get Smith, John. Put the two together, which is what happens the first time anybody merges a CRM with a spreadsheet, and you have a column holding both.
Nearly every tool decides once, for the whole column, usually by the majority. The minority then comes out backwards, and nothing says a word. Six months later somebody sends a mail merge that opens with Dear Smith.
Here each row is read by its own shape. A comma means the family name was written first, whatever the rest of the file looks like. The page counts how many of each it found and says so, because a column holding both is usually a sign that two lists were joined and there may be more than names to check.
Every row checked by putting it back together
This is the rule the whole page is built on. Take the parts it produced, join them back in order with the spacing they had, and you must get the original name back exactly, character for character. Not nearly. Exactly.
It sounds obvious and it is the check nobody runs, which is why dropped particles and lost nicknames go unnoticed. A name that loses de la still looks like a name. A row where a double space collapsed still looks fine. The only way to catch either is to compare what came out with what went in, on every row, every time.
So that is what happens, and any row that fails it is reported rather than passed off as fine. There is a second check underneath: the same name appearing twice in one file has to come out the same both times. If it ever does not, the page says so, because a parser that disagrees with itself is worse than one that is simply wrong.
Not everything in a name column is a person
Real lists have Acme Ltd in the name column. They have Northside Clinic and Hartley Consulting. Splitting those into a first and last name gives you a customer called Acme whose surname is Ltd, and a mail merge that says Dear Acme.
So around fifty words that mark a company are watched for, in several languages, and a row carrying one is marked unsure with the reason given rather than split as though it were a person. The row is still there and still whole. Nothing is dropped, because that decision is yours.
The same goes for two people in one cell. John & Jane Smith is one row and two people, and no set of columns holds that properly. It is marked, the row is kept intact, and you decide whether to split it into two rows before or after.
Finding the column, and the comma that is not a separator
With a header row, the column is found by its name, in twenty five languages: Name, Full Name, Contact, Nombre, Nom, Naam, Nome, Imię, 名前, الاسم. Without a header, it is found by shape. A column of emails is not a column of names. Neither is a column of numbers, web addresses, or sentences sixty characters long. Whichever it picks, it says so and you can change it.
And one that catches people out. A file holding a single column of names written Last, First, with no quotes around them, looks like a two column file to every reader ever written, because the comma is the separator. Half of every name ends up in a column nobody looks at. Here, a header with one cell and rows with two is taken as a sign that the comma belongs to the name, and the name is put back together before anything else happens.
What has actually been tested
Every figure here is a test run that has to pass before anything reaches this page. If one fails, nothing ships. A test reads this page, pulls out every figure in it, and compares each one with the code behind it.
- 60Names themselves, every shape, both orders, and the rule that nothing is ever lost names
- 41Every file that ships, scanned for generated copy, inline styles, off-origin loads and broken asset paths ship
- 34Every shape against every order, and the sizes pushed until the machine is the limit limits
- 37Finding the column, naming the new ones, and carrying your own columns through untouched columns
- 28Whole awkward files: no header, ragged rows, broken quotes, UTF-16, workbooks files
- 16The live page in a real browser, under the security policy it ships with e2e
- 17Every control used in a real browser, to prove none of them is decoration ui
- 13Layout at seven screen sizes, with the browser text enlarged, and the contrast of every line visual
- 13Every number printed on this page, checked against the code behind it figures
- 10Every icon and image is the real brand asset, and the link preview belongs to this tool brand
- 8The writing itself: sentence rhythm, repeated openers, and the templates that give generated prose away humanise
Properties you can hold it to
- It never loses a characterThe parts rejoin into the original name exactly, and every row is checked that way.
- It says how sure it isThree levels, and every row that is not sure carries its reason in plain words you can read.
- It agrees with itselfThe same name twice comes out the same both times, and a contradiction is reported as something to stop for.
- It reads each row by its own shapeBoth orders can sit in one column and neither gets reversed to suit the other.
- It leaves your file aloneYour columns come back exactly as they were and the new ones go on the end, never over the top of one of yours.
- It knows a company when it sees oneAnd a cell with two people in it, and says so instead of splitting them as though they were a person.
- It keeps the rows nobody asked aboutBlank cells stay in place rather than being dropped, so your rows still line up with everything else you have.
- It holds nothingNo account, no history, no storage. A list of people's names should not be passing through anybody else's server.
Questions people ask first
What happens to a name like van der Berg?
It stays in one piece as the family name, and the page says it kept those words together. The same goes for de la Cruz, dos Santos, bin Khalid, Mac Carthy, von Goethe, di Ser Piero and O'Brien. Around forty of these words are carried, from eight languages, because splitting on the last space turns one family name into a middle name and a surname, and that is the single most common way a list of names gets quietly damaged.
My list has both Smith, John and John Smith in it.
Then it is read row by row rather than by one rule for the whole column. A row with a comma in it is understood as family name first, whatever the rest of the column looks like, and the page tells you how many rows were of each shape. Most tools pick one rule from the majority and quietly reverse the minority, which is a mistake you only find months later when somebody is addressed by their surname.
How do I know which rows to check?
Every row comes back with one of three levels. Sure means the shape was plain and there was nothing to weigh up. Likely means a call was made that could have gone the other way, such as a particle joined to a family name or a second given name treated as a middle name. Unsure means you should look: a single word, a company, two people in one cell, or more parts than a name usually has. Each row that is not sure carries the reason in plain words, and those reasons can be written into their own column.
What does it mean that nothing is lost?
Take the parts this page produced, put them back together in order, and you get the original name back exactly: same characters, same spacing. That is checked on every single row, and any row that fails is marked and reported rather than passed off as fine. It is the one check that catches a dropped particle, a lost nickname, a swallowed second surname or a collapsed double space, and no other tool in this corner of the internet runs it.
Is my list sent anywhere?
No. The file is read inside this browser tab and the splitting happens there too. There is no upload endpoint and no server to receive anything. You can disconnect after the page has loaded and carry on working, which a test does on every run. Nothing is stored either, so closing the tab leaves nothing behind. A list of people's names is exactly the sort of thing that should not be passing through somebody else's server.
My file has no header row at all.
That works. There is a checkbox for it, and the column is then found by the shape of the data rather than by a header. It matters that the first row is not mistaken for a header, because in a file that is nothing but names the first row is a real person, and losing them is the kind of mistake nobody notices until that person asks why they never heard from you.
Can it handle a name in Japanese or Arabic?
The characters come through untouched and nothing is lost, which is the part that matters most. What it cannot do is know that a Japanese or Chinese name is usually written family name first while the same two words in English are the other way round. There is a setting for reading a whole column family name first, and a row written with a comma is understood either way. Beyond that it is your call, which is why the page says how sure it is rather than pretending.
The column it picked is not the one I want.
Change it. The column is a dropdown filled from your own file, and the page says why it picked the one it did: either the header said so, or that column looked most like names. Changing it reruns everything straight away, including the counts and the warnings, so you can see the effect rather than guess at it.
Tell us what would make this better
A name this page splits wrongly is the most useful thing anybody can send us. One name is enough, and it does not have to be a real one. toolssupport@apexautomationteam.com
- A family name that came apart when it should not have
- A title or a suffix we do not know yet
- A naming custom this does not handle
- A version of this wired into your own system
- Something else altogether, built to your spec
Email our team See the other free tools
This page is a tool, not advice about your data. Check the output before you send it on.