Email Extractor
Paste any text and instantly extract all valid email addresses — with deduplication.
About this tool
Extract every email address from a block of text in seconds. Paste HTML, a document, log output, or any raw text and the tool finds all valid email addresses using a robust regex pattern. Enable deduplication to get a clean unique list. Copy all results with one click.
How to use
- 1 Paste your text into the input area.
- 2 Check 'Deduplicate' to remove duplicate addresses.
- 3 Click 'Extract Emails' to find all addresses.
- 4 Review the results and click 'Copy All' to copy them.
What an email extractor actually does
An email extractor scans a block of text and pulls out every string that looks like an email address. The hard part is not finding the addresses — it is deciding what counts as one. People paste email addresses surrounded by punctuation, line breaks, HTML tags, names, and stray symbols, so the tool needs a precise rule for where an address starts and stops. That rule is a regular expression (regex): a pattern that matches the shape of an email rather than any specific address.
The pattern this tool uses
The matcher is the regex [a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}, applied globally so it finds every match in the text, not just the first. Read left to right it says:
[a-zA-Z0-9._%+\-]+— the local part (before the@): one or more letters, digits, dots, underscores, percent signs, plus signs, or hyphens. This is what allows tagged addresses likejane+newsletter@example.comto match.@— the literal at-sign that every address must contain exactly once in this position.[a-zA-Z0-9.\-]+— the domain name: letters, digits, dots, and hyphens, covering subdomains such asmail.example.co.\.[a-zA-Z]{2,}— a dot followed by a top-level domain of at least two letters (com,org,io,museum).
The {2,} at the end is why a bare user@localhost with no dotted TLD is ignored, and why the trailing period in a sentence like email me at bob@site.com. is correctly left out of the match.
A worked example
Paste this messy snippet:
Contact: Jane Doe <jane@acme.io>, or sales@ACME.io. Old: jane@acme.io (do not use)
The extractor walks the string and returns three raw matches: jane@acme.io, sales@ACME.io, and jane@acme.io again. With the Deduplicate option on (the default), it compares addresses case-insensitively, so sales@ACME.io and jane@acme.io are both kept as distinct, but the second jane@acme.io is dropped as a repeat. The badge shows "2 found." Note that deduplication compares in lower case but preserves the original casing of the first occurrence in the output.
Why deduplication is case-insensitive
The domain part of an email is always case-insensitive, and in practice nearly every mail provider treats the local part that way too — Jane@Example.com and jane@example.com almost always reach the same inbox. Treating them as duplicates therefore prevents the same person appearing twice in your list. The tool keeps whichever spelling appeared first, so you do not lose the original formatting.
Genuine use cases
- Cleaning up a pasted list. Turn a comma-and-newline jumble copied from a spreadsheet or document into one clean address per line.
- Harvesting from email headers. Pull every recipient out of a forwarded message's To/Cc block.
- Extracting from logs or exports. Find addresses buried in JSON, CSV rows, or server logs without writing a script.
- Quick deduplication. Spot how many unique contacts hide inside a long thread with lots of repeats.
Limits and pitfalls to know
- It matches shape, not validity. A string can look like an email and still bounce. The tool confirms the format is plausible, not that the mailbox exists — only sending mail or an SMTP check proves that.
- Obfuscated addresses are missed. Text like
jane [at] acme [dot] iois written specifically to defeat pattern matching, so it will not be detected. - Unusual but legal addresses may slip through edge cases. The official email syntax allows quoted local parts and characters this practical regex omits; such addresses are rare in real text and excluding them avoids far more false positives.
- Trailing punctuation is handled, leading is not always. A period right after the TLD is excluded by the pattern, but exotic surrounding characters can occasionally clip a match.
Responsible use and privacy
Extracting addresses from text you own — your own inbox, your own exports, a list someone gave you — is routine data hygiene. Scraping addresses to send unsolicited bulk mail is a different matter: it is what anti-spam laws such as CAN-SPAM and the GDPR exist to restrain, and most jurisdictions require consent or a lawful basis before you email someone. Use the output to organise contacts you already have a relationship with, not to build cold-outreach lists.
The extraction runs entirely in your browser. The text you paste is never uploaded — the regex executes on your device, so even sensitive recipient lists stay local and the tool works with no network connection.
Frequently Asked Questions
Percent-encode or decode URLs and query parameters — full and component modes.
Encode special characters to HTML entities and decode entities back to plain text — supports named and numeric entities.
Minify HTML, CSS, and JavaScript to reduce file size — runs entirely in your browser.