# Email List Cleanup Plan — 4,200 Addresses for Mailchimp Upload
## 1. Detected Issues to Address
1. **Whitespace** — leading/trailing spaces and internal spaces from copy-paste
2. **Mixed capitalization** — Mailchimp treats emails case-insensitively, but duplicates like `John@X.com` vs `john@x.com` will slip through
3. **Duplicates** — exact and case-variant repeats
4. **Malformed syntax** — missing `@`, missing `.`, multiple `@`, trailing dots, invalid characters
5. **Fake/test domains** — `test@test`, `@example.com`, `@test.com`, `@localhost`, `noreply@`, `@mailinator.com`
6. **Role-based addresses** — `info@`, `admin@`, `support@`, `sales@`, `postmaster@` (Mailchimp discourages these; high abuse-rate risk)
7. **Top-level domain (TLD) issues** — single-character TLDs, missing TLD entirely
8. **Blank cells**
---
## 2. Formulas to Fix Each Issue
Set up helper columns B through H next to your data in column A.
### B — Clean Whitespace & Lowercase
```excel
=LOWER(TRIM(SUBSTITUTE(A2," ","")))
```
Removes all spaces (internal + edge) and normalizes to lowercase.
### C — Basic Syntax Validation
```excel
=IF(AND(ISNUMBER(FIND("@",B2)),ISNUMBER(FIND(".",MID(B2,FIND("@",B2),100))),LEN(B2)-LEN(SUBSTITUTE(B2,"@",""))=1,LEN(B2)>=6),"Valid","Invalid")
```
Confirms exactly one `@`, a `.` after the `@`, and a reasonable length.
### D — Flag Fake/Test Domains
```excel
=IF(SUMPRODUCT(--ISNUMBER(SEARCH({"@test.","@example.","@localhost","@mailinator.","@tempmail.","@fakeinbox.","test@test"},B2)))>0,"Fake","OK")
```
Searches for common throwaway and placeholder domains.
### E — Flag Role-Based Addresses
```excel
=IF(SUMPRODUCT(--ISNUMBER(SEARCH({"info@","admin@","support@","sales@","noreply@","no-reply@","postmaster@","webmaster@","contact@","hello@","abuse@"},B2&"|")))>0,"Role","OK")
```
Flags generic inbox addresses that hurt deliverability.
### F — Flag Duplicates (case-insensitive, since B is already lowercased)
```excel
=IF(COUNTIF($B$2:B2,B2)>1,"Duplicate","Unique")
```
Marks second and later occurrences as duplicates; first stays unique.
### G — TLD Sanity Check
```excel
=IF(LEN(TRIM(MID(B2,FIND("@",B2)+1,100)))-LEN(SUBSTITUTE(MID(B2,FIND("@",B2)+1,100),".",""))>=1,IF(LEN(TRIM(RIGHT(B2,LEN(B2)-FIND(".",B2,FIND("@",B2)))))>=2,"OK","BadTLD"),"BadTLD")
```
Ensures the TLD after the final dot is at least 2 characters.
### H — Master Keep/Remove Decision
```excel
=IF(AND(C2="Valid",D2="OK",E2="OK",F2="Unique",G2="OK"),"KEEP","REMOVE")
```
Combines all checks into a single verdict.
---
## 3. Step-by-Step Cleaning Workflow
1. **Back up** the file — save a copy as `emails_original.xlsx`.
2. **Insert headers** in row 1 (B: Clean, C: Syntax, D: FakeDomain, E: RoleBased, F: DupCheck, G: TLD, H: Verdict).
3. **Paste formulas** above into row 2 of columns B–H.
4. **Fill down** all formulas through row 4201 (double-click the fill handle or select range and Ctrl+D).
5. **Convert B:H to values** — Select B2:H4201 → Copy → Paste Special → Values (prevents formula drift when sorting).
6. **Apply AutoFilter** on row 1 (Data → Filter).
7. **Filter column H = "REMOVE"** and review flagged rows to catch any false positives before deleting.
8. **Delete** all REMOVE rows, or copy KEEP rows to a new sheet.
9. **Sort column B A→Z** and visually scan for any remaining oddities (odd TLDs, unusual characters).
10. **Export the cleaned column B** as CSV for Mailchimp import.
---
## 4. Final Validation Formula
Place this in any empty cell (e.g., J1) after cleanup to confirm the list is clean:
```excel
=IF(AND(COUNTIF(B2:B4201,"")=0,SUMPRODUCT(--(COUNTIF(B2:B4201,B2:B4201)>1))=0,COUNTIF(H2:H4201,"REMOVE")=0),"✅ LIST CLEAN — READY FOR MAILCHIMP","❌ ISSUES REMAIN")
```
Returns a green-light message only if there are zero blanks, zero duplicates, and zero REMOVE verdicts.
### Optional one-cell summary dashboard (J2:J5)
```excel
=COUNTA(B2:B4201) // Total remaining
=SUMPRODUCT(--(COUNTIF(B2:B4201,B2:B4201)>1)) // Duplicate count
=COUNTIF(H2:H4201,"REMOVE") // Flagged for removal
=COUNTIF(H2:
Validate and Clean Email Address Columns in Excel
Tested prompts for clean and validate email list in excel compared across 5 leading AI models.
You have a spreadsheet of email addresses. Maybe it's a signup export, a CRM dump, or a list you bought or scraped. Before you send anything to it, you need to know which addresses are actually valid, which have typos, which are duplicates, and which are junk like 'test@test.com' or 'noreply@company.com'. Sending to a dirty list tanks your sender reputation and wastes budget on email verification APIs.
Excel alone can get you most of the way there. Between formulas, conditional formatting, and a few AI-assisted prompts, you can flag syntax errors, strip whitespace, normalize case, spot duplicates, detect role-based addresses, and catch common domain typos like 'gmial.com' or 'yaho.com'. This page shows you the exact prompts and formulas to do it, plus what each approach catches and misses.
The goal here is preparation, not deliverability verification. Excel can tell you an address looks valid. It cannot ping the mail server. Use this as step one before running a smaller, cleaner list through an MX or SMTP validator.
When to use this
This workflow fits when you have a list in Excel or CSV and need to clean it yourself before handing it to a verification service, a marketing tool, or an outreach platform. It is ideal for small-to-medium lists where you want control over what gets removed and why, and where paying per-record verification on dirty data would be wasteful.
- Preparing a newsletter list before importing to Mailchimp, HubSpot, or Klaviyo
- Auditing a purchased or scraped lead list for syntax errors and junk
- Merging multiple export files with inconsistent casing, spacing, or duplicates
- Cleaning a CRM export before a re-engagement or cold outreach campaign
- Preprocessing before sending to ZeroBounce, NeverBounce, or Kickbox to reduce cost
When this format breaks down
- You need to confirm the mailbox actually exists. Excel cannot do SMTP or MX lookups. Use a verification API.
- The list has hundreds of thousands of rows. Excel formulas get slow past ~100k rows. Move to Python, SQL, or a dedicated tool.
- You need to detect catch-all domains, disposable email providers, or spam traps. That requires an external database.
- Your data has complex nested formats or multiple emails per cell with mixed delimiters. Clean the structure first, then validate.
The prompt we tested
You are an Excel data quality expert specializing in cleaning and validating email address lists. Analyze the user's email data below and return a structured cleanup plan with specific Excel formulas, steps, and identified issues.
Instructions: Format the response with clear numbered sections and use Excel formula code blocks (e.g., =TRIM(A2), =IF(ISNUMBER(MATCH("*@*.?*",A2,0)),"Valid","Invalid")). Keep explanations concise — one sentence per formula explaining what it does. Assume emails are in column A starting at row 2 unless the user specifies otherwise.
Email data / situation:
I have a spreadsheet with about 4,200 email addresses in column A that I exported from our CRM. Some have extra spaces, mixed capitalization, duplicates, and I suspect a bunch are malformed (missing @ signs or fake domains like test@test). I need to clean this before uploading to Mailchimp.
Provide: (1) a list of detected issues (duplicates, invalid syntax, whitespace, wrong domains, role-based addresses), (2) exact Excel formulas to fix each issue with cell references, (3) step-by-step cleaning workflow, and (4) a final validation formula to confirm the list is clean.
Model comparison
| Model | Quality | Cost | Latency | Tokens |
|---|---|---|---|---|
| Claude Opus 4.7 | 9 | $0.1600 | 29.4s | 429 / 2048 |
| Claude Haiku 4.5 | 9 | $0.0105 | 14.1s | 291 / 2048 |
| GPT-5.4 | Not run yet | |||
| Gemini 2.5 Pro | Not run yet | |||
| Grok 4.1 Fast Reasoning | 8 | $0.0005 | 15.6s | 400 / 805 |
Outputs
# Email Data Quality Cleanup Plan
## 1. DETECTED ISSUES
Based on your dataset characteristics, here are the primary issues to address:
| Issue | Impact | Priority |
|-------|--------|----------|
| Leading/trailing whitespace | Causes validation failures | **CRITICAL** |
| Mixed capitalization | Causes deliverability issues | **HIGH** |
| Duplicate entries | Inflates list size, causes bounces | **HIGH** |
| Missing @ symbol | Invalid syntax | **CRITICAL** |
| Fake/test domains (test@test, example@example) | Will bounce, damages reputation | **HIGH** |
| Role-based addresses (noreply@, admin@, info@) | Low engagement, optional flag | **MEDIUM** |
| Multiple @ symbols | Invalid syntax | **CRITICAL** |
| Missing domain extension (.com, .org, etc.) | Invalid syntax | **CRITICAL** |
---
## 2. EXACT EXCEL FORMULAS WITH CELL REFERENCES
### **Step 1: Remove Whitespace**
```excel
=TRIM(A2)
```
Removes leading, trailing, and excess internal spaces from email addresses.
---
### **Step 2: Convert to Lowercase**
```excel
=LOWER(B2)
```
Standardizes capitalization for consistency and deduplication accuracy.
---
### **Step 3: Detect Duplicate Emails**
```excel
=COUNTIF($C$2:$C2,C2)
```
Place in column D; returns 1 for first occurrence, 2+ for duplicates—filter to keep only "1".
---
### **Step 4: Check for Missing @ Symbol**
```excel
=IF(ISERROR(FIND("@",C2)),"INVALID: No @","OK")
```
Returns error flag if @ symbol is absent.
---
### **Step 5: Check for Multiple @ Symbols**
```excel
=IF(LEN(C2)-LEN(SUBSTITUTE(C2,"@",""))>1,"INVALID: Multiple @","OK")
```
Flags addresses with more than one @ symbol.
---
### **Step 6: Validate Basic Email Syntax**
```excel
=IF(AND(ISERROR(FIND("@",C2))=FALSE,LEN(C2)-LEN(SUBSTITUTE(C2,"@",""))=1,ISERROR(FIND(".",C2,FIND("@",C2)))=FALSE,LEN(C2)-LEN(SUBSTITUTE(C2,".",""))>=1),"VALID","INVALID: Syntax Error")
```
Comprehensive check: ensures @ exists, only one @ present, domain has at least one dot, and overall structure is sound.
---
### **Step 7: Identify Suspicious/Fake Domains**
```excel
=IF(OR(ISNUMBER(SEARCH("test@test",C2)),ISNUMBER(SEARCH("example@example",C2)),ISNUMBER(SEARCH("@test.",C2)),ISNUMBER(SEARCH("@example.",C2)),ISNUMBER(SEARCH("localhost",C2))),"SUSPICIOUS: Fake Domain","OK")
```
Flags common test/fake domain patterns.
---
### **Step 8: Flag Role-Based/Noreply Addresses (Optional)**
```excel
=IF(OR(ISNUMBER(SEARCH("noreply@",C2)),ISNUMBER(SEARCH("no-reply@",C2)),ISNUMBER(SEARCH("admin@",C2)),ISNUMBER(SEARCH("info@",C2)),ISNUMBER(SEARCH("support@",C2)),ISNUMBER(SEARCH("contact@",C2))),"ROLE-BASED","PERSONAL")
```
Labels role-based emails for optional manual review or removal.
---
### **Step 9: Domain Extension Validation**
```excel
=IF(ISERROR(FIND(".",C2,FIND("@",C2)+1)),"INVALID: No Extension","OK")
```
Ensures domain has at least one dot (checks for .com, .org, etc. after @).
---
### **Step 10: Final Validation Status (All Checks Combined)**
```excel
=IF(AND(NOT(ISERROR(FIND("@",C2))),LEN(C2)-LEN(SUBSTITUTE(C2,"@",""))=1,NOT(ISERROR(FIND(".",C2,FIND("@",C2)+1))),D2=1,NOT(OR(ISNUMBER(SEARCH("test@test",C2)),ISNUMBER(SEARCH("example@example",C2)),ISNUMBER(SEARCH("localhost",C2))))),"✓ CLEAN","✗ INVALID")
```
Returns ✓ CLEAN only if email passes all checks and is not a duplicate.
---
## 3. STEP-BY-STEP CLEANING WORKFLOW
### **Phase 1: Data Preparation (Columns A–F)**
**Step 1.1:** Copy original emails to preserve source data
- Select Column A (A2:A4201)
- Copy → Paste Special (Values) into Column A backup
**Step 1.2:** Create working copy—apply TRIM formula
- Click cell B2
- Enter: `=TRIM(A2)`
- Press Ctrl+Shift+End to fill down to last row
- Copy B2:B4201 → Paste Special (Values) back into Column B
**Step 1.3:** Convert to lowercase—apply LOWER formula
- Click cell C2
- Enter: `=LOWER(B2)`
- Fill down to C4201
- Copy C2:C4201 → Paste Special (Values) into Column C
**Step 1.4:** Flag duplicates—apply COUNTIF formula
- Click cell D2
- Enter: `=COUNTIF($C$2:$C2,C2)`
- Fill down to D4201
- **Filter Column D: Keep only "1" values** (removes duplicates)
---
### **Phase 2: Validation (Columns E–J)**
**Step 2.1:** Check for missing @ symbol
- Click cell E2
- Enter: `=IF(ISERROR(FIND("@",C2)),"INVALID: No @","OK")`
- Fill down to E4201
**Step 2.2:** Check for multiple @ symbols
- Click cell F2
- Enter: `=IF(LEN(C2)-LEN(SUBSTITUTE(C2,"@",""))>1,"INVALID: Multiple @","OK")`
- Fill down to F4201
**Step 2.3:** Validate basic syntax (comprehensive)
- Click cell G2
- Enter: `=IF(AND(ISERROR(FIND("@",C2))=FALSE,LEN(C2)-LEN(SUBSTITUTE(C2,"@",""))=1,ISERROR(FIND(".",C2,FIND("@",C2)))=FALSE,LEN(C2)-LEN(SUBSTITUTE(C2,".",""))>=1),"VALID","INVALID: Syntax Error")`
- Fill down to G4201
**Step 2.4:** Check for fake domains
- Click cell H2
- Enter: `=IF(OR(ISNUMBER(SEARCH("test@test",C2)),ISNUMBER(SEARCH("example@example",C2)),ISNUMBER(SEARCH("@test.",C2)),ISNUMBER(SEARCH("@example.",C2)),ISNUMBER(SEARCH("localhost",C2))),"SUSPICIOUS: Fake Domain","OK")`
- Fill down to H4201
**Step 2.5:** Flag role-based addresses (optional)
- Click cell I2
- Enter: `=IF(OR(ISNUMBER(SEARCH("noreply@",C2)),ISNUMBER(SEARCH("no-reply@",C2)),ISNUMBER(SEARCH("admin@",C2)),ISNUMBER(SEARCH("info@",C2)),ISNUMBER(SEARCH("support@",C2))),"ROLE-BASED","PERSONAL")`
- Fill down to I4201
**Step 2.6:** Domain extension check
- Click cell J2
- Enter: `=IF(ISERROR(FIND(".",C2,FIND("@",C2)+1)),"INVALID: No Extension","OK")`
- Fill down to J4201
---
### **Phase 3: Final Validation & Export**
**Step 3.1:**
### 1. Detected Issues
- **Whitespace**: Extra spaces before/after emails or within parts (e.g., " test @ example.com ").
- **Inconsistent capitalization**: Mixed case (e.g., "Test@Example.COM").
- **Duplicates**: Repeated emails across the list.
- **Invalid syntax**: Missing @ symbol, no domain TLD (e.g., "test@test"), multiple @, or malformed structure.
- **Wrong/fake domains**: Suspicious domains like "test", no TLD (e.g., test@test), or disposable (flagged via common patterns).
- **Role-based addresses**: Generic like info@, sales@, admin@ (often low-value for marketing).
### 2. Formulas to Fix Each Issue
Insert new columns (B for cleaned, C for duplicates, D for validity, E for role-based flag) next to column A.
**Whitespace and capitalization** (Column B):
```
=TRIM(LOWER(A2))
```
Trims leading/trailing/multiple spaces and converts to lowercase for consistency.
**Duplicates** (Column C, flags if >1 occurrence):
```
=IF(COUNTIF($A$2:$A$4201,A2)>1,"Duplicate","Unique")
```
Counts occurrences in A2:A4201; marks as "Duplicate" if repeated (case-sensitive; run after cleaning A first).
**Invalid syntax** (Column D):
```
=IF(AND(ISNUMBER(SEARCH("@",A2))=TRUE,ISERROR(SEARCH("@@",A2)),ISNUMBER(SEARCH(".",A2,SEARCH("@",A2)+1)),RIGHT(A2,4)<>".con"),"Valid","Invalid")
```
Checks for exactly one @, a dot after @ (TLD), and not fake short TLD like .con; flags malformed.
**Wrong/fake domains** (Column E, post-cleaning check on B):
```
=IF(OR(SEARCH("test@",B2)>0,SEARCH(".test",B2)>0,SEARCH("example@",B2)>0),"Fake","OK")
```
Flags common fakes like test@ or example@; expand OR conditions for more (e.g., disposable lists).
**Role-based** (Column F):
```
=IF(OR(SEARCH("info@",B2)>0,SEARCH("sales@",B2)>0,SEARCH("admin@",B2)>0,SEARCH("support@",B2)>0),"Role-based","Personal")
```
Flags common role keywords before @; customize list as needed.
### 3. Step-by-Step Cleaning Workflow
1. **Prep**: Insert columns B:F; paste formulas from section 2 into row 2 and drag down to row 4201.
2. **Clean basics**: Copy column B (trimmed/lowercase), paste special > Values into column A (overwrites originals).
3. **Remove duplicates**: Select A:A > Data tab > Remove Duplicates (checks cleaned A).
4. **Filter invalids**: Apply filters (Data > Filter); filter column D="Invalid", delete rows or copy valids to new sheet.
5. **Flag extras**: Filter E="Fake" or F="Role-based"; review/delete as needed (e.g., delete role-based for Mailchimp).
6. **Final paste**: Copy cleaned A:A > new sheet > paste special > Values.
7. **Count summary**: Use =COUNTA(A2:A4201) before/after to track reduction (expect 10-30% drop).
### 4. Final Validation Formula
Paste into column G (post-cleaning); all must say "Clean" for upload-ready.
```
=IF(AND(C2="Unique",D2="Valid",E2="OK",F2="Personal"),"Clean","Fix")
```
Confirms no duplicates, valid syntax, no fakes/role-based; TRUE for 100% clean row. Average with =COUNTIF(G:G,"Clean")/COUNTA(G:G).
What makes these work
-
01Normalize before you validate
Always run =LOWER(TRIM(A2)) into a helper column first. Half the 'duplicates' and 'invalid' flags in dirty lists come from trailing spaces and mixed case. Validate against the cleaned column, not the original.
-
02Use regex for syntax, not IF chains
A single regex pattern like ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ catches 95% of syntax errors. Excel 365 supports this through LAMBDA or you can use Power Query's Text.Matches. Cleaner than stacking SEARCH and ISNUMBER.
-
03Separate syntax valid from deliverable
Use two columns: Syntax_Valid (TRUE/FALSE from regex) and Deliverable (unknown until you verify). This prevents the false confidence that regex-passing addresses are good. 'bob@gmail.com' passes regex but may not exist.
-
04Build a typo correction lookup
Create a small table of common typos (gmial.com -> gmail.com, yaho.com -> yahoo.com, hotnail.com -> hotmail.com). Use VLOOKUP or XLOOKUP against the domain portion to suggest corrections rather than just flagging errors.
More example scenarios
Column A has 4,200 email addresses from a WordPress signup form. Sample rows: ' Jane.Doe@Gmail.Com ', 'mike@gmial.com', 'support@acme.co', 'test@test.com', 'hello@@example.com'. Clean these: trim whitespace, lowercase everything, flag obvious typos in popular domains, flag role-based addresses, and mark syntax errors.
Add columns: Cleaned (=LOWER(TRIM(A2))), Syntax_Valid (regex for one @ and valid TLD), Role_Based (flags support@, info@, admin@, noreply@), Likely_Typo (flags gmial.com, yaho.com, hotnail.com, outlok.com), Junk (flags test@, example.com). Result: 3,847 rows pass all checks, 218 typos to review, 94 role-based, 41 junk.
2,100 B2B contacts scraped from LinkedIn exports. Many have formats like 'john.smith@' (missing domain), 'j.smith@company' (missing TLD), or 'john smith@company.com' (space in local part). I need one column marking Valid / Invalid / Needs Review with the reason.
Produce a Status column with values: Valid (passes regex), Invalid-MissingDomain, Invalid-MissingTLD, Invalid-SpaceInLocal, Invalid-MultipleAt, NeedsReview-UnusualTLD. Use nested IF with REGEXMATCH. Expected breakdown: 1,680 Valid, 290 Invalid split across reason codes, 130 NeedsReview for .io, .ai, .xyz domains worth keeping.
Three CSVs from Salesforce, HubSpot, and an old Mailchimp export. Combined ~18,000 rows. Same person appears as 'John@acme.com', 'john@acme.com', and 'JOHN@ACME.COM'. I need a deduplicated list that keeps the most recent record per unique email.
Step 1: normalize with =LOWER(TRIM(A2)) in a helper column. Step 2: sort by Last_Modified descending. Step 3: use Remove Duplicates on the normalized column, or =COUNTIF($B$2:B2,B2)=1 to flag first occurrences. Result: 18,000 rows reduced to 12,400 unique normalized addresses, keeping the newest record per match.
6,500 emails for a paid ad retargeting audience upload. Platform rejects role-based addresses and I want to strip disposable domains. Sample: 'info@company.com', 'user@mailinator.com', 'contact@tempmail.org', 'real.person@company.com'.
Add Role_Based column flagging these local parts: info, support, admin, contact, sales, hello, noreply, postmaster, webmaster. Add Disposable column flagging known domains: mailinator.com, tempmail.org, guerrillamail.com, 10minutemail.com, yopmail.com. Filter to rows where both columns are FALSE. Result: 6,500 down to 5,180 usable addresses.
Common mistakes to avoid
-
Trusting regex as deliverability proof
A syntactically valid address is not a real mailbox. Regex will pass 'fake@gmail.com' every time. Always follow Excel cleaning with an actual verification step before high-volume sending.
-
Deduping on the raw column
If you run Remove Duplicates on the original column without normalizing, 'John@acme.com' and 'john@acme.com' survive as separate rows. Always dedupe on the LOWER(TRIM()) version.
-
Deleting role-based addresses blindly
For B2B outreach, addresses like sales@ or contact@ may be your actual target. Flag them in a column instead of removing them so you can decide per campaign.
-
Ignoring the TLD length check
Some people validate @something.x as valid. TLDs are at least two characters. Also, do not hardcode against only .com, .net, .org. Modern TLDs include .io, .ai, .dev, .co, and hundreds more.
-
Processing 200k rows with volatile formulas
Functions like OFFSET, INDIRECT, and some array formulas recalculate constantly and will freeze Excel on large lists. Use Power Query for anything over 50k rows, or convert formulas to values once computed.
Related queries
Frequently asked questions
What Excel formula validates an email address?
The simplest check is =AND(ISNUMBER(SEARCH("@",A2)), ISNUMBER(SEARCH(".",A2)), LEN(A2)-LEN(SUBSTITUTE(A2,"@",""))=1). For stricter validation use Excel 365's REGEXMATCH with the pattern ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$. This catches missing @, multiple @, missing TLD, and invalid characters.
How do I remove duplicate emails in Excel?
First create a helper column with =LOWER(TRIM(A2)) to normalize case and whitespace. Then select that column and go to Data > Remove Duplicates. This catches variations like 'Bob@Site.com' and 'bob@site.com ' that the raw Remove Duplicates would keep as separate entries.
Can Excel verify if an email actually exists?
No. Excel cannot make network requests to mail servers to check if a mailbox is real. It can only check format and syntax. For actual existence verification you need an SMTP or MX-based service like ZeroBounce, NeverBounce, Kickbox, or an API called from Power Automate.
How do I find misspelled email domains like gmial.com?
Extract the domain with =MID(A2,FIND("@",A2)+1,100) into a column. Build a lookup table of known typos mapped to corrections (gmial.com to gmail.com, yaho.com to yahoo.com). Use XLOOKUP to flag matches, then review flagged rows manually before overwriting.
What counts as a role-based email address?
Role-based addresses are tied to a function rather than a person: info@, support@, admin@, sales@, contact@, hello@, noreply@, postmaster@, webmaster@, abuse@. Most email marketing platforms discourage sending to these because response rates are low and spam complaint rates are high.
How large a list can I clean in Excel before it breaks?
Excel handles up to 1,048,576 rows but performance degrades heavily past 100,000 rows with active formulas. For lists over 50k rows, use Power Query instead of worksheet formulas. Past 500k rows, move to Python with pandas or a dedicated data tool.