DEVELOPER & DATA

Email List Cleaner

Tidy an email list in the browser: unwrap "Name <addr>", lower-case domains, dedupe, check syntax (WHATWG rule), split valid from invalid with reasons.

Valid addresses (as lines, comma list or CSV with domain), the invalid ones with the reason, duplicate and domain counts — syntax only, no DNS or mailbox lookup.

Example: 400 lines from a sign-up sheet: 371 valid, 11 duplicates removed, 18 invalid (12 missing a dot in the domain, 4 with a space, 2 with two @ signs), grouped by domain.

v0.1.0 · last reviewed 20 September 2026
Loading the workspace…
BUILT TO BE UNDERSTOOD

Well-formed is not
the same as deliverable.

What the syntax check accepts, how entries are unwrapped and merged, and why no lookup is made.

The check

Entries are split on line breaks, commas, semicolons and tabs; "Name <addr>", mailto: and surrounding quotes are unwrapped. An address passes when it matches the WHATWG "valid e-mail address" pattern (the one browsers use for input type=email), has a dotted domain whose last label is letters, no double dots, a local part of at most 64 characters and at most 254 in all. The domain is lower-cased (domains are case-insensitive); the local part is kept unless you choose to lower it, because RFC 5321 lets a mailbox be case-sensitive.

Dedupe and grouping

Duplicates are detected case-insensitively on the whole address after cleaning, keeping the first occurrence. Domains are counted so a list dominated by one provider is obvious at a glance.

What is not checked

No DNS, MX or mailbox verification: that would send your list to a third party and is unreliable in any case (catch-all domains, greylisting). A syntactically valid address at a dead domain still counts as valid here. Quoted local parts and IP-literal domains, allowed by RFC 5322, are rejected like browsers do. Nothing leaves the browser; the same four anonymous usage counts as the rest of the site apply.

SOURCES

Last reviewed 20 September 2026. How results are checked: How we verify.