Extract Emails from Text

Paste a dump of messages, a CSV column, a forum thread or a chunk of HTML, and the extractor pulls every email address it can recognize. Output is deduplicated and ready to drop into your CRM import or a bounce-check tool. Matching covers the real-world subset of RFC 5322 (plus-addressing, dots in the local part, hyphens in the domain) without the false positives that plain a@b regexes produce.

How to extract emails from text

  1. 1

    Paste your source

    Drop in free text, logs, an HTML page or an exported contact list: anything that contains `local@domain.tld` patterns.

  2. 2

    Run the extractor

    The regex scans for complete addresses and ignores the punctuation around them.

  3. 3

    Review the count

    You get the number of unique addresses found plus the full list.

  4. 4

    Copy the list

    Copy to clipboard as a newline-separated list, or paste directly into a spreadsheet column.

What counts as a valid email

The extractor follows the practical email shape rather than the full RFC 5322 grammar, because the full grammar allows addresses that no modern MTA will accept (quoted locals with spaces, comments in parentheses). Here is what the matcher covers:

Pattern element Accepted Rejected
Local part a-z 0-9 . _ % + - spaces, quoted strings, angle brackets
Domain a-z 0-9 . - trailing dot, underscore in label
TLD 2+ ASCII letters numeric-only TLD

Common dirty inputs it handles

  • Addresses followed by . or , in sentences, the punctuation is not captured.
  • Emails inside mailto: hrefs, the scheme is stripped automatically.
  • HTML entities like @ are not decoded, so an address written as info@example.com does not match.
  • Addresses wrapped in <angle brackets> from email headers.

What to do with the output

  • Deliverability check. Run the list through a bounce-check service before importing, harvested lists often have ~10% dead addresses.
  • Consent. Just because an address appears in a document does not mean the person consented to being contacted. Check GDPR or local law before outreach.
  • Deduplicate on the local part too. john@gmail.com and j.ohn@gmail.com reach the same mailbox at Gmail; normalize dots if you need truly unique identities.

Frequently Asked Questions

No. The extractor targets real, parseable addresses. Unscramble obfuscated forms first, or pre-process the text to replace [at] with @ and [dot] with ..

No. Matching only reads basic Latin letters, so müller@straße.de is not detected. Convert the address to its ASCII punycode form, for example user@xn--strae-oqa.de, before running the extractor.

No, there is no option to keep duplicates. The output is deduplicated and keeps the order of the first occurrence. If you need to count mentions, count them in the source text instead.

No. The text is processed for your request and is not stored in a database, not logged and not added to the page link.

Related Tools

Tool available in other languages