Email Extractor
Pull every email address out of any text.
About the Email Extractor
What is an email extractor?
An email extractor reads a block of text and hands you back just the email addresses in it. The text can be anything: a pasted web page, a CSV column, a forwarded thread with fifty people on it, or the raw HTML of a contact page. Doing that by hand is slow and you always miss one.
The part most tools get wrong is the edges. A plus tag like jane+invoices@work.com gets chopped in half, a sentence-ending period gets glued onto the end, and things that merely look like addresses (image@2x.png, a version number, a Twitter handle) end up in the list. We rebuilt this one around those cases. Every candidate is checked against the real rules for a local part and a domain, and the domain ending is matched against the full list of 1,438 registered endings, so a filename never gets mistaken for an address.
How to Use This Tool
- Paste your text. Anything goes: prose, HTML, JSON, a spreadsheet column. You can also open a
.txt,.csvor.htmlfile. - Read the domain chips. The strip under the boxes lists the domains found and how many addresses each one has. Click one to narrow the output to just that domain.
- Tune the list. Drop duplicates, force lowercase, keep only certain domains, or skip role mailboxes and free providers.
- Pick a format. One per line, comma separated, CSV, JSON, a Markdown list, or a ready-made
mailto:link. - Copy or download. TXT for a plain list, CSV for a spreadsheet with the local part and domain split out.
Example
With the default options (duplicates removed, hidden addresses decoded, real domain endings only), this messy block of text will be converted to a clean list:
Jane Smith <jane.smith@work.net>
Billing: test.user+invoices@gmail.co.uk
sarah [at] agency [dot] com
Logo file: image@2x.png
Repeat: JANE.SMITH@work.net
jane.smith@work.net
test.user+invoices@gmail.co.uk
sarah@agency.com
Notice what happened at the edges. The angle brackets came off, the +invoices tag survived, the [at] address was decoded, image@2x.png was skipped because png is a file extension, and the repeat was matched case-insensitively. Switch Output format to CSV and the same text is converted to a spreadsheet with email, local and domain columns.
Reading the domain strip
The strip between the two boxes is the quickest way to understand a list you did not write. It shows every domain with a count, biggest first, so a thread that looks like forty contacts might really be thirty-one at one company and nine everywhere else. Click a domain to filter the output to it, click again to clear. When something gets skipped, the strip also offers to show you exactly what was dropped and why, which is the check that stops a silent mistake from reaching your spreadsheet.
What counts as an address
| In the text | Result | Why |
|---|---|---|
bob@example.com. | bob@example.com | Sentence period trimmed |
<jane@work.net> | jane@work.net | Angle brackets trimmed |
jane+invoices@work.com | jane+invoices@work.com | Plus tags are valid |
sarah [at] agency [dot] com | sarah@agency.com | Obfuscation decoded |
mark@studio.dev | mark@studio.dev | HTML entity decoded |
mailto:press@news.org | press@news.org | mailto: prefix removed |
image@2x.png | skipped | png is a file extension |
a..b@example.com | skipped | Two dots in a row |
x@y.notarealtld | skipped | Not a registered ending |
@codeshack | skipped | No domain, just a handle |
Common Use Cases
Pulling addresses out of a pile of text is usually one step in a bigger job. These are the ones we hear about most:
- Building a contact list: Turn a directory page or a conference attendee list into something you can import.
- Cleaning a forwarded thread: Get the recipients out of a long reply chain without retyping them.
- Auditing a website: Paste the page source and see which addresses are exposed to scrapers, and on which domains.
- Parsing logs and exports: Pick addresses out of server logs, JSON dumps or a CSV with inconsistent columns.
- Migrating data: Split a messy column into a clean, deduplicated list before it goes near a database.
- Sales research: Keep one company's domain and drop the free mailboxes in a single pass.
Working with links rather than addresses? The URL Link Extractor does the same job for URLs. Once you have your list, the Mailto Link Generator turns it into a clickable link, and the Remove Duplicate Lines tool helps when you are merging several lists together.
Frequently Asked Questions
How do I extract email addresses from text?
Paste the text into the left box. The addresses appear on the right as you type, already deduplicated. Nothing else is needed for a normal list, and you can copy or download the result straight away.
Does it keep plus tags like jane+news@work.com?
Yes, in full. Plus addressing is valid and it is the piece most extractors quietly cut off, which leaves you with a broken address that still looks plausible. The same goes for dots, hyphens, apostrophes and the other characters a local part is allowed to contain.
Can it find addresses written as name [at] domain [dot] com?
Yes. Bracketed forms like [at], (at), [dot] and (dot), spelled-out AT and DOT in capitals, HTML entities and percent-encoded @ signs are all decoded before the scan. Turn off Decode hidden addresses if you would rather see only literal addresses. Lowercase prose such as meet me at the office is deliberately left alone, since treating that as an address produces nonsense.
Why did it skip something that looks like an email?
Because it failed a rule, and the strip under the boxes will tell you which one. Common causes are a file name such as image@2x.png, two dots in a row, a domain with no dot, or an ending that is not a registered top-level domain. Switch off Real domain endings only if you are working with an internal domain that is not public.
How many email addresses can it handle?
Large lists are fine. Everything runs locally, so the limit is your own machine rather than a server quota, and a document with tens of thousands of addresses is processed in well under a second.
Can I keep only one company's domain?
Yes, two ways. Type the domain into Only these domains, or just click its chip in the strip. Subdomains are included automatically, so entering company.com also keeps mail.company.com. Skip these domains works the same way in reverse.
What is the difference between the TXT and CSV downloads?
TXT gives you the list exactly as shown in the output box, in whichever format you picked. CSV always writes a spreadsheet with three columns, email, local and domain, plus a header row, so it opens cleanly in Excel, Numbers or Google Sheets.
Does the tool check whether an address actually exists?
No, and no extractor can. It checks that an address is correctly formed and that its domain ending is real, which is a different thing from whether a mailbox is live. Confirming delivery needs a verification service that talks to the mail server.
Is my text sent to a server?
No. The scan runs in your browser with JavaScript, so the text you paste never leaves your device. That matters when the source is a client list or an internal document.
Is this tool free?
Yes, completely free with no sign-up, no cap on how much you paste and no watermark on anything you copy or download.