Extract Email Addresses From Text
Paste a forwarded thread, a copied web page, or a messy export, and every email address in it comes out as a clean list — deduplicated, optionally sorted, and grouped so you can see which domains dominate. Contact lists deserve more caution than most text, which is why nothing pasted here is ever stored: it is extracted and discarded the moment the response is returned.
Use this without the search next time. Prathom Workbench puts Prathom's tools in your toolbar.
Add to Chrome — freeWhat it does
- Finds addresses inside arbitrary surrounding text
- Case-insensitive deduplication
- Filter to a single domain, and a domain breakdown
- Optional reading of obfuscated forms like name [at] example [dot] com
How to use Extract Emails
- 1
Paste the source
It does not need to be a list. An email thread, a copied contact page, or a CSV with addresses in one column among many all work.
- 2
Check the count
The address and domain totals appear immediately. If the count looks low, the addresses may be obfuscated — turn on the "at / dot" option.
- 3
Narrow if needed
Type a domain to keep only addresses at that domain. Useful for splitting an external list away from internal colleagues.
- 4
Copy in the shape you need
One per line for a spreadsheet, or comma or semicolon separated to paste straight into a mail client's recipient field.
How it works
A single regular expression scans the text for the shape of an address: a local part, an at sign, then a domain of one or more labels ending in a suffix of at least two letters.
The pattern is deliberately narrower than the specification allows. Email's
formal grammar is notoriously permissive — "[email protected]"@ example.com is a legal address — and a pattern that accepted all of it would
match large amounts of ordinary punctuation-heavy text. Narrowing to what
addresses actually look like trades a handful of exotic true positives for a
very large reduction in junk.
After matching, three passes clean the results. Trailing dots are stripped, since an address ending a sentence can otherwise capture the full stop. Addresses are lowercased if the option is on. Deduplication uses a case-insensitive key while preserving the first spelling encountered.
The domain breakdown is a second pass over the results, splitting at the last at sign rather than the first — the local part may legally contain one, and splitting at the wrong place produces a domain that does not exist.
Why obfuscation handling is opt-in
Writing an address as name [at] example [dot] com is a long-standing habit for
avoiding scrapers. Interpreting it is useful when you are reading a page that
does it, and actively harmful otherwise: the word "at" appears constantly in
normal English, and a tool that rewrites every occurrence produces addresses
that were never in the text.
The compromise here is to require a delimiter. Brackets, parentheses, angle brackets, hyphens, and underscores all count as a signal of deliberate obfuscation; a bare "at" between two words does not. That keeps the feature useful without it corrupting ordinary prose, and it is off by default so it cannot surprise you.
When you'd use this
Recovering a distribution list from a forwarded thread, where the addresses are buried in headers you do not want. Pulling contacts out of a copied directory page. Splitting a mixed export by domain to separate customers from colleagues. Auditing which domains dominate a list before importing it anywhere.
The domain breakdown is often the most immediately useful part. A list that turns out to be sixty percent one domain is usually one company rather than a market, and that is worth knowing before you build a campaign on it.
Examples
Pulling addresses out of a forwarded thread
The angle brackets, the comma separation, and the full stop after the last address are all discarded correctly. Bob appears twice with different capitalisation and is counted once, because the domain part of an address is case-insensitive and in practice mail providers treat the whole thing that way.
Reading a deliberately obfuscated address
Only the bracketed markers are interpreted. The ordinary "at" in "Reach me at jane" is left alone — matching that too would produce the nonsense address me@jane, which is exactly the failure mode most naive extractors have.
Frequently asked questions
Will it find every valid email address?
Not every theoretically valid one. The formal specification permits quoted local parts with spaces, parenthesised comments inside the address, and domains with no dot at all. Those are legal and essentially never used, and matching them would drag in enormous numbers of false positives from ordinary prose. The pattern here targets addresses as they actually occur.
Does finding an address mean it works?
No. This tool answers "does this look like an email address", which is a question about shape, not existence. The address may be misspelled, long since closed, or a spam trap. Nothing short of sending mail to it — or a dedicated verification service — can tell you whether it is deliverable.
Why does it lowercase addresses by default?
Because that is what mail systems do. The domain part is defined as case-insensitive, and although the local part technically is not, no major provider treats Bob@ and bob@ as different mailboxes. Lowercasing makes deduplication reliable. Turn it off if you are preserving addresses exactly as they were written for a record.
What does the plus sign in an address mean?
It is a sub-address, supported by most large providers: mail sent to [email protected] arrives in [email protected]'s inbox, tagged. They are kept intact here because they are real, distinct addresses and stripping the tag could merge two entries that a recipient deliberately keeps apart.
Is it safe to paste a client list here?
The list is sent over an encrypted connection to be extracted, and what matters is what happens after: nothing is written to disk, logged, or retrievable once the response comes back. There is no file, no database row, and no retention window to worry about — the text exists only for the moment it takes to pull the addresses out. Whether your own organization's policy permits pasting client data into any external tool, including this one, is a separate question worth checking regardless of what any tool promises.
Further reading
- The Invisible Characters That Break Your SpreadsheetTwo cells look identical, and the lookup returns nothing. A search for a name that is visibly right on screen finds no match. Both have the same cause: a character with no width sitting inside the text, put there by a word processor or a web page, doing nothing except making two strings unequal.
- How to Extract Email Addresses From TextPulling addresses out of a thread or an export is a five-second job with the right tool and a surprisingly deep rabbit hole if you try to do it properly with a regular expression. The specification for what counts as a valid address is much stranger than anyone expects.