Email List Cleaning Skill

Drop in a Mailchimp, Klaviyo, HubSpot or Shopify export and get a clean CSV ready to import, plus a removed list where every row says why it was removed.

Email List Cleaning Skill cover

What it does

Clean an email list on your own machine before you send or import it. Every removal gets a reason. Works as a Claude Code plugin (skill email-list-cleaning) or as a plain command-line tool. Python 3.9+, no dependencies, no account, and the list never leaves your computer.

What you get

The screenshot is real output from the kit’s own commands. Tested from a fresh download of this exact zip: ./run_tests.sh ran 15 tests OK on Python 3.13 and 3.10.

Real terminal output from Email List Cleaning Skill: demo and passing tests

Quick start

python3 -m emailclean clean subscribers.csv --out cleaned/ --suppress unsubscribes.csv --suppress bounces.csv
./demo.sh        # runs the bundled example
./run_tests.sh   # 15 tests

In Claude Code: install the plugin, then ask "clean subscribers.csv and drop everyone in unsubscribes.csv".

What it checks

FlagGoes toWhat it means
invalidremoved.csvblank, no @, two @, spaces, bad dots, no domain dot, bad TLD, local part over 64 characters or address over 254
duplicateremoved.csvsame address again (domain and local part compared case-insensitively; first row kept)
suppressedremoved.csvon any --suppress file (CSV with an email column, or one address per line)
disposableremoved.csvdomain or parent domain is on the bundled list of 10,181 throwaway domains
no_mail_domainremoved.csvonly with --mx: domain has no MX and no A record
typoreview.csvknown misspellings (gmial.com, hotmial.com, yahoo.con...). --fix-typos corrects them
rolereview.csvinfo@, sales@, noreply@ and similar. --allow-role keeps them
possible_duplicatereview.csvGmail dot or +tag variant of an earlier row. --gmail-aliases removes them
mx_errorreview.csvonly with --mx: the DNS lookup failed (never removed for that alone)

Output: clean.csv (your original columns, same delimiter), review.csv and removed.csv (plus clean_status, clean_flags, clean_note), and summary.json.

Reads comma, semicolon, tab or pipe CSV, with or without a BOM. Finds the email column automatically ("Email Address", "E-mail", "email"...), or use --column. It also strips mailto: and <>, and keeps international domains like münchen.de as written (checks use punycode).

Other commands

  • python3 -m emailclean check a@b.com info@x.io: checks a few addresses.
  • python3 -m emailclean update-disposable: refreshes the disposable list from the upstream CC0 project (disposable-email-domains (https://github.com/disposable-email-domains/disposable-email-domains)). --from file.txt uses your own list instead. It refuses lists under 1,000 domains.
  • --disposable-list mine.txt: uses your own list for one run.

Honest limits

  • It doesn't send email and doesn't check mailboxes over SMTP, so it can't prove an address exists. It removes what can be found without contacting anyone. A clean result is not a deliverability guarantee.
  • The typo list only covers common consumer providers. Unknown business domains are never "corrected".
  • Duplicates match local parts case-insensitively, which is how real providers behave even though the standard allows case-sensitive mailboxes.
  • Follow the consent and unsubscribe rules that apply to you. This tool only helps you honor suppression lists.

Format and license

Zip, 73 KB, v1.0, 16 files. You may use and modify this kit for your own work and for clients you serve, including paid client work. Not affiliated with or endorsed by Mailchimp, Klaviyo, HubSpot or Shopify.

FAQ

Does it verify mailboxes?
No. It does no SMTP probing; it removes invalid, duplicate, disposable and suppressed addresses and optionally checks MX records.
Is my list uploaded?
No, everything runs locally.
Which tools' exports work?
Any CSV: Mailchimp, Klaviyo, HubSpot, Shopify, Google Sheets downloads.
How do I get the files?
Right after payment, Stripe’s confirmation page shows your download link.
Refunds?
Email hello@youraitools.co within 14 days if it doesn’t work and we can’t fix it.
Can I pay with crypto?
Yes. Pay the same price in USDC or USDT on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana from the "Pay with crypto" button, with no account or KYC. We check the payment on-chain and show your download links as soon as it confirms.

Get Email List Cleaning Skill

Clean an email list offline: typos, duplicates, disposable domains, role addresses, unsubscribe/bounce suppression and optional MX checks. Reason per row, no per-email fees.

Pairs well with

Download$19

CRM Duplicate Cleanup Skill

Find HubSpot and Salesforce duplicate contacts and companies from a CSV export: emails, Gmail aliases, phones, nicknames, Inc/LLC names. Master record, filled blanks, merge files.

View CRM Duplicate Cleanup Skill
Download$19

301 Redirect Mapper Skill

Map old URLs to new ones for a site migration, collapse redirect chains, catch loops, and export 301 rules for Apache, Nginx, Netlify, Vercel, Cloudflare and Shopify.

View 301 Redirect Mapper Skill
Download$29

Amazon Settlement Reconciliation Skill

Reconcile Amazon settlement reports (Flat File V2) to bank payouts offline: rows checked against total-amount, balanced journal, profit per SKU, gap and duplicate checks.

View Amazon Settlement Reconciliation Skill

Related