Sigmera.

Clean an email column in a CSV file

To clean an email column, open the email cleaner in Sigmera, choose whether to lowercase and trim each address, then flag invalid emails in a new column or remove those rows entirely. Preview the result and download the cleaned file. Sigmera runs entirely in your browser — your email list is never uploaded to a server, so it’s GDPR-safe by design.

Last updated: September 2026

Sigmera cleaning and validating an email column in the workspace

Use the email cleaner free in your workspace

Free account, no credit card — every tool, unlimited rows, 3 free downloads a month, nothing uploaded.

Create a free account

🔒 Everything runs in your browser — your file is never uploaded, and the workspace even works offline once it has loaded.

Ways to clean an email column, compared

MethodData uploaded?Validates formatSkill needed
Sigmera (this tool)No — runs in browserYes (syntax)None
Email-verifier servicesUsually yes — your list goes to their serversYes (+ deliverability)Low
Excel / Google SheetsNoOnly with formulasMedium (formulas)
Python / pandasNoYes (regex)High (code)

Note: many email-verifier services require you to upload your list to their servers to check it — a privacy and GDPR concern Sigmera avoids entirely by working in your browser.

How to clean an email column

  1. 1. Drop your CSV into the tool. The file is read into your browser’s memory — it is never sent over the network. Sigmera auto-detects the email column.
  2. 2. Choose how to clean. Lowercase addresses, trim stray spaces, and decide whether to flag invalid emails in a new column or remove those rows. Optionally dedupe at the same time.
  3. 3. Preview the result. See how many addresses were fixed, how many were invalid, and how many clean rows remain before you commit.
  4. 4. Download the clean file. Create a free account to export the full cleaned CSV.

Why validate emails client-side?

Email lists exported from sign-up forms and CRMs are full of stray capitalization, leading spaces, and typo’d addresses that break imports and bounce campaigns. Sigmera checks each address against the basic shape defined by RFC 5322 — a local part, an @ sign, a domain, and a dot — entirely in your browser’s JavaScript engine. Because there is no server to upload to and nothing is stored, this satisfies GDPR data-minimization (Article 5): zero bytes of your contact list leave the device. Note that a format check confirms an address is well-formed, not that the inbox actually exists.

Remove duplicate emails: what counts as a duplicate

Sigmera compares addresses case-insensitively after the clean, so turn on trimming and lowercasing before you dedupe — that is what collapses Sam@Acme.com, sam@acme.com, and the same address with a stray leading space into one row. The first occurrence is kept and every later copy is dropped, and the preview tells you how many rows went.

Two lookalikes are deliberately left alone, because they are different strings and only some mail providers route them to the same inbox. A subaddressed value like sam+news@acme.com splits into a user part and a detail part rather than being a separate account (RFC 5233), and sam.jones@acme.com versus samjones@acme.com behaves the same way. Collapsing them for you would silently merge contacts that other providers keep apart. If you want them merged, strip the tag with a find and replace on the email column first, then dedupe.

Dedupe here is column-level: it looks at the email and nothing else. To drop rows that repeat across several fields — name plus company, say — reach for the duplicate row remover instead. A contact list usually needs the phone column standardized in the same pass, which is what the E.164 phone number formatter handles on the same file. The spreadsheet route is covered step by step in the Excel duplicates guide, and the round-up of tools for cleaning an email list weighs the alternatives side by side. If this file is headed straight into a CRM, prepping a customer list for a Salesforce data import puts the email clean and the dedupe in the right order, and the HubSpot import walkthrough covers what that CRM does with an address it cannot key on.

When the file has more than one email column

CRM and sign-up exports often carry email plus a work_email or email2 that was filled in on some rows and not others. Dedupe reads one column, so running it twice — once per column — does not catch the case you actually have: a contact whose address sits in the first column of one row and the second column of another passes both passes untouched. Collapse the two into a single column before you dedupe.

Pick which address wins per row first — for a B2B list that is normally the work address — then merge the two fields with the column joiner and clear the leftover separator on rows where only one cell had a value with one more find and replace. Trim, lowercase, and dedupe the merged column in the usual single pass after that. The spreadsheet equivalent of the merge step is concatenating two columns in Excel, which costs a formula, a paste-as-values, and a column delete.

One thing the dedupe will not do is choose a survivor for you: it keeps whichever row comes first in the file and drops the rest. A CSV carries no dependable sense of recency, so if the newest record is the one that should live, sort the file by its date column newest-first before loading it — then “first occurrence” and “most recent” are the same row.

Addresses that pass the check but you may not want

A format check answers exactly one question: is this string shaped like an email address? Two kinds of value clear that bar and still cost you on the way out. The tool leaves both in place, which is better to know now than after a send.

Role addresses. RFC 2142 reserves names such as info, sales, support, and postmaster for a function rather than a person, and asks that they be recognised independent of character case. They are valid addresses, so they survive the clean untouched — but a shared inbox is a different thing from a contact, and nobody at the other end opted in personally. Sigmera does not sort addresses by what sits in front of the @. Trim, lowercase, and dedupe first, then sort the cleaned column in a spreadsheet: once the casing is consistent the role addresses land together and the block goes in one pass.

