Finding email addresses in text, and using the list responsibly
How the email extractor finds every address in text, headers, CSV and HTML, removes duplicates regardless of capitals, skips look-alikes, and what the law expects before mailing a list.
Last reviewed · 1,221 words
In short
- Addresses are found anywhere in pasted text, email headers, mailto links, HTML and CSV, including addresses with dots, plus signs and Indian domains like .co.in.
- Duplicates are removed ignoring capitals. The sample on the page has 7 addresses of which 6 are different.
- Image names like logo@2x.png look like addresses and are skipped.
- Mail only people who agreed to hear from you. India's Digital Personal Data Protection Act, 2023 is built on consent, and providers block senders whose mail is unwanted.
- Nothing is uploaded. The text is searched in this browser tab.
A spreadsheet of registrations, a long email thread, a page of contact details, an exported list from a form: when you need the email addresses out of it, copying them one by one is slow and error-prone. The email extractor reads the whole text and lists every address, once each, ready to copy or save. Here is how it decides what is an address, and what to keep in mind before using the list.
How to extract email addresses
- Paste the text into the box: plain text, email headers, a copied spreadsheet column, a CSV or HTML.
- Read the list on the right, one address per line, in the order found, with duplicates removed.
- Copy the list, or download it as .txt or as .csv for Excel or Google Sheets.
Options: keep every occurrence, sort A to Z, or make every address lower case. The five most common domains in the list are shown under it.
What counts as an email address
An address has three parts: a name, the @ sign, and a domain with at least one dot and a final part of two or more letters, like asha.sharma@example.co.in. The extractor accepts the characters people actually use:
- letters and digits in any script, so addresses with Indian-language domains are found;
- dots, hyphens and underscores, as in ravi.verma or first_last;
- plus signs, as in rahul.k+invoices@gmail.com, which Gmail and others use for filtering;
- domains with several parts, like example.co.in or mail.company.com.
The email standard allows far stranger addresses, with quotes and spaces inside them, but almost no real mailbox uses them, and matching them would catch broken text far more often than real addresses.
Addresses inside angle brackets, mailto: links and HTML are found the same way: "Asha Sharma asha.sharma@example.co.in" gives the address without the name, and "mailto:hr@firm.com" gives hr@firm.com.
A full stop straight after an address ends the sentence and is trimmed, so "Reply to accounts@calci.in." gives accounts@calci.in.
Look-alikes that are skipped
Websites name high-resolution images like logo@2x.png, which has the same shape as an address. Anything ending in .png, .jpg, .jpeg, .gif, .webp, .svg or .avif is skipped for that reason.
Addresses longer than the limits in the mail standard, 64 characters before the @ and 254 in all, are skipped as well; they cannot be delivered to.
Reading the example
The page opens with an email header and a small CSV. The extractor finds 7 addresses, of which 6 are different, because accounts@calci.in appears twice:
| Address | Domain |
|---|---|
| asha.sharma@example.co.in | example.co.in |
| accounts@calci.in | calci.in |
| HR@Example.co.in | example.co.in |
| rahul.k+invoices@gmail.com | gmail.com |
| ravi.verma@company.com | company.com |
| MEENA@company.com | company.com |
logo@2x.png in the same text is skipped. The most common domains are example.co.in and company.com, two addresses each.
Duplicates and capital letters
Remove duplicate addresses is on by default, and it ignores capitals, because in practice mail providers deliver Asha@Example.com and asha@example.com to the same mailbox. The first occurrence is kept, as written.
Tick Make every address lower case for a tidy list, which most mailing tools prefer and which makes later de-duplication in a spreadsheet reliable.
From Excel, Google Sheets or a CSV
Select the column, or the whole sheet, copy and paste it here. Each row's addresses are found wherever they sit, even when a cell holds two addresses separated by a semicolon. To get the clean list back into a spreadsheet, use Download .csv: it saves a single Email column with a header row, quoted where a spreadsheet needs quotes.
Using an extracted list responsibly
An address in a document is not permission to email it.
Consent comes first. India's Digital Personal Data Protection Act, 2023 treats an email address as personal data and builds on the person's consent for its use. Mailing people who did not ask to hear from you risks complaints under it.
Providers block unwanted mail. Gmail's sender guidelines require bulk senders to authenticate their domain, offer one-click unsubscribe and keep spam complaints low. A list of scraped addresses produces complaints quickly, and then even your wanted mail goes to spam.
Good uses for the extractor are the everyday ones: pulling the addresses of people who registered for your event, collecting the contacts in a thread you were part of, cleaning up an exported customer list before importing it into a mailing tool where people already opted in.
Common uses
- Event and course registrations. Paste the responses exported from a form to get the address list for reminders and certificates.
- Contacts from an email thread. Copy the headers of a long thread with many people in Cc, and every participant's address is listed once.
- Cleaning an exported customer list before importing it into a mailing tool: one address per line, duplicates gone, everything lower case.
- Checking a document before sharing it. Paste a report or a page to see whether it contains any personal email addresses you would rather remove.
Cleaning the list before use
Extraction finds addresses that are written correctly; it cannot tell whether a mailbox exists. Before mailing a list, a few checks save bounces:
Look for typing slips in the domain. gmial.com, gmail.co and yahoo.co are common mistakes that pass as valid addresses. The most-common-domains list under the result makes them easy to spot, because a slip shows up as a domain with a count of one beside a popular one.
Remove role addresses you did not mean to include, such as noreply@, postmaster@ or abuse@, which turn up in email headers.
Remove your own addresses and your colleagues', which every thread contains.
Addresses written to avoid scrapers
Some websites write addresses as "asha [at] example [dot] com" so that automated scrapers do not collect them. This extractor does not rebuild those on purpose: the person chose not to have the address picked up automatically. If you have a genuine reason to contact them, type the address yourself.
Extracting from a web page or PDF
Copy the page's text, or its HTML source with Ctrl + U in a desktop browser, and paste it here; addresses in mailto: links are found in the source even when the page shows only a name. For a PDF, open it, select all the text and copy it. A scanned PDF is a picture of text, so there is nothing to copy until it has been run through text recognition.
How many addresses it can handle
The extractor reads the whole text at once in your browser, so lists of thousands of addresses are fine; a pasted sheet of 10,000 rows is searched in well under a second on a laptop. The limit is what your browser can paste into a box comfortably. For very large exports, paste them in parts and combine the downloaded lists, then paste the combined list back in once to remove duplicates across the parts.
What this tool assumes
- An address is a name of letters, digits, dots, underscores, percent, plus and hyphen signs, an @, and a domain with at least one dot and a final part of two or more letters.
- A trailing full stop is trimmed; names ending in common image extensions are skipped; addresses over 64 characters before the @ or 254 in all are skipped.
- Duplicates are compared ignoring capitals; the first occurrence is kept as written unless lower case is chosen.
- The text stays in your browser tab and is not uploaded or saved.