Extract email addresses

Pulls every email address out of a block of text and removes duplicates.

Paste any text and this tool will extract email addresses from it — one per line, duplicates already removed. It works on copied web pages, chat exports, log files, spreadsheets pasted as text and anything else where addresses are buried in surrounding words.

Try:
0Words
0Characters
0No spaces
0Sentences
0Paragraphs
0Lines
0Pages
0Reading
0Speaking

Runs entirely in your browser. Your text is never uploaded — open DevTools, Network tab, and you will see zero requests while you use this tool.

How to use it

  1. Paste the text containing the addresses into the box.
  2. Press Extract emails — the box is replaced by the list.
  3. Optionally press Sort A→Z to order it.
  4. Press Copy, or Download .txt to save the list.

What this tool does

The text is scanned for anything shaped like an address: one or more letters, digits, dots, plus signs or hyphens, then an @, then a domain with at least one dot. Every match is collected, duplicates are dropped automatically, and the results are written back into the box one per line.

Duplicates are removed on every run. That is deliberate — a page copied from a website usually repeats the same contact address in the header, the footer and three places in between, and a list with the same address eleven times is useless.

Some edge cases worth knowing. Addresses with a plus tag such as name+news@example.com are matched in full. Subdomains work: sales@mail.example.co.uk comes through complete. Addresses written to defeat scrapers — name [at] example [dot] com — are not matched, because they are not addresses. A trailing full stop attached to the end of a sentence can occasionally be absorbed into the match, so glance at the last characters of the list before importing anywhere. Matching is case sensitive in output, meaning Info@ and info@ are kept as separate lines; the mailbox part of an address technically can be case sensitive, so nothing is silently merged.

Examples

Input:

Contact Anna (anna@example.com) or the desk at hello@example.com. Press: press@example.com, or hello@example.com again for anything else.

Output:

Three addresses out of four mentions — hello@example.com appeared twice and is listed once.

A messier case, straight from a pasted signature block:

In the textExtracted
<a href="mailto:jo@example.org">Jo</a>jo@example.org
billing+invoices@example.orgbilling+invoices@example.org
support at example dot orgnot matched

Note that mailto: links work fine — the prefix is not part of the match, so raw HTML can be pasted straight in.

When you need it

Use the extracted list responsibly: collecting addresses from a page you do not own in order to email people who never asked is spam, and in most jurisdictions it is also illegal.

This page replaces the older combined extractor at /tools/extract-emails-urls/. If you need links instead of addresses, the URL extractor is listed under Related tools below.

Doing it without this tool

Notepad++: Search, Find in Files or Mark, tick Regular expression, and use [\w.+-]+@[\w-]+\.[\w.-]+. Then Search, Bookmark, Copy Bookmarked Lines — though that copies whole lines, not just the addresses.

Excel: there is no clean built-in way. The usual route is Text to Columns on spaces, then filter with =IF(ISNUMBER(SEARCH("@",A1)),A1,""), then remove blanks and use Data, Remove Duplicates.

Word: Find and Replace with Use wildcards on, searching [A-z0-9.\-_]{1,}\@[A-z0-9.\-]{1,}. Word wildcards are their own dialect and this breaks easily.

Command line: grep -Eio "[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}" file.txt | sort -u. Fast and exact, if you have a terminal.

Google Sheets: =REGEXEXTRACT(A1,"[\w.+-]+@[\w-]+\.[\w.-]+") pulls the first address from each cell, one cell at a time.

Privacy: your text never leaves your browser

This is the point that matters most on this particular page. Email addresses are personal data. Pasting a list of them into a website that processes them server-side means handing real people’s contact details to a third party you know nothing about — and if that list came from your employer or a client, it may also be a reportable data breach.

Nothing of the sort happens here. The matching is a regular expression executed by JavaScript inside your tab. No request is made when you press the button, no copy of the text or of the extracted list is kept, and the page continues to work with the network disconnected. Close the tab and every trace is gone.

Related tools

Extract betweenPulls out everything between a start and end marker — every occurrence, not…Extract phone numbersFinds phone numbers in any text and lists them, one per line.Extract numbersPulls every number out of a block of text, and can total them for you.Extract URLsPulls every http and https link out of text or HTML and removes duplicates.Upside down textFlip a line so it reads the other way up. Copy and paste anywhere.PDF text breaksThe file has no paragraphs to give you. Here is what it does have, and how to…Username generatorReadable names built from real words. No xX_ padding, no forced digits.

See all text tools →

Frequently asked questions

Are duplicate addresses removed?

Yes, automatically. Each address appears once in the result even if the source text mentions it a dozen times.

Does it find addresses written as "name at example dot com"?

No. Those are not valid addresses, and guessing at obfuscated forms would produce far more wrong results than right ones.

Does it work on pasted HTML?

Yes. Addresses inside mailto: links and attributes are matched, so you can paste raw page source.

Are addresses with a plus sign supported?

Yes. Tagged addresses like name+news@example.com are matched in full, including the tag.

Is there a limit on how much text I can paste?

No practical limit. Matching is fast enough for very large documents because it runs locally.

Can I sort the results?

Yes, press Sort A→Z after extracting to get an alphabetical list, which also makes near-duplicates easy to spot.

Are the addresses sent to a server?

No. Everything happens in your browser, which matters because email addresses are personal data.