Misspelled domains. gmial.com has a local part, an @ sign, a domain, and a dot, so it is well-formed and the validator passes it. It will still bounce. Nothing that inspects syntax alone can tell the difference, and Sigmera never contacts a mail server to check — which is the same reason the list never leaves your device. Where you already know the misspelling, correcting it across the file is a single find and replace on the email column. The rest you learn about from bounce reports, which is what a verifier that connects to mail servers sells — at the cost of uploading the list to it.

Frequently asked questions

Does this tool upload my email list?
No. The email cleaner runs entirely inside your web browser using client-side JavaScript. Your file is never uploaded to a server and never leaves your device, so it is GDPR-safe by design. Many email-verifier services, by contrast, require you to upload your list to their servers.
Does it verify whether the inbox actually exists?
No. Sigmera checks the format and syntax of each address — whether it looks like a valid email per the RFC 5322 shape (local part, @, domain, and a dot). It does not connect to mail servers, so it cannot confirm deliverability or whether a mailbox is real.
What counts as an invalid email?
Any value that does not match the basic email pattern of text, an @ sign, a domain, and a dot — for example a blank cell, a name with no @, or a domain with no dot. After optional trimming and lowercasing, anything that still fails the format check is marked invalid.
Can I remove duplicate emails at the same time?
Yes. Turn on “Remove duplicate emails” and the tool drops rows whose email is a case-insensitive duplicate after cleaning, keeping the first occurrence. You can lowercase, trim, validate, and dedupe in a single pass.
How do I remove duplicate emails from a CSV?
Open the CSV in the email cleaner, turn on trimming and lowercasing so “Sam@Acme.com” and “ sam@acme.com ” are recognised as the same address, then enable “Remove duplicate emails”. The tool keeps the first occurrence of each address and drops the rest, matching case-insensitively after the clean. Preview the count of removed rows, then download the deduplicated file. It all runs in your browser, so the list is never uploaded.
How do I clean an email list before importing it?
Clean an email list in three passes on one screen: trim leading and trailing spaces, lowercase every address, then flag or drop values that fail the format check. Add “Remove duplicate emails” to collapse repeats built up from stacked exports. That covers the exact problems most CRM and email-platform importers reject a file for — malformed addresses, stray whitespace, and duplicates — before the file ever reaches the import tool.
Why wasn’t sam+news@acme.com removed as a duplicate of sam@acme.com?
Because they are different strings. Sigmera compares the cleaned address exactly — after trimming and lowercasing — and does not strip subaddress tags or dots from the local part. Some mail providers route both to the same inbox and others do not, so collapsing them automatically would merge contacts that should stay separate. To merge them yourself, run a find and replace on the email column to remove everything between the plus sign and the @ first, then dedupe.
Does removing duplicate emails delete the whole row?
Yes. When “Remove duplicate emails” is on, the entire row is dropped, not just the repeated address — the first occurrence keeps all of its other fields. That is what you want before a CRM or mailing-list import, where one row is one contact. If you need to deduplicate on a combination of columns rather than the email alone, use the remove-duplicates tool instead.
Does the tool remove role addresses like info@ or sales@?
No. RFC 2142 sets aside names such as info, sales, support, and postmaster for a function rather than a person, and asks that they be recognised regardless of character case. Every one of them is a well-formed address, so the format check passes them and the clean leaves them in place — Sigmera does not classify addresses by what sits in front of the @. If you want them out, trim, lowercase, and dedupe the column first, then sort the cleaned email column in a spreadsheet: with the casing normalised the role addresses group together alphabetically and you can remove the block in one pass.
My export has two email columns. How do I dedupe across both?
Dedupe reads one email column at a time, so collapse the columns first. Decide which address wins per row — usually the work address — and build a single column from the two, then run trim, lowercase, and “Remove duplicate emails” on that column. The join-columns tool will merge two fields into one, and a find and replace clears the separator it leaves behind when only one of the two cells had a value. Running the dedupe twice, once per column, does not work: it only removes rows whose *first* email repeats, and a contact whose work address appears in column A of one row and column B of another survives both passes.
Which duplicate row does Sigmera keep — the first or the newest?
The first occurrence in file order, every time. There is no “keep the most recent” option, because a CSV carries no reliable notion of recency — a created-at column, if the export even has one, may be sorted any way at all. If the newest row is the one you want, sort the file by its date column newest-first in a spreadsheet before you load it, then dedupe: the first occurrence is then the latest one. Check the sort actually applied to the whole sheet and not just the one column, or the dates and the emails end up on different rows.
Will it catch a misspelled domain like gmial.com?
No. A misspelled domain is still a valid address shape — a local part, an @ sign, a domain, and a dot — so it passes the format check and then bounces on send. No syntax check can catch it, and Sigmera never connects to a mail server to look. When you already know which misspelling the file carries, a find and replace on the email column corrects every affected row at once. The ones you do not know about will only show up as bounces in whatever platform you send from.