Skip to content
Processing locally — files never leave your device

Extract Email Addresses from Text Online Free

Scan a block of text and extract every email address. Optionally deduplicate, sort, and copy as a comma-separated list.

How to use Extract Emails

  1. Paste any text that contains email addresses — a forwarded email thread, an exported contact list, a chunk of HTML source, or a chat log.
  2. Turn on "Remove duplicates" to collapse repeated addresses to a single entry (on by default).
  3. Turn on "Lowercase" to normalise addresses, and "Sort alphabetically" to order the list — useful before pasting into a spreadsheet or CRM.
  4. Switch to "Comma-separated" if you need a single line for an email client’s To/BCC field instead of one address per line.
  5. Click Copy to grab the extracted list. The count next to the output tells you how many addresses were found. The scan runs over the text in this tab alone, so the personal data never goes anywhere.

Pulling email addresses out of messy text

Email addresses rarely arrive in a tidy column. They are buried inside forwarded threads, scattered through a web page's HTML, embedded in a JSON export, or mixed with names and phone numbers in a pasted contact dump. This tool scans whatever you paste, finds every string that looks like an address, and hands you back a clean list you can deduplicate, sort, and copy.

What counts as a valid address

An email address has three parts: a local part (before the @), the @ separator, and a domain ending in a top-level domain of two or more letters. The matcher accepts the characters that appear in virtually all real addresses — letters, digits, dots, and the symbols ._%+- in the local part — and a dotted domain such as mail.example.co.uk. That covers plus-addressing (you+tag@gmail.com) and subdomains, which many naive matchers miss.

Dedupe, lowercase, and sort — and why they matter

Real exports are full of repeats: the same person quoted three times in a thread, or listed in both a CC line and a signature. Remove duplicates collapses these to one entry. Lowercase matters because email domains are case-insensitive and most providers treat the local part that way too, so John@Example.com and john@example.com are the same mailbox — normalising them prevents accidental duplicates. Sort alphabetically makes the list easy to scan and diff against an existing contact set.

One per line or comma-separated

The default newline-separated output drops straight into a spreadsheet column or a CRM import. Flip on comma-separated output when you want a single line to paste into the To, CC, or BCC field of an email client, or into a config value that expects a comma list.

Syntax is not deliverability

Finding a well-formed address does not mean mail will reach it. The address could be a typo, a retired account, or a spam trap. Use the extracted list as a starting point and verify deliverability with a proper mail-validation service before sending anything important.

Personal data that stays put

Email addresses are regulated personal data, so the question of where they are processed is not academic. Here the harvesting regex runs against text your browser already holds; the source dump and the addresses it yields are never transmitted, which keeps you on the right side of privacy rules when the export belongs to your customers rather than to you.

Related text tools

Frequently asked questions

How accurate is the email matcher?
The pattern catches the vast majority of real-world addresses — local part, @ sign, domain, and a 2+ letter top-level domain. Rare edge cases such as quoted local parts ("john doe"@example.com) and bracketed IP-literal domains (user@[192.168.0.1]) are skipped on purpose because they are extremely uncommon and tend to create false matches.
Will it validate that the addresses actually exist?
No. The tool only checks the syntactic shape of each address. Confirming that a mailbox can actually receive mail requires DNS MX lookups and SMTP probing, which a browser cannot do. Treat the output as candidates, not verified contacts.
Why are some addresses split or cut off?
If an address is wrapped across a line break, or glued to punctuation like a trailing period inside a sentence, the matcher may stop at the boundary. Most exports are clean, but if you see truncation, remove line breaks from the source text first and re-run the extraction.
Does it pull emails out of HTML and mailto: links?
Yes. Because it scans the raw text, addresses inside HTML attributes, mailto: hyperlinks, and JSON all get matched. Paste page source directly and you will capture addresses that are not even visible on the rendered page.
How do I get a comma-separated list for the BCC field?
Turn on the "Comma-separated" toggle. The output becomes a single line of addresses joined by ", ", ready to paste into the To, CC, or BCC field of any email client.
Can I extract emails from a CSV or contact export?
Yes. Paste the whole file contents — the extractor ignores the surrounding columns and pulls only the email addresses, then deduplicates and sorts them if you enable those options.
Is this meant for scraping or spam?
It works on any text you paste, but it is intended for legitimate tasks: cleaning your own contact exports, de-duplicating a mailing list you manage, or pulling addresses from documents you are authorised to process. Please respect privacy laws and only use it on data you own or have permission to handle.
Is my text uploaded anywhere?
No. The pattern match that finds the addresses is executed by your browser against text it already holds, so neither the source nor the harvested addresses ever cross the network — which matters a great deal when other people's contact details are involved.

More tools you might find useful in the same flow.

Built by Muhammad Tahir · About