Group CSV rows and join values: one row per company with every contact's email in one cell
In short: Upload a list, choose the column that groups the rows and the columns to join. Capitals and extra spaces do not split a group, and conflicts are counted. Limit: A joined cell is for reading and reports; most sending tools need one address per row.
Upload a CSV or .xlsx file, or paste it with a header row. Choose the column that groups the rows, such as Company, and the columns to join, such as Email. Each group becomes one row, the joined values are written in one cell with your separator, and every other column keeps its first filled value. Download the grouped 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. Check your list free nowSee pricing
Sample result
Five example rows become 3: Acme's three rows join into one row with ava@acme.com; ben@acme.com, and the row with no company stays as it was.
- Rows now
- 3
- Groups
- 2
- Groups with conflicts
- 1
What this means for you
Joined cells are for reading; a check of the original addresses shows which exist.
- Any column as the key
- Several columns joined
- Repeats left out
- Conflicts counted
- Group
- CSV
- Join
By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us
Grouped the rows? Check the addresses before the send.
- Upload the original, one-contact-per-row 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 group rows in a CSV and join the values?
- Upload the file as a CSV or .xlsx, or paste the cells with the header row first.
- Choose the column that decides the groups, such as Company or Domain.
- Tick the columns whose values are joined, and choose the separator.
- Check the groups, the conflicts and the preview, then download the file.
Example
- You enter
- Five rows with Company, Email, City and Name where Acme appears three times (spelled Acme and acme, one address repeated in capitals), Globex once and one row has no company, with Email joined by a semicolon.
- You get
- 3 rows: Acme with ava@acme.com; ben@acme.com in one cell, Globex with cara@globex.de, and the no-company row unchanged. 2 rows folded in, 1 group with differing City and Name values (the first kept).
- Limits
- Runs in your browser; nothing is uploaded. Columns that are not joined keep only the first filled value.
When do I need one row per company?
A CRM export has one row per contact, but a mail merge to an account team, a report or an import to another tool wants one row per company with the contacts together. Grouping turns Acme, Acme, Acme into one Acme row whose Email cell reads ava@acme.com; ben@acme.com.
Joined cells suit a report. A sending tool that expects one address per row needs the original file.
How are the groups and cells decided?
Rows share a group when the key cell matches, ignoring capitals and extra spaces, so Acme, acme and Acme with a trailing space are one group. Groups appear in the order their first row appears. In a joined column, blanks are skipped and, if you choose, a value that repeats is written once.
Every column that is not joined keeps the first filled value in the group. If two rows disagree there, such as two cities, the group is counted as a conflict so you know a value was dropped.
What about rows with a blank key?
A row whose key cell is blank cannot be placed in a group, so it stays as its own row, unchanged, and is counted. To fill blanks in a company column first, use fill down blank cells; to cap how many contacts one company keeps, use the contact limiter.
Who uses this tool, and for what?
- Sales teams
- Make an account list with every contact's email on the account row.
- Marketers
- Combine event registrations into one row per company.
- Analysts
- Prepare a one-row-per-account file for a report.
What can’t this tool tell you?
- A joined cell is for reading and reports; most sending tools need one address per row.
- Non-joined columns keep only the first filled value in each group.
- Rows with a blank key are not grouped.
- Only the first sheet of a workbook is read.
Common questions
- Can I join more than one column?
- Yes. Tick as many as you like, such as Email and Name. Each is joined in its own cell, in the same row order.
- Which separator should I use?
- A semicolon and a space suits most mail apps. A comma works for a spreadsheet cell, a pipe when the values themselves contain commas.
- What happens to the other columns?
- The first filled value in the group is kept. If rows in a group disagree, the group is counted as a conflict.
- Does Acme match acme?
- Yes. Capitals and extra spaces are ignored when deciding groups, and the first spelling is the one written.
- Can it undo a group?
- Splitting a joined cell back into rows is a separate job; use the email columns to rows tool for a row of addresses.
- 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